



@LinguaFont


?Language Fonts

?and Design Software


Raymond Hickey
English Linguistics
Essen University


Contents

1.	The aim of LinguaFont											4

2.		Programme summary											5
	2.1.	Printer control											5
	2.2.	Video control											5
	2.3.	Keyboard control										5
	2.4.	Miscellaneous											5

I	Description of Programmes										6

0.	Preamble														6
	0.1.	Installing LinguaFont									6
	0.2.	Remarks on command structure							6
		0.2.1.	Online help											6
	0.3.	Typeface conventions									6

1.	LaserEd															7
	1.0.	Main menu												7
		1.0.1.	Making a DOS call									7
		1.1.1.	Create a new font									7
		1.1.2.	Process an existing font							7
			1.1.2.1.	Font parameters for character set			7
		1.1.3.	Print test table of font							7
		1.1.4.	Download a font to printer							7
	1.2.	Editing commands										7
		1.2.0.	Preamble: What is a bit map?						7
		1.2.1.	Editing Commands									7
			1.2.1.1.	Using a mouse to draw characters			7
		1.2.2.	Additional commands									8
			1.2.2.1.	File Information (Shift-F1)					8
			1.2.2.2.	Check Font Integrity (Alt-F1)				8
			1.2.2.3.	Move Character (F2)							8
			1.2.2.4.	Swivel Character (Shift-F2)					8
			1.2.2.5.	Mark Block (Ctrl-F2)						8
			1.2.2.6.	Copy From Clipboard (Alt-F2)				8
			1.2.2.7.	Character Mask (F3)							8
			1.2.2.8.	Invert Character (Shift-F3)					8
			1.2.2.9.	Mirror Image (Ctrl-F3)						8
			1.2.2.10.	View Clipboard Contents (Alt-F3)			8
			1.2.2.11.	Expand Character (F4)						8
			1.2.2.12.	Compress Character (Shift-F4)				8
			1.2.2.13.	Italicise Character (Ctrl-F4)				8
			1.2.2.14.	Shift Character Mask (Alt-F4)				8
			1.2.2.15.	Rotate Character (F5)						8
			1.2.2.16.	Set Character Baseline (Shift-F5)			8
			1.2.2.17.	View Font Settings (Ctrl-F5)				8
			1.2.2.18.	Undo Last Change (F6)						8
			1.2.2.19.	Delete Character (Shift-F6)					8
			1.2.2.20.	Character Parameters (Shift-F7)				8
			1.2.2.21.	Switch Colours (Ctrl-F7)					8
			1.2.2.22.	Copy, Move Character (F8, Shift-F8)			8
			1.2.2.23.	Zoom Character, 1 (F9) 						8
			1.2.2.24.	Zoom Character, 2 (Shift-F9)				8
			1.2.2.25.	Save font to disk (F10)						8
			1.2.2.26.	View Entire Font (Shift-F10)				8
			1.2.2.27.	Load Second Font (Alt-F10)					8
			1.2.2.28.	Move up, down and edit character (F11, F12)	8
	1.3.	Character width tables									9
	1.4.	Addressing downloaded fonts								9
	1.5.	Troubleshooting with laser printer fonts				10
		1.5.0.	General												10
		1.5.1.	Character grid parameters							10
	1.6.	The aesthetics of font design							11
	1.7.	Command activation via menu system						11
	1.8.	Command Summary											11

2.	DotEd															12
	2.0.	Main Menu												12
		2.0.1.	Making a DOS call									12
		2.1.1.	Create a new font									12
		2.1.2.	Fonts in draft mode									12
		2.1.3.	Process an existing font							12
		2.1.4.	Print test table of font							12
		2.1.5.	Download a font to printer							12
		2.1.6.	Create new font from existing one					12
		2.1.7.	Change printer configuration						12
		2.1.8.	Run printer test programme							12
	2.2.	Edit Screen												12
		2.2.1.	Editing Commands									12
			2.2.1.1.	Using a mouse to draw characters			12
		2.2.2.		Additional Commands								13
			2.2.2.1.	File Information (Shift-F1)					13
			2.2.2.2.	Move Character (F2)							13
			2.2.2.3.	Swivel Character (Shift-F2)					13
			2.2.2.4.	Mark Block (Ctrl-F2)						13
			2.2.2.5.	Copy from Clipboard (Alt-F2)				13
			2.2.2.6.	Mirror Image (F3)							13
			2.2.2.7.	Invert Character (Shift-F3)					13
			2.2.2.8.	View Clipboard Contents (Alt-F3)			13
			2.2.2.9.	Expand Character (F4)						13
			2.2.2.10.	Compress Character (Shift-F4)				13
			2.2.2.11.	Delete Character (F5)						13
			2.2.2.12.	Undo Last Change (F6)						13
			2.2.2.13.	Test Print Character (F7)					13
			2.2.2.14.	Switch Colours (Ctrl-F7)					13
			2.2.2.15.	Copy Character (F8)							13
			2.2.2.16.	Move Character (Shift-F8)					13
			2.2.2.17.	Zoom Character, 1 (F9) 						13
			2.2.2.18.	Zoom Character, 2 (Shift-F9)				13
			2.2.2.19.	Return to Main Menu (F10)					13
			2.2.2.20.	View Entire Font (Shift-F10)				13
	2.3.	Character width tables									13
	2.4.	Command Summary											14

3.	VideoEd															15
	3.0.	Introduction											15
		3.0.1.	Making a DOS call									15
	3.1.	Create a new font										15
	3.2.	Process an existing font								15
	3.3.	Convert Hercules font to EGA							15
	3.4.	Convert EGA font to Hercules							15
	3.5.	Load font file into memory								15
	3.6.	View ASCII character set								15
	3.7.	Editing Commands										15
		3.7.1.	Using a mouse to draw characters					15
		3.7.2.	Saving a font to disk								15
	3.8.	Command Summary											15

4.		Additional video programmes									16
	4.1.	LoadVid													16
	4.2.	VidPerm													17
	4.3.	InsWP													18
	4.4.	VideoSet												19

5.		SetKey														20
	5.0.		Introduction										20
	5.1.	Creating a new keyboard driver							20
	5.2.	Managing keyboard drivers								20
	5.3.	Loading a keyboard driver								20

6.	Using character sets with data processing software				21
	6.1.		Word processors										21
		6.1.0.	Download activation									21
		6.1.1.	Character translation								21
	6.2.	Database managers										21

7.	Supplementary programmes										22
		7.1.1.	LoadDot												23
		7.1.2.	LoadNec												24
		7.1.3.	LoadLas												25
		7.2.1.	NewDot												26
		7.2.2.	NewLas												27
			7.2.2.1.	Function key settings						27
		7.3.1.	TranDot												28
		7.3.2.	TranLas												29
		7.4.1.	Upgrade												30
		7.4.2.	DotScr												31
			7.4.3.1.	Italic										32
			7.4.3.2.	Bold										33
		7.4.4.	Size												34
		7.5.1.	CtrlDot												35
		7.5.2.	MemDot												36
		7.5.3.	TestDot												37
	7.6.	Intro													38
	7.7.	Desktop													39
	7.8.	BatEd													40
		7.8.1.	Desktop commands									40
		7.8.2.	Editing commands									40
			7.8.2.1.	Navigation keys								40
			7.8.2.2.	Deletion operations							40
			7.8.2.3.	Find and replace options					40
			7.8.2.4.	Miscellaneous commands						40

8.	The essentials of font management								41

II		Screens, Printers, Keyboards								42

1.		Screen fonts												42
	1.1.	Types of video cards									42
		1.1.1.	Monochrome video card								42
		1.1.2.	Hercules graphics card								42
		1.1.3.	Colour Graphics Adapter (CGA) card					42
		1.1.4.	Enhanced Graphics Adapter (EGA) card				42
		1.1.5.	Video Graphics Array (VGA) card						42
	1.2.	Replacing parts of the character set					42
	1.3.	How screen fonts work									42
	1.4.	Fonts for the Hercules Graphics Card Plus				42
	1.5.	Fonts for the EGA adapter								42
	1.6.	Fonts for the VGA adapter								42

2.		Printer Fonts												43
	2.0.	Preamble: Kinds of printers								43
		2.0.1.	Daisy wheel (solid font) printers					43
		2.0.2.	Inkjet (non-impact) printers						43
		2.0.3.	Dot matrix printers									43
		2.0.4.	Laser beam printers									43
	2.1.	Additional printer issues								43
		2.1.1.	Paper feed											43
		2.1.2.	Commands relating to paper feed						44
		2.1.3.	Printer settings									44
		2.1.4.	Types of paper feed									44
		2.1.5.	Lines to be printed per page						44
	2.2.	Internal details: What's inside your printer			45
	2.3.	Screen and printer fonts								45
		2.3.1.	Linking screen and printer							45
	2.4.	What is a download font?								45
		2.4.1.	Dealing with downloads								45
		2.4.2.	Using master style commands							45
	2.5.	Laser beam printers										45
		2.5.1.	Font descriptor										45
		2.5.2.	Character descriptor								45

3.		Keyboard drivers											46
	3.0.	Preamble: A word about keyboards						46
	3.1.	How the keyboard works									46
	3.2.	Scan codes												46
	3.3.	Shift state												46
	3.4.	Entering codes directly									46
	3.5.	Using special keyboard drivers							46

Appendix A															47

Appendix B															48

Appendix C															49

III	Glossary of Terms												50

IV	Font Documentation												51

0.	Preamble														51
	0.1.	Comments on individual fonts							51
	0.2.	List of supplied fonts									51
	0.3.	Adapting language fonts to one's own needs				51






Foreword to Version 5 of the LinguaFont suite

The various programmes of the LinguaFont suite have been greatly
expanded since the original version was published by the Norwegian
Computing Centre for the Humanities in Bergen. Especially the laser
font editor LaserEd has been transformed to handle large fonts in the
so-called protected mode which allows for greater flexibility. In
addition there are a large number of extra fonts among which are
many of interest to the linguist such as a revised and expanded
phonetic font.

As always I owe a debt of gratitude to Knut Hofland at the University
of Bergen who was ever encouraging and whose patience has led to this
new version of the software seeing the light of day at the present.


Raymond Hickey											Essen
														December 1998






Foreword

The origin of the present package lies in the attempt of the present author several
years ago to generate on the personal computer the special symbols needed for
foreign languages and for special fonts like the phonetic alphabet. As is so often
the case, an originally personal solution grew into a more general project, in this
case for linguists processing data on PCs. The goal all along has been to render the
task as easy as possible, to design software which would allow the generation of
new fonts in as short a time as possible. To achieve this, provision had to be made
for copying, altering and updating existing fonts. The character generators had to
allow for several kinds of font manipulation which would keep the amount of
manual design to a minimum.
	The result of this endeavour is the present package which allows the design
of font software to manage the screen and keyboard of your computer and of
course the generation of a whole variety of special character sets for all major
types of printer, notably for laser printers.
	Over the years, the present author has created and adapted a series of fonts
which he has either used himself or constructed to satisfy the needs of
colleagues in neighbouring language departments. All of these have been
included in the LinguaFont package so that one not only has a large suite of
software to generate fonts of one's own with but also a basic store of readymade
fonts which one can either use directly or adapt to one's needs without too
much effort. It is this fact which will hopefully convince fellow linguists of the
value of LinguaFont. Indeed the best way to start with the present product is to
take a look at some of the supplied fonts and experiment with them. From there
one can move on to more ambitious tasks such as deriving one's own fonts and
tailoring them to one needs.
	As with the Lexa package of corpus processing software, I have been
fortunate in finding a sympathetic colleague, Knut Hofland, who was willing to
publish and distribute both the documentation and the software. To him and to
the Norwegian Computing Centre for the Humanities in general I owe a debt of
gratitude for support and encouragement in seeing the LinguaFont project
through.

Raymond Hickey												Munich
															July 1993






11.	The aim of LinguaFont

The purpose of LinguaFont is to offer the user of a PC the ability to process
data containing non-standard characters for foreign languages or special
character sets such as a phonetic font.
	The package is divided into two parts. The first consists of a group of
programmes for processing, i.e. designing and editing, language fonts. The
second comprises a large collection of ready-made language fonts for laser and
dot matrix printers which linguists can use with their word processors without
any difficulty.
	The set of programmes is divided in its own right into three main sections.
The first consists of the programme, VideoEd, which is intended to facilitate the
generation of individual fonts for screen display. The exact means by which you
come to see the fonts you design with VideoEd depends on the video adapter
you have in your PC. The three types supported presently are the VGA (Video
Graphics Array) card, the EGA (Enhanced Video Adapter) card and the
Hercules Graphics Card Plus.
	The second part of the programme group is concerned with the task of
defining special symbols for the printer. The relevant programmes are as
follows: LaserEd which is intended for laser beam printers built according to the
Hewlett Packard standard (with particular regard to the management of fonts)
and DotEd, which will work with any standard 24 needle dot matrix printer.
Both provide a comfortable and easy-to-learn means of generating customised
characters.
	Thirdly, the LinguaFont set contains a customised keyboard driver generator
which enables the user to specify the keyboard layout for a previously generated
video font.
	To visualise these components satisfactorily consider the following diagramme. To
begin with the three elements of hardware which process characters are listed,
namely keyboard, screen and printer; there follows a list of the software which
controls these hardware components.

Computer Hardware Components

  Screen
Ŀ
 Ŀ                       Printer
  ...                               Ŀ
                                         ...         
                                   Ŀ
                   Ŀ                                     ÿ
            Ĵ                         
              
            
       
Ŀ
                      Ŀ    <  System Unit
               Ĵ  Ŀ
                 Ŀ 
   
                                
  Ŀ     
       ...                        Ŀ     Keyboard
                                     ^^     and Mouse
      


Computer Software Components

	Keyboard Driver (loaded on the DOS level)

			 [224]
			 [225]	Entered from keyboard
			 [231]
			. [...]

	Word Processor (data processing software)
	Printing Function (with possible character translation)

			  [224]   ->   [224]
	From	  [225]   ->   [225]	To
	Screen	  [231]   ->   [231]	Printer
			 . [...]   ->   [...]

	Printer (Output Device)

			[224][225][231]...   (Characters Printed)

It is obvious from the above that characters are entered from the keyboard,
processed by an item of application software (here: a word processor, it could
just have easily been a database management system, however) and finally
outputted on paper by a printer. Bear in mind that at each of these steps the
computer deals with ASCII numbers (indicated in the above by the numbers in
square brackets). The shapes which appear on the screen and the printer for
given ASCII numbers are not unalterable although they are fixed for the
so-called lower ASCII area, roughly the English alphabet. LinguaFont builds on
the possibility of altering the shapes associated with certain ASCII characters
(usually those in the so-called upper ASCII area, again see Appendix A and B
below) both for the screen and the printer. With the screen you change the
shape of characters you do not momentarily require (with the help of VideoEd)
into those of the characters you do need; with the printer you define (with the
help of DotEd or LaserEd) characters for your printer which correspond in
shape to the redefined symbols of the screen; these are called download
symbols, see relevant section in the present book. The screen and the printer
are linked together via the printing function of the software you are using (as
indicated in the second of the above diagrammes). This linking may
furthermore involve the changing of screen ASCII numbers to different printer
ASCII numbers via a character translation table (available in word processing
and database management software). To facilitate the entry of redefined screen
symbols you can specify your own alternative keyboard layout (with the help of
SetKey).
	A number of additional programmes in the LinguaFont set cover remaining
areas of printer control not necessarily concerned with character generation.
	To derive maximum benefit from the LinguaFont set you must be aware of
how various elements of the PC work together technically and what the
principles are which guide the generation of characters, both for the screen and
the printer. Part two of the present book gives an exhaustive account of these
principles and it is strongly recommended to the relatively uninitiated PC user
that he/she acquaint him/herself with these aspects of the workings of a
computer. By this he/she will in future be in a position to grasp at once the
operation of font generation programmes and to assess the implications for
his/her own data processing which such programmes bear.
	The necessity to have customised characters or whole fonts at one's
disposal arises quite naturally when processing foreign language material. While
there is admittedly some provision made for the processing of the major
European languages in the upper part of the IBM character set (the so-called
extended ASCII set, see Appendix A and B), one nonetheless soon discovers
that severe limits are set to the number of extra characters available. The ideal
situation is therefore one where you can generate these characters oneself. To
begin with, the user of a PC will be concerned with the ability to print out
certain customised characters. The typical user of a 24 needle printer will thus
probably, before he/she comes to read these lines, have looked at the
explanations given on character generation in BASIC in the printer's technical
reference manual and ended up in bewilderment, wondering how one gets from
these abstract demonstrations of character design to a character set
conveniently at one's disposal when using one's usual word processor. Even if
the user has essentially grasped the steps involved in this in principle, he/she
will no doubt be daunted by the immensity of the task of writing one's own fonts
in BASIC, let alone an editor with which one can display, and change them in
blown-up form on the screen.
	Fortunately it is not necessary for the user to concern him/herself with the
technicalities of character generation when using LinguaFont. Here one has a
group of tools at one's disposal which enables one to create character sets and
alter them afterwards in as user-friendly a manner as possible.
	LinguaFont is a fairly foolproof set of programmes. You can basically use
them without reading the present book. To make maximum benefit of the
programmes it is, however, necessary to be acquainted with the details of their
operation. While there is an on-line help facility in the character generation
programmes and informative screens are used, not everything can be conveyed
to the user from within the programme. Take the time then to read through the
following pages with care and try out the aspects of the programmes described
before embarking on any serious work with LinguaFont.





12.		Programme summary

22.1.	Printer control


1.	LaserEd

This is the font editor for laser printers. With it the user can design characters
for any printer compatible with the Hewlett Packard Laserjet. A unified user
interface is offered similar to that in DotEd and VideoEd.

2.	DotEd

Allows one to design one's own fonts for 24 needle dot matrix printers (e.g.
NEC, Epson, etc.). The programme provides flexibility, such as moving
characters within a font, as well as expanding, compressing, swivelling, shifting
and inverting individual characters.

3.	NewLas

Allows the user to create a new font from an existing one. A split screen is
offered and you copy symbols from a source font to a target one. You can also
increase or exchange the symbols in an existing font this way.

4.	NewDot

The version of the previous programme for dot matrix printers.

5.	TestDot

A menu-driven programme which allows the user to test a 24 needle dot matrix
printer in various typefaces and pitches. Also checks font downloading. Works
best with NEC and Epson printers; true compatibles should produce the same
results as these.

6.	CtrlDot

A printer control programme which allows one to setup a 24 needle dot matrix
printer. Typefaces and fonts can be set and reset. The programme contains an
error detection mechanism for printers.

7.	MemDot

A memory resident version of the previous programme.

8.	LoadLas

A programme to send a download font in binary form to a laser printer in the
Hewlett Packard format. Via a switch you can also print a test table of the
downloaded characters.

9.	LoadDot

The version of the previous programme for dot matrix printers.

10.	LoadNec

A version of LoadDot which is intended for use with those dot matrix printers
(such as the NEC Pinwriter series) which have a download area for 256 as
opposed to 128 characters. A switch allows one to either load a single large font
or two small ones into the printer's download memory.

11.	TranDot

Changes the characteristics of an input font to those of a different (output) font,
e.g. from Pica (10 cpi) to Elite (12 cpi).

12.	TranLas

The version of the previous programme for laser printers. Here you may graft
the font descriptor (responsible for point size, for example) from a source onto
a target file.

13.	Upgrade

Takes a dot matrix font file as source and writes it to a target laser font file of
12 point size. By editing the resulting file with LaserEd (the characters need to
be enlarged somewhat) you can quickly upgrade all your dot matrix files.

14.	Italic

Takes a laser font in upright style and italicises it. Note that the forms of letters
are not altered; this can be done by editing the particular font with LaserEd.

15.	Bold

Takes any laser font and converts it to boldface style. It works by thickening the
horizontal and vertical strokes of letters; you will need to do the fine tuning by
editing the font in question with LaserEd afterwards.

16.	Size

Allows the user to expand or compress a laser font by a certain vertical and
horizontal factor. This is just a mechanical procedure and the altered font must
be edited subsequently.


22.2.	Video control

1.	VideoEd

A menu-driven programme which allows the user to design his/her own fonts
for the PC screen. The fonts thus generated can be used with the Hercules Plus
or VGA/EGA video adapters. The command structure is very similar to that of
LaserEd and DotEd. VideoEd requires _VIDEO.EXE for its operation.

2.	LoadVid

The programme with which you load a screen font file (created with VideoEd)
into the video adapter of your system. Will work with the Hercules Plus adapter
as well as with the VGA and EGA video adapters.

3.	VidPerm

A utility with which one can load a video font into an VGA/EGA adapter. The
advantage with VidPerm is that the font will survive a video reset such as is
made by many programmes, such as commercial word processors, on starting.

4.	VideoSet

A screen test utility with which you can check up on your video hardware and
set this appropriately. Useful for recognizing genuine VGA cards and loading
fonts.

5.	InsWp

A utility for users of WordPerfect 5.x. It allows you to insert one or more fonts,
generated with VideoEd for the Hercules Plus card, into the WordPerfect font
resource file and then load your customised screen characters from within Word
Perfect.

6.	DotScr

A font conversion utility which allows you to change screen fonts into dot matrix
printer ones and vice versa. The resulting fonts can be read directly into DotEd
or VideoEd (whichever is appropriate) and polished off to give characters the
necessary proportions for the new environment.


22.3.	Keyboard control

SetKey

Allows the user to design his/her own keyboard layout. On the screen a
keyboard template is presented and the user enters the ASCII characters
he/she would like on certain keys. The keyboard driver generated by the
programme can be loaded like any other.

AKeyb

This is a keyboard driver which can be edited with the programme SetKey and
so be customised to the individual needs of users. There are five planes on
which symbols can be assigned to keys, thus allowing users to have access to the
entire ASCII set without resorting to entering symbols via the numeric pad.


22.4.	Miscellaneous

Desktop

Here the user is offered a single interface as entrance point for the entire set of
programmes in the LinguaFont package. The desktop functions as a launching
pad and is arranged in groups which correspond to typical functions realised by
the programmes of the set and which offer quick orientation for the user at the
outset.

BatEd

A combined editor and dispatcher for DOS batch files (or other files if you
like). From a desktop you can survey the batch files on your disk, edit them with
ease and execute them at will.






1I	Description of Programmes


10.	Preamble

You will have noticed that the programmes which comprise the LinguaFont set
sometimes have the element "dot" contained in them and sometimes "las". This
is deliberate so that the user can immediately recognise which programmes are
for what printer type. Those with the element "dot" are intended for 24 needle
dot matrix printers (typically NEC or Epson printers with this number of
needles) while those with "las" are to be used with laser beam printers which
conform to the Hewlett Packard Laserjet standard. Each individual user will
probably have either the one type of printer or the other; if you have both you
may change your fonts for a dot matrix printer into a laser printer format with
UpGrade and adjust their size with Size. Note that a printer does not have to be
present to use either of the printer character editors (unless, of course, you wish
to print something).
	A lot of terms are used in the present book which will be new to most
users. Please use the glossary to obtain precise definitions of these. During your
first faltering steps with LinguaFont it is advisable to consult the section in the
appendix entitled "Problems: Causes and remedies".


20.1.	Installing LinguaFont

The programmes and the auxiliary files on the LinguaFont diskettes should
be kept in a directory on your hard disk which is continuously accessible via the
DOS path variable. After all you will want to be able to call the programmes of
the LinguaFont group from anywhere on your hard disk without the necessity
of entering the directory in which they are located.
	To install the set all that is necessary is that you insert the programme
diskette into drive a: (or b:) and type install. You are then led through a series
of steps which will do the following for you:

(1)		Create a directory for the LinguaFont files on your hard disk
(2)		Copy the files on the programme diskette into this directory
(3)		Create several directories below this for files which are copied from
		the font diskette
(4)		Alter the path entry in the autoexec.bat file in the root
		directory of drive c: to allow permanent access to the LinguaFont
		programme directory just created.

When the installation procedure is completed remove the (second) distribution
diskette from drive a: and store the diskettes in a safe place. For safety's sake
you can make a copy of the LinguaFont diskettes; never, never work with the
original distribution diskettes but only with copies.


20.2.	Remarks on command structure

There are three character generators included in the LinguaFont set: LaserEd,
DotEd and VideoEd. The first two are for printers and the third is for the screen.
All of them are based on similar principles and all have a unified interface to
enable the user to orient him/herself quickly in any of them if he/she has
already acquainted him/herself with one of them. Not only is screen
presentation similar among the three character generators but the key settings
are as well.
	Of all three programmes LaserEd is the most sophisticated and has the
most command options. For this reason a system of picklists has been included
in this programme with which users can select commands in a quick and easy
fashion.


30.2.1.	Online help

Most programmes have an on-line help facility which is activated by pressing
the <F1> key. As the operation of LaserEd is somewhat more complicated
than that of the remaining programmes, all the help information could not be
fitted into one window and so online help is included in a text file which is
loaded on pressing <F1>. You can navigate in this text like any normal text file
(by using the Arrow keys or <PageUp>, <PageDown> to jump a screenful at
a time). If the help file is not accessible to the programme, an error message to
this effect is issued and processing continues normally.


20.3.	Typeface conventions

The user should note that the names of programmes are printed in italic, as in
LaserEd, for example. Furthermore, capitalisation has been used when citing
programme names to suggest how the name arose (e.g. LaserEd comes from
"Laser(Printer)" + "Ed(itor)"). The citation form of a name is to be carefully
distinguished from the letters typed in at the DOS prompt in order to start a
particular programme. To facilitate this distinction, the DOS form of a
programme name is set in Letter Gothic type, as in lasered; remember that it is
this that you type when you wish to execute a programme. There is no dash
included in the DOS form of the name and no capitalisation is used (although
the latter would be irrelevant to DOS). To remind the user of this, the call
syntax of each programme is to be found at the beginning of the description of
the particular programme.
	Note furthermore that there may be short stretches of text in Letter Gothic
type at various points in the present book. In each case they refer to entries
which the user makes from the keyboard when using LinguaFont or to DOS
names, commands or messages.
	When describing the commands of programmes, the name of keys are placed in
angular brackets, e.g. "Use <PageUp>, <PageDown> to scroll in file" means press
the key labelled PgUp or that labelled PgDn on the keyboard to scroll in a file.





11.	LaserEd

Syntax:	1)	lasered [input_file] 
		2)	lasered /file_template 

This is the character editor for Hewlett Packard-compatible laser printers. With
it you can define your own characters, store them in a disk file and load the
latter into your printer before you wish to print text in which these characters
are to appear. Remember that characters for the screen are defined with
VideoEd and that you must link screen characters with printer characters via a
printer driver in your word processor. Just how this is done is explained in detail
below.
	Like all the programmes of the LinguaFont package, LaserEd is written in
the programming language C++ in which it is often practice to pass
information which a programme may require when calling it to start with. This
is an option available in LaserEd. Technically it is termed passing command line
parameters. Consider how this works.
	You can start LaserEd by simply typing lasered at the DOS prompt (which
will look something like C> on your computer). But you may cause the
programme to automatically load a character set file by specifying this
immediately after the programme name on the command line, i.e. before
pressing <Return> to execute the programme as in:

	lasered phonetic.lpf

This assumes that there is a file phonetic.lpf in the directory in which you are in
and that (as its name implies) it is a LaserEd character set file (more on this
below). If LaserEd does not find the file (you did not type it correctly or it really
is not in the current directory) then it issues an error message and after pressing
a key you are presented with the main menu as if you had simply entered
lasered.


21.0.	Main menu

LaserEd starts by presenting you with a screen in which four options are listed.
A highlight bar rests to begin with on the second option. To activate an option,
move the bar with either the <UpArrow> or <DownArrow> key and press
<Return>. Depending on the option you choose you will be prompted by the
programme to take one or two further steps.
	The centre of the window offered at the beginning is the main menu and
should look like the following:

Ŀ
                    ---     F1 Help, F7 Exit to DOS     ---                     




͸
>  LaserEd  <ĳ 
                                                     
    Ŀ     
                                                   
         Create a new font                         
     =  Process an existing font                  
         Print test table of font                  
         Download a font to printer                
                                                   
                                                   
                                                   
         
                                                     
; 
                                                      


                         ---     D:\TC\LINGFONT     ---                         
                      Use ,  to move bar,  for option                       


When you finish editing a character set you are returned to the main menu from
which you can continue with some option or leave the programme (finish a
work session). You leave by pressing the <F7> key; an on-line text is available
by pressing the <F1> key.
	On the second last line of the screen, the current directory is displayed in
inverse and on the last a message is displayed prompting the user what to do.


31.0.1.	Making a DOS call

During a work session with LaserEd you may find at some point that you would
like to do something in DOS (like look at a directory or run a programme). This
can be achieved very simply by pressing <Ctrl-F1>. On doing this, the current
screen disappears and you are suddenly in DOS. LaserEd is now in the
background and DOS is in the foreground. You know that LaserEd is still there
as the prompt in DOS is now Type "exit" to return to LaserEd. This prompt is to
remind you that you have called DOS temporarily from within LaserEd (you
might conceivably forget this). When you enter exit and press <Return> the
screen of LaserEd is restored as if nothing had happened.


31.1.1.	Create a new font

This option exists here as it does with both DotEd and VideoEd. As with the two
other programmes, you are recommended to choose an existing font with the
following option and alter it to suit your own needs. If, however, you insist on
using this possibility then you must enter a valid DOS name for the font which is
about to be created. Furthermore you should keep to the naming conventions
used by LaserEd.
	You will have noticed that all the font files supplied with the LinguaFont
set for laser printers share the extension .LPF which stands for "laser printer
font". You should retain this extension for font files which you create yourself
with the present option. Bear in mind that the directory listing offered for the
following options will only show those files with end in .LPF. If you wish to load
a file with a different extension then you must do so via a command line
parameter as is lasered mylaser.fnt. Assuming that the user wishes to keep to
the recommended naming conventions, any file then created should look like
the following:

          Font Initial  Font Identifier
                        
                   PHON_12U.LPF
                             
                           Font Extension

Here the extension is that required. The first four letters of the name form the
font initial and are left up to the user to fill. They serve the purpose of
indicating what the contents of the font file are; in the example shown, the font
is one containing phonetic symbols. The fifth character is an underscore to set
off the beginning from the rest of the name. The last two or three characters
constitute the font identifier and indicate the point size of the font (here 12
points, i.e. 10 cpi with fixed character spacing); an optional final character
indicates whether the font is upright (U) or italic (I) in style.

Ŀ
                    ---     F1 Help, F7 Exit to DOS     ---                     




͸
>  LaserEd  <ĳ 
                                                     
    Ŀ     
                                                   
     -  Create a new font                         
         Process an existing font                  
         Print test table of font                  
         Download a font to printer                
͸                                
 Font Type:  Helvetica                                     
;                                
         
                                                     
; 
        ͸         
  => russ_10                       
;
                         ---     D:\TC\LINGFONT     ---                         
                    Toggle with <SpaceBar>, <Return> to end!                    


Once you have entered a name satisfactorily, you are prompted to choose (i) a
typeface and (ii) a point size for the new font. To begin with a toggle bar appears
on the left of the screen. By pressing <Space> you can toggle through the four
options available here.

		Font name		Pitch and spacing

	1)	Courier			(10 cpi non-proportional)
	2)	Helvetica		(varying, proportional)
	3)	Times Roman		(varying, proportional)
	4)	Letter Gothic	(12 cpi non-proportional)

While the difference between the second and third typefaces is one of
appearence (Helvetica is a non-serifed typeface as opposed to Times Roman)
the first, Courier, and the fourth, Letter Gothic, refer to fonts with fixed spacing
(i.e. results in non-proportional print). The consequence of this is that the
character width parameters for both the font and the individual characters is no
longer of any relevance. Instead, the distance travelled by the printer cursor
after printing a character is determined by the pitch of the entire font which in
its turn is dependent on the point size chosen. To allow the user to set the latter
with Helvetica and Times Roman fonts a picklist appears at this stage which
looks like the following:

Ŀ
                    ---     F1 Help, F7 Exit to DOS     ---                     




͸
>  LaserEd  <ĳ 
                                                ͸
    Ŀ  6 Point   
                                                7 Point   
     ->  Create a new font                      8 Point   
         Process an existing font               9 Point   
         Print test table of font              10 Point   
         Download a font to printer            11 Point   
͸                            12 Point   
 Font Type:  Helvetica                                 14 Point   
;                            18 Point   
    ; 
                                                              
; 
        ͸         
  => russ_10                       
;
                         ---     D:\TC\LINGFONT     ---                         
                        Choose a point size and press                         


As you can see from this list it is possible to create fonts with LaserEd which
range from 6 point (condensed print) to 18 point (headline print). Choose the
point size which matches the size you indicated with the font size identifier in
the file name. Remember, however, that the size specified here is that which is
entered into the font descriptor at the beginning of the new file and not what is
contained in the name of the file.
	The font parameters window appears (see below) and by pressing any key
you can continue. You are now presented with an empty screen matrix in which
you may draw your first character or move to another ASCII number to design
the first character of the newly created font. From here on processing is the
same as with the following option, for details of which see below. By default
LaserEd starts at ASCII $33 which is the first character after space in the ASCII
table. You can of course define characters in a new font which are numerically
lower than this but it is not recommended as download characters below $32
are used as printer control codes and may not always be interpreted as
characters but rather as printer commands not to mention the fact that some
software may not send characters under $32 to the printer in the first place.


31.1.2.	Process an existing font

On pressing <Return> here you are presented with a directory listing of all
those files in the current directory which share the extension .LPF. The file
lister which is activated at this stage has three important function key settings
which will help you to access just the files you want. These options are indicated
on the top line of the screen when the lister is active.

F4 Drive. Allows you to choose a new drive from the list of logical drives on
your computer system.

Ŀ
                F4=Drive   Shift-F4=File Template   F8=Directory                




͸
>  LaserEd  <ĳ 
                                                     
   ͵ FileName Ext.   Size    Date    Time  ͸     
      ARABIC_1.LPF   10008  02/05/93  21:10         
      ARABIC_2.LPF    8443  02/05/93  21:16        
      BALKAN  .LPF    3178  02/01/93  09:43        
      BALTIC  .LPF    2497  02/01/93  09:42        
͸
                                                           
   A: B: C: D: E: F:                                       
                                                           
 Select drive with -,- ; 
                                                            
; 
                                                      


                     ---     D:\TC\LINGFONT\LASER     ---                       
                       Move bar with ,,  for option                         


Sh-F4 File template. Permits the specification of a new file template. After you
do this the file listing is refreshed to show just those files which match the
template you entered. Note that if no files match then nothing is displayed.
Revert the file template to an earlier value or enter a new one by pressing
<Shift-F4> again.

Ŀ
                F4=Drive   Shift-F4=File Template   F8=Directory                




͸
>  LaserEd  <ĳ 
                                                     
   ͵ FileName Ext.   Size    Date    Time  ͸     
      ARABIC_1.LPF   10008  02/05/93  21:10         
      ARABIC_2.LPF    8443  02/05/93  21:16        
      BALKAN  .LPF    3178  02/01/93  09:43        
      BALTIC  .LPF    2497  02/01/93  09:42        
      CLASS_GR.LPF   25069  02/01/93  23:52        
      CZECH   .LPF    4460  02/01/93  09:43        
      EĿ       
      H Enter File Template, Esc=Default         
    ;     
                                                     
; 
        ͸         
  = *.LPF                          
; 
                      ---     D:\TC\LINGFONT\LASER     ---                      
                        Move bar with ,,  for option                        


F8 Directory. The directory from which the file listing is gained is that from
which you start LaserEd.

Ŀ
 Directories on drive D:\  Number:  71                      <Shift-Tab>  Menus  
                                                                               
                                               ͻ  
              TEXT_ED                     AKEYB   .C    DESK_CON.H     
              TE_SMALL                    AKEYB   .DOC  DESK_STR.H     
              UPDATE                      AKEYB   .EXE  DOTED   .C     
           STATPACK                        AKEYS   .C    DOTSCR  .C     
               DATA                        ASCII   .C    DT      .BAT   
               DBTXT                       ASCII   .TBL  EGA_VGA .ASM   
               SMALL                       BATED   .C    EGA_VGA .OBJ   
        TC                                  BAUM          ERRORS         
  =        AFONTS                          BIG     .VGA  FONTSOFT.BAT   
               BOOK                        BOLD    .C    FORMAT  .HP    
                  OLD_LPF                 CC      .BAT  FS_D    .BAT   
               DOT                         CL      .BAT  FS_INS  .C     
               DRIVERS                     CS      .BAT  GEN_HERC.C     
                  WORD                    CT      .BAT  GRAPHICS.LIB   
                  WPERF                   CTRLDOT .C    HERC_CGA.C     
               LASER                       DEMO    .FNT  IBM     .VGA   
                  COURIER                 DESKTOP .C    INSWP   .C     
                  GOTHIC                  DESKTOP .HLP  INTRO   .C     
                  HELV                    DESKTOP .IND  ITALIC  .C     
                  ID_NOS                 [Tab = Tree - Files]ͼ  
                                                                              
 Full path: D:\SRC\TC\AFONTS [Current Dir.]                                     


You may well wish to change directory to access different files. This is realised
quite easily by pressing <F8>. The screen changes and the programme
8d.exe is called with which you can change directory by moving a highlight
bar in a tree and pressing <Return>.
	Note. The various options of the programme _dirs.exe are shown in the
picklists which you can activate via <Shift-Tab>. This programme must be
accessible via the DOS path for the current option to work.
	Once you have chosen a character set file to edit by moving the highlight
bar and pressing <Return> again, LaserEd reads in the file chosen (this is
indicated by a counter at the end of the screen) and a window then appears
which displays the parameters for the entire character set.

Ŀ 
                    ---     F1 Help, F7 Exit to DOS     ---                     


͸
                                                                  
                Font Parameters for Character Set                 
                                                                  
                           PHON_12U.LPF                           
                                                                  
   Pitch                               10                         
   Cell Height                         63                         
   Cell Width                          52                         
   Baseline Distance                   44                         
   Stroke Weight                       0                          
   Font Typeface                       8                          
   Upright(0)/Italic(1)                0                          
   Fixed(0)/Proportional(1)            1                          
   Portrait(0)/Landscape(1)            0                          
   Character Symbol Set                1                          
                                                                  
       Edit: F5; Toggle limiting: F10, otherwise any key...       
                                                                  
;
                        ---     D:\TC\LINGFONT     ---                          
                      Use ,  to move bar,  for option                       


For any laser printer font file a set of parameters exist which apply to the
character set as a whole (these are discussed in detail in the second section of
the present book). This set forms what is known technically as the font
descriptor which is a series of bytes at the beginning of a download font file for
laser printers (in the Hewlett Packard format) which specifies some
characteristics which apply to the font as a whole. At this point in LaserEd you
are given the opportunity of changing these parameters. Be warned, however:
unless you know what you are doing, do not alter the parameters for an existing
font. The edit option here is intended for users when they are au fait with
download font file editing and consciously wish to change a value to attain some
effect or other.
	If you press <F5> as hinted at in the bottom of the window, you may edit
the font descriptors values. Note that the prompt line now changes to the
following:

		Edit: F5; Toggle limiting: F10, otherwise any key...

A word of explanation is required here. You can make changes to the font
parameters by pressing <F5>. Furthermore you can remove the automatically
imposed limits on bit map size which apply to the subsequent editing of the
current font by pressing <F10>. The limiting enforced applies to the parameters
Cell Height and Cell Width: when now editing characters from the current font
you can only set (and delete) blocks within the limits set by these two
parameters. You will notice that the maximum size of the bit map matrix (see
below) is 80 x 80 dots. With enforced limiting, the size is Cell Width x Cell
Height. The cursor in the bit map matrix will now refuse to move further right
than the column which corresponds to Cell Width and further down than the row
which corresponds to Cell Height. The advantage to this limiting is that the
user cannot inadvertently create a character which is greater than the output
size of the font would lead one to expect. Only disable bit map size limiting if
you are aware that characters you create (or edit) may then be numerically out
of the range of the font as specified in the font descriptor (see printout of screen
"Font Parameters for Character Set" above). There follows now a brief
discussion of all the parameters of a font file descriptor as listed in the relevant
window in LaserEd.
	Note. You can check on whether parameters are out of range or not by
pressing <Alt-F1> Check Font Integrity (see description below).


41.1.2.1.	Font parameters for character set

Pitch  This is the width of a single character from the font assuming that it is
not proportional. Note that if the font is proportional then this parameter is of
no practical relevance except that it gives the user an approximate idea of how
large the spacing is. Pitch is always counted in dots per character and characters
per inch. If you are editing (or have created) a Courier font then the pitch value
is determined by the distance covered when printing any character from the
resulting font (as spacing has a fixed value). The pitches for various fonts in dots
per character and character per inch and their correspondence to point size are
as follows:

	6 Point:	15 dots per character	20.0 characters per inch 	
	7 Point:	17 dots per character	17.6 characters per inch
	8 Point:	20 dots per character	15.0 characters per inch
	9 Point:	22 dots per character	13.6 characters per inch
	10 Point:	25 dots per character	12.0 characters per inch
	11 Point:	27 dots per character	11.1 characters per inch
	12 Point:	30 dots per character	10.0 characters per inch
	14 Point:	40 dots per character	7.5 characters per inch
	18 Point:	50 dots per character	6.0 characters per inch

The characters per inch are calculated by taking the number of dots per
character and using this to divide into 300 which is the total number of dots per
inch on a laser printer. This gives the approximate values in the right-hand
column above.
	Do not confuse pitch with point size: pitch is a unit of horizontal measure
while point size refers to the height of the letters in a font, one point being 1/72
of an inch.
	Cell Height This is the maximum height of a character cell for the whole
font. Check the cell height for the fonts supplied with LaserEd and use them as
guidelines when customizing a font or creating a new one.
	Cell Width This is the maximum width of a character cell for the entire
font. Again check the cell width for the fonts supplied with LaserEd and use
them as guidelines when customizing a font or creating a new one.
	Baseline Distance The baseline is the imaginary line on which a letter
without a so-called descender rests, e.g. "a" but not "y". By baseline distance is
meant the number of dots from the top of a cell to the baseline. Again this is a
value which refers to the entire font. Do not alter unless you really know what
you are doing.
	Stroke Weight Laser printers are distinguished, among other things, by
their ability to vary the darkness of print much more precisely than dot matrix
printers. The stroke, or relative intensity of print, normally has a value of 0, +3
is then bold and -3 is light; other values are conceivable, e.g. -1 for slightly
lighter stroke weight, 5 for very dark print, etc.  Note furthermore that with
laser printers one must distinguish between stroke weight (light, medium or
bold print) and boldface type, the latter being realised via a special font which
has thicker letter stems.
	Font Typeface This parameter refers to the overall general shape of the
letters and symbols of a font. The values correspond to common typefaces
according to the following table:

		0		Line Printer
		1		Pica
		2		Elite
		3		Courier
		4		Helvetica
		5		Times Roman
		6		Gothic
		7		Script
		8		Prestige
		9		Caslon
		10		Orator

With user-defined fonts this parameter is of no practical relevance as the shape
of the lettering is determined solely by the user. Changing this parameter will
not alter the form of your font characters either. The only exceptions to this are
Courier, Letter Gothic and Line Printer which involve fixed spacing, see
remarks on pitch above.
	Upright(0)/Italic(1) What this parameter refers to should be self-evident.
As with the previous parameter it serves a purely documentary purpose as the
user can decide what slant factor (if any) to give the characters of his/her font.
Setting this parameter to 1 will not italicise an upright font.
	Fixed(0)/Proportional(1) Practically all fonts for laser printers are
proportional with the exception of Courier, Letter Gothic and Line Printer
which are normal "typewriter"-like typefaces used for special purposes (such as
quoting DOS names or indicating keyboard entries as in the present book). The
value chosen here applies of course to the entire font.
	Portrait(0)/Landscape(1) As you know, laser printers do not come in
normal and wide versions like dot matrix printers to accomodate for sideways
printing if required. You can achieve this nonetheless as you have the option of
specifying whether printing it to be done parallel to the top edge of the sheet of
paper (the so-called portrait mode, the normal direction of printing) or parallel
to the side of the sheet of paper (the so-called landscape mode, sideways
printing).
	With this parameter you specify the direction of printing. If you specify a
font as landscape then the character width (see above) is what is normally the
height of a character and the character height is what is usually the width of a
character as indicated by the following diagramme:

		Ŀ
		                                   ۳             
		                                  ۳             
		                               ۳             
		                   ۳             
		                           
		                        
		                             
		                                  
		                                       Character
		                                           Height
		                                ۳            
		                               ۳             
		  ۳             
		  ۳             
		  ۳             
		  ۳             
		                                 ۳             
		                                   ۳             
		
		 Character Width Ĵ
		                                      
		                                       Baseline


31.1.3.	Print test table of font

Testing characters which one has defined with LaserEd can only be done by
printing an entire table. Use this option after you have finished editing a
character set to see what it looks like on paper.
	As the option of test printing a single character is not included in LaserEd
(for technical reasons, concerning the laser printer) another feature is offered,
namely that of viewing a single character in the graphics mode on screen with
the key combination <Shift-F9>, see below.


31.1.4.	Download a font to printer

This is basically the same option as the last except that the downloaded font is
not printed as well. Here you must, in contradistinction to the previous option,
specify the ID which the font file is to carry when loaded into the printer, more
on this below.


21.2.	Editing commands

After you have chosen a font (or taken the necessary steps towards creating a
new one) and either changed the font descriptor parameters or left them
unaltered you are presented with the edit screen which is functionally similar to
that in DotEd although it looks somewhat different. The first point to note is
that the bit map matrix is much larger than with DotEd. Furthermore only a
section of the matrix can be displayed on the screen at any one time as the latter
simply is not large enough (in the text mode) to show many laser printer
characters.

Ŀ
͸
  Sh-Tab
  Menus 
  F7 =  
  Quit  
 ĳ
        
        
 Row:  
        
  Col:  
        
        
        
 ĳ
        
  Char. 
       
  Ascii 
   146  
  Hex.  
   92   
        
;
   123456789 123456789 123456789 123456789 123456789 123456789 1234567          


Consider the example of a 14 point font. Here the capital letters only about two
thirds fit on the visible part of the bit map matrix (although there is no upper
and left-hand margin used for the bit map) as in the printout on the preceding
page.
	The rest of a partially displayed character can be seen when one enters the
editing mode as described below. At the present stage the user can choose to
page in the file by using <[Ctrl-]PageUp> and <[Ctrl-]PageDown>. The
number counter on the bottom right-hand side of the screen indicates the ASCII
number associated with the bit map matrix being currently displayed. Bear in
mind that you only see as much of a character as fits on the visible portion of
the bit map. In every case, however, this is enough to recognise a character. If
you wish to view it entirely you have two options. Either press <F9, SpaceBar>
to zoom the character down by a factor one. The screen changes and the
character is displayed temporarily in this format as in the following example. As
prompted, pressing any key returns you to the edit screen.

Ŀ
                                                 
                                                                  
                                                                     
                                                                      
                                                                      
                                                                       
                                                                       
                                                                     
                                                        
                                                                     
                                                             
                                                                      
                                                                       
                                                                     
                                                                     
                                                                  
                                               
                                          
                                                                                
                                                                                
                                                                                
                                                                                
 Move: [Ctrl-] PgUp, PgDn;  Exit: Space;  Outset: Escape      [Char.:    146]  


Using the key combination <Shift-F9> leads to the screen entering the
graphics mode (with the characterstic "twitching" associated with this change in
mode) and the character is displayed in a very much zoomed down format
which has the advantage that one can more readily imagine what the characters
looks like when printed.
	To see several characters at once, press the key combination <Shift-F10>.
However, as the characters of a laser printer font file are very much larger (i.e.
consist of more dots) than those for a dot matrix printer, only a maximum of 128
characters can be viewed at a time. The option works by starting at the current
character and displaying the next 128 characters from the character font as long
as the end of the font file has been not reached. This means that if you are
presently located at ASCII $240 in a font file then only a maximum of 15
characters will be displayed with the <Shift-F10> option whereas using this
combined keystroke at the beginning of a font will lead to an entire screenful
of characters being displayed (assuming the font file contains a full set of
characters).
	Another point to note in this connection is that the characters one sees may
be truncated on the left and bottom edges. This is due to the algorithm used to
display the characters which only allows a matrix of 40 x 40 to be used when
showing a font graphically (otherwise even fewer characters would be shown on
the screen). Despite this the present option still serves the purpose of allowing
the user to recognise at a glance what the next 128 characters contained in the
set are.
	The <Return> key is used to leave the scroll mode and enter the edit
mode just as with DotEd. The margins of the matrix are displayed in high video
and a cursor appears in the center of the screen which can be moved in the
expected directions with the arrow keys or <Home>, <End>, <PageUp>,
<PageDown> (see the command summary at the end of the present section for
a detailed description of cursor movements).


31.2.0.	Preamble: What is a bit map?

You can see from the above edit screen that the current character is displayed
in a matrix in the left half of the screen. This is what is called a bit map of the
character. A bit map is an area of memory which is also displayed on the screen
and which contains the pattern of a character (for a screen or printer font) in a
one to one relationship, i.e. one pixel of the character matrix corresponds to one
block character in the bit map, one free pixel dot to a dot in the bit map. For
the purpose of visual recognition a dot of the bit map is shown as a shaded
block (ASCII $178) and an empty pixel dot as a simple dot (ASCII $250 = small
period).
	The pattern in a bit map is arrived at by reading an input file (screen or
printer font file) which is a binary DOS file. The programme which generates
the bit map (within the LinguaFont set it could be LaserEd, DotEd or VideoEd)
is able to read the input file and translate the information it contains into the
correct pattern for the bit map. Intuitively you recognise the characters on the
screen as the correct forms of those in the file.
	The user of a character editor only edits the bit map. For this a series of
functions are made available to the user internally by the programme (see the
editing commands below). When the user finishes a work session the character
editor translates the current pattern of each bit map (one for each character in
a font file) back into the binary form required by the device for which the file is
intended (screen or printer). This output file is different from the input file by
the amount by which the user has altered the characters during the work
session.
	So much for the theory. In practice the user is only interested in the
commands for editing the bit map. These are now explained below.


31.2.1.	Editing Commands

Paging in a character set.  When the edit screen appears first you cannot edit a
character. Instead you can scroll in the file by using the <PageUp> and <Page
Down> keys. By default, the first character shown on entering the edit screen is
the first character of the file you have loaded (or an empty screen if you have
just created a new file). Try using the <PageUp> and <PageDown> keys. You
will notice in the bottom right of the screen that ASCII numbers are counted
upwards or downwards depending on what direction you scroll in. Furthermore,
not every ASCII value in the bottom righthand corner corresponds to a
character on the screen. For some values there is no character in the screen
matrix. This simply means that there is no character defined for that ASCII
value in the input font file.
	Note. You should not be upset if there is so much empty space in the font
file as presented within LaserEd. The empty characters are filtered out when
saving the file (the DOS binary file is quite compact).
	Editing a character To edit a character simply press <Return>. You will
notice two things at once. First of all a cursor appears in the middle of the
screen and secondly the margins of the character box are displayed in high
video so that you immediately recognise that you are in the edit mode.
	The cursor can be moved up and down with the Arrow keys or you can
jump to the edge of the matrix with <PageUp>, <PageDown>, <Home> or
<End> which move the cursor up, down, left or right respectively. The cursor
position in the matrix is the position where a block can be inserted or deleted.
	When you are finished editing the current character and wish to move to
another, press <Return> again. You will notice that the cursor disappears, and
the border of the screen matrix is no longer displayed brightly. Use <PageUp>
or <PageDown> to move to the new location and <Return> to edit this
character.
	Ins, Del Set, Delete Block. There are a variety of ways of entering or
removing blocks in the edit screen. The simplest of all is the press the <Insert>
key to insert a block at the current cursor position, and <Delete> to remove a
block. This can be used when making minor corrections to a character.
	Shift+ArrowKey Repeat Set. A far speedier way of inserting blocks is to
press the <Shift> key (left or right) and use one of the Arrow keys
simultaneously. The cursor moves in the direction of the Arrow key pressed and
keeps moving until the edge of matrix is reached.
	Ctrl+ArrowKey Repeat Delete. The corresponding means of removing
blocks is to press the <Control> key and use one of the Arrow keys.
Unfortunately due to a quirk of the operating system, it is not possible to use
the <Control> key with a vertical Arrow key. To achieve this function I have
had to use the key combinations <Ctrl-U> (with "U" for up) and <Ctrl-D>
(with "D" for down). These combinations delete a column of blocks in upward
or downward direction respectively. If a block is not present at a particular
location, the cursor continues through it and deletes the next location which is
occupied.
	Return Save Changes. When you finish editing a character and wish to
move to the next you press <Return> (cursor disappears and you can page to
another character).
	Escape Reject Changes. It you wish to abandon the changes which you
made to a character, press <Escape>. The original shape of the character is
restored and you can page to a new character.


41.2.1.1.	Using a mouse to draw characters
	
If a mouse is present in your system and if the necessary mouse driver has been
loaded beforehand, then you can move the cursor in the grid of the current
character via the mouse. The advantage of the mouse is that you can move in
any direction, and not just in straight lines at ninety degrees to each other as
with the cursor keys alone.
	Both buttons of the mouse are programmed for use in LaserEd. The left
button serves the simple function of setting a dot in the grid; the right button
removes one if the cursor is moved to a point which is already occupied by a dot.
The mouse cursor and the normal cursor are linked to allow you to switch between
keyboard and mouse at ease. Note that you can in theory move the mouse cursor
to any position on the screen but that it can only be used when within the
character grid.
	There is one exception to the last statement: if you move the mouse cursor to the
arrow at the top or the bottom of the slide bar column on the left of the screen
and press the left mouse button then the current character is shifted up or down
to render a previously hidden section of the character grid visible.




31.2.2.	Additional commands

41.2.2.1.	File Information (Shift-F1)

In order to keep you informed of what file you are editing, its name, how many
characters it has, your current directory, etc. a window appears on pressing
<Shift-F1> which displays various items of information about the status of the
font file and the environment in which the LaserEd is running. Press any key to
return to the edit screen.

Ŀ
͸
 Sh-Tab
  Menus 
  F7 =  
  Quit  
 ͸ĳ
                                                            
       File Name   RUSS_TMS.LPF                             
       Font Type   12 Point  Times Roman              Row:  
       File Size   95 Chars. [15,314 Bytes]                 
        Archived   03/15/93 ; 11:30                   Col:  
                                                            
       Current Path   D:\TC\LINGFONT\LASER                  
                                                            
         Disk Space     7,991,296                    ĳ
        Memory Left       243,216                           
                                                      Char. 
       Current Time   13:07:40                         y    
       Current Date   6/8/1993                        Ascii 
                                                       121  
  Press any Key ;  Hex.  
                                                        79   
        
;
  123456789 123456789 123456789 123456789 123456789 123456789 1234567           



41.2.2.2.	Check Font Integrity (Alt-F1)

The programme LaserEd does not as a rule check if the characters you design
conform to the type of font which you have specified for the current set. For
instance you can, if you have disabled box size limiting on entering the character
editing level, create characters which are greater that the box size which is
taken as correct going on the values for parameters in the font header (to be
seen immediately after selecting a font on the desktop). Equally you can use a
baseline distance which is greater than that specified in the font header.
	The consequences of such flouting of font specifications are not apparent in
LaserEd but are when you attempt to print characters from such a defective
font. The result is simply that any character which disagrees with font specifications
is not printed. In order to avoid the dismay of not having your characters printed,
the present option has been included in LaserEd. It functions as follows. From
the current character onwards it checks that the four essential parameters in the
font header are not flouted by any character in the font you are designing. 

		1)	Font cell width
		2)	Font cell height
		3)	Baseline distance
		4)	Font descender

Ŀ
͸
 Sh-Tab
  Menus 
  F7 =  
  Quit  
 ĳ
        
        
  Row:  
 |  1    
 | Col:  
 |  1    
  Parameters do not match font header! Ŀ       
                                                              
   Font Cell Width  :  30    This Char.:  31        ĳ
      Font Cell Height :  50    This Char.:  29               
                                                        Char. 
      Font Baseline    :  42    This Char.:  30          S    
      Font Descender   :  8     This Char.:  0          Ascii 
                                                         83   
  Edit: , Next char.: Space; Abort: Esc   Hex.  
                                                          53   
        
;
  123456789 123456789 123456789 123456789 123456789 123456789 1234567           


Should this be the case then the programme halts and displays a window with
the values for the font in general and the current character. You will
immediately notice that in at least one of these parameters, the current
character exceeds a value from the font header as in the following example
where the character is one unit too wide (31 as opposed to 30 for the font in
general). If you downloaded the font with this character and tried to print it
then nothing would appear on paper as the character definition is unacceptable
to the laser printer going on the font header specifications.


41.2.2.3.	Move Character (F2)

While function key <F8> is used to move characters to different locations within
a font file (see below), the concern here is with moving a character around within
the bit map matrix itself. Press <F2> and use one of the Arrow keys to move in
one of the four cardinal directions.
	Note. If you move a character so far to the edge that part of it disappears
off the screen then this is lost, i.e. moving the character back will not retrieve
the section moved off the edge. However, you can retrieve the entire character
(at the position it was in at the outset of the present operation) by pressing
<F6> for undo.


41.2.2.4.	Swivel Character (Shift-F2)

In many cases a new character which one requires is an old character upside
down or back to front (this is often the case with phonetic symbols, for
example). To avoid the chore of drawing a new character in its entirety, copy
the old character from its original location into the current one and use the
present function -  swivel character - to turn the character to the required
extent. Note that the character is swivelled in increments of 90 degrees.
Conclude the operation by pressing <Return>.


41.2.2.5.	Mark Block (Ctrl-F2)

You can not only move entire characters within LaserEd, you can also
operate on a section of a character. To do this you must first mark the appropriate
part of the character. Press <Ctrl-F2>; you can now block mark (shown in inverse
video) a section of the current character by using the cursor keys in combination
with the <Shift> key to move in any particular direction. The initial row and
column of the cursor after pressing <Ctrl-F2> is the starting point for the block
marking process. You can move the cursor either above or below, to the left or the
right of this initial position. When the desired amount is marked you have three
options:

1)	Press <Return> to shift the block within the current character grid
2)	Press <Ctrl-Return> to store block in the clipboard.
3)	Press <Delete> to delete marked section of the current character.

The first option allows you to shift a section of a character to a new location
(the original section is deleted at its old location). To move the marked section
use the cursor keys (without holding the <Shift> key down!) and press
<Return> to confirm the shift to the new location.
	The second option causes the marked section of the current character to be
stored in a reserved section of memory called a clipboard from where it can be
retrieved by the user later on. When you copy a section of a character to the
clipboard it is not deleted at its original position (contrast this with shifting a
section within the current character grid).
	The contents of the clipboard can be retrieved more than once if you wish.
In fact, the contents are only altered when you re-fill the clipboard with fresh
contents. The third option does not require commenting. Pressing <Escape>
aborts the present operation.


41.2.2.6.	Copy From Clipboard (Alt-F2)

Obviously you will want to retrieve the contents of the clipboard at some point
when you are processing another character. This is done with the present key combination. Bear in mind that the current cursor position in the character grid
represents the top left-hand corner for the clipboard contents which are about to
be inserted. Ensure that there is enough space between the present cursor position
and the right and bottom margins of the grid to accomodate the clipboard contents
otherwise the overspill will be lost.


41.2.2.7.	Character Mask (F3)

When creating or altering a symbol it is frequently helpful to access a further
symbol which can act as a template in designing the new one. This step is
realised in LaserEd with the present feature. On pressing <F3> you are
requested to enter the name of a symbol which is to be displayed as a mask.
Assuming that you enter the number of a symbol which is actually defined in the
present font, its shape is displayed with asterisks. This mask remains displayed
until you exit the editing mode via <Return> or <Escape>. You may
overwrite the asterisks of a character mask with the blocks used for character
design. Indeed this is the intention as one normally wishes to copy the shape of
the mask (or parts of it) into the present symbol.

Ŀ
********͸ 
******** Sh-Tab 
 ********* Menus  
 ******* F7 =   
 ********* Quit   
 *********ĳ 
 *********        
 *******        
 **** Row:   
 *****        
 ******** Col:   
 *******        
 *******        
 ********        
 ********ĳ 
 *********        
 ******** Char.  
 *********  ^     
 ********* Ascii  
 *********  94    
 ************ Hex.   
 ***************  5E    
 *******************        
***************; 
  123456789 123456789 123456789 123456789 123456789 123456789 1234567           



41.2.2.8.	Invert Character (Shift-F3)

This is a simple function which turns every filled space (block character) in the
bit map into an empty space (small full stop).


41.2.2.9.	Mirror Image (Ctrl-F3)

With the current command it is possible to duplicate a section of the current
character in the form of a mirror image. The feature works as follows. You
move the cursor to the row or column to the right of or below which you wish
the mirror image to be realised. By pressing one of the four arrow keys the
section of the present character which is located in the opposite direction to the
arrow key pressed is copied in mirror image form in the direction of the arrow.
The procedure can be illustrated neatly with the following printout which shows
on the left half a symbol drawn by the author. The cursor was then moved to the
first column after the last one on the right with dots in it; then came the
keystrokes <Ctrl-F3> and <RightArrow>. The latter arrow key caused the
portion in the left of the character box to be duplicated in mirror image form on
the right resulting in a character consisting of two symmetrical halves along a
vertical axis represented by the current cursor column.

       
       
       
         
         
         
         
         
         
         
         
         
         
         
         
    -   
         
         
         
         
         
         
         
         
       
  123456789 123456789 123456789          123456789 123456789 123456789 
       


41.2.2.10.	View Clipboard Contents (Alt-F3)

The present command permits you to take a look at what is in the clipboard at
the moment. If it is empty, an appropriate message is issued. The screen
changes are the section of the stored character is displayed.


41.2.2.11.	Expand Character (F4)

You might find when creating a new character that this is like an existing one
but slightly broader or longer. Copy the existing character into the current
matrix using <F8> and expand the character by the desired amount using the
present command. Note that the expansion consists of duplicating the current
column or row at the current cursor position and inserting it into the character.
	To duplicate a column use either the <LeftArrow> or <RightArrow>
key; to duplicate a row, use the <UpArrow> or <DownArrow> key. Conclude
the operation by pressing <Return>.


41.2.2.12.	Compress Character (Shift-F4)

This is the reverse of the above command. It removes the current column from
a character if the <LeftArrow> or <RightArrow> key is used; it removes the
current row if the <UpArrow> or <DownArrow> key is used.


41.2.2.13.	Italicise Character (Ctrl-F4)

With the LinguaFont package you can italicise an entire laser font by means of
the programme Italic. It is equally possible to italicise a single character with
the current key combination within LaserEd. Should the degree of italicisation
not be sufficient you can repeat the keystroke thus increasing the slant of the
character.

       
       
       
         
         
         
         
         
         
         
         
         
    -   
         
         
         
         
         
         
         
         
         
         
         
       
  123456789 123456789 123456789          123456789 123456789 123456789 
       


Notes 1) Some editing may be necessary after automatic italicisation as upright
letters differ from italic ones not just in the slant factor but also in their general
shape. 2) The present function is not included in DotEd. It is not necessary with
the character editor for dot matrix printers as the latter can italicise any
character by simply sending the necessary printer control sequence (ESC 4 for
"italics on" and ESC 5 for "italics off").


41.2.2.14.	Shift Character Mask (Alt-F4)

Once you have chosen a character to act as mask you can move it around the
character box with the present key combination. This is frequently necessary as
LaserEd displays a mask in the upper lefthand side of the box to begin with.
Move the mask with one of the four arrow keys and press <Return> to
terminate.


41.2.2.15.	Rotate Character (F5)

Essentially this feature converts a portrait display into a landscape display. You
may continue the rotation beyond 90 degrees, indeed any character can be
rotated full circle, i.e. 360 degrees. This feature can be useful when creating
special fonts, e.g. when generating a schwa for a phonetic font from a normal e
by rotation as in the following printout.

       
       
       
         
         
         
         
         
         
         
         
         
         
         
    -   
         
         
         
         
         
         
         
         
         
       
  123456789 123456789 123456789          123456789 123456789 123456789 
       


41.2.2.16.	Set Character Baseline (Shift-F5)

You will have noticed that characters are displayed in LaserEd pressed up
against the upper left corner of the character matrix. This is quite deliberate as
pointed out above. However, the user will be wondering how LaserEd knows
where each character is positioned vertically. This is determined by the baseline
which can be set by the user him/herself. The baseline may be altered by
pressing <Shift-F5> when editing a character. With the <UpArrow> and
<DownArrow> keys you move the baseline bar to the row in the current
character where you want it to be and press <Return>. The movable baseline
bar halts at the current row and from then on is displayed under the character
being edited.
	If you press <Shift-F7> to check on the individual character parameters
then you will notice that the top offset now has a value corresponding to the row
to which you moved the baseline bar (actually less 1 as the top offset value
starts at 0 whereas counting of rows and columns in the bit map starts at 1 to
correspond to the intuitions of non-programmer users).
	The default baseline value is the same as the height of the character (less
1). If you do not determine the baseline with <Shift-F5>, LaserEd will cause
the current character to "sit" on the baseline.

Note The baseline is drawn with the current character when you press
<Shift-F9> to view the latter in the graphics mode.


41.2.2.17.	View Font Settings (Ctrl-F5)

Displays the information from the header of the current font. You cannot change
any values here; to do this you should exit to the desktop and reload the font,
availing of the opportunity to edit the header which is offered before transferring
to the character editing level.


41.2.2.18.	Undo Last Change (F6)

Restores the character matrix before the last major change.


41.2.2.19.	Delete Character (Shift-F6)

Simplies empties the character box of any contents.


41.2.2.20.	Character Parameters (Shift-F7)

In addition to a font descriptor at the beginning of a font file in the Hewlett
Packard format there is also a character descriptor, a series of 16 bytes, at the
beginning of the definition of each character contained in the font file. This
character descriptor contains information on parameters which apply only to
the character being currently defined. Within LaserEd the user has the
possibility of viewing and possibly editing these. To do so, press <F7>; a
window opens in the middle of the screen which looks like the following.
	A total of five parameters are listed here. There is in fact a sixth,
orientation, which is included in the character descriptor. If you wish to change
the orientation of a single character, i.e. rotate it, then you should press <F5>
when editing the current character, see description of this command above.

Ŀ
͸
  Sh-Tab
  Menus 
  F7 =  
  Quit  
 ͸ĳ
                                                                        
                Parameters for Individual Character                    
                                                                   ow:  
    Left Margin                         1                               
                                                                   ol:  
                                                                        
    Character Width                     49                              
    Character Height                    35                              
    Top Offset (Baseline - 1)           34                         ĳ
    Delta-X                             204                             
                                                                   har. 
      Edit: F5; Toggle limiting: F10, otherwise any key...             
                                                                   scii 
 ;146  
  Hex.  
   92   
        
;
   123456789 123456789 123456789 123456789 123456789 123456789 123456           


You may only change the first and fourth values listed here. The remaining
three are listed for your information and are calculated by LaserEd on the basis
of the character as you define it within the bit map matrix (character box).
	Furthermore, note that the terms "offset" and "margin" are used
synonymously in the present book.
	You may view the font parameters in the edit or scroll mode by pressing
<Ctrl-F5>. This does not allow you to change any values but to check on them,
e.g. to see what the cell width and height are or what value the baseline has.
	Left Margin. You will have noted that characters from a laser printer font
file are displayed without any margins (either at the top or the left) within
LaserEd (contrast this with the situation within DotEd below). This is perfectly
normal. Any margins are calculated using information contained as values for
parameters either in the font descriptor at the beginning of the font file or here
as values within the character descriptor. The left margin for a character can be
specified at this point. Typical values for this parameter are 0 or 1, a negative
value may also be entered but be careful with this as it might lead to the left
edge of the current character overlapping with the previous character when
printed. Trial and error is the best way to find out if the spacing between
characters is to your taste.
	Right Margin. In the Hewlett Packard printer command language for laser
printers there is no parameter "right margin". Strictly speaking it is not
necessary. If every character has a left offset then there will always be space
between adjacent characters when printed. Within LaserEd a slight right margin
is provided for by duplicating the left margin and adding this to the character
width to obtain the Delta-X value for the current character.
	Character Width. Disregarding the left and right margins, one is left with
a value for the number of columns occupied by a character which actually
contain dots (blocks of video representation on the screen). This is the
character width or sometimes called "ink width" to emphasise that one is
referring to the total number columns which are partially or totally filled by
dots.
	Character Height. This is the number of rows a character is high plus one
(which is the baseline). If the character has a descender, i.e. if it extends
downwards below the baseline (as with "y", "j", etc.), then these rows are also
included in the character height value.
	Top Offset. The distance between the topmost row of a character and the
baseline (but not including the latter, compare the previous parameter in this
respect) is termed the top offset. It is used to calculate the height of a descender
as the latter is then the character height minus the top offset.
	Delta-X. This value represents the total distance travelled by the printer
cursor after it has printed a character. In practice this is the left margin, the ink
width of a character and a right margin which in LaserEd is a duplicate of the
left margin.


41.2.2.21.	Switch Colours (Ctrl-F7)
	
This command activates a toggle which moves through the seven colour options
of LaserEd. Keep pressing <Ctrl-F7> until you reach the combination you
want. The initial option has light blue lettering on a blue background with pink
for high video (i.e. the equivalent of bright lettering on a monochrome system).


41.2.2.22.	Copy, Move Character (F8, Shift-F8)

Copying and moving characters is achieved with the same combination of keys
here (<F8> and <Shift-F8> respectively) as in DotEd (see below). One
essential difference is that the laser printer editor allows you to copy characters
to a value which is determined by the video character set.
	Alt-V  Video character set. After pressing <F8> (Copy) or <Shift-F8> (Move)
you can step from character to character with <PgUp> or <PgDn>, jump to
the beginning or end of the font with <Ctrl-PgUp> or <Ctrl-PgDn> or you
can go to a character with <Alt-G>. In addition you can press <Alt-V> and
the current video set is displayed. You will notice that there is a highlight bar
which can be moved in each direction with the arrow keys. The idea here is that
you move the highlighting to the ASCII value to which you wish to copy the
current character and press <Return> or <Ctrl-Return>. Once you do this the
video character set disappears and you are left with the box of the character
whose value you just selected.
	There are two legal keystrokes for terminating the copy operation:
<Return> and <Ctrl-Return>. The former copies (or moves) the character
and leaves you at the new character. The latter copies (or moves) in the same
manner but returns you to the address of the source character.
	The advantage of this option is that it allows you to coordinate printer and
video fonts. By loading a customed video font (with LoadVideo or
VideoPermanent) before starting LaserEd you can then match the numbers of
the laser printer font with those of the video font by copying characters via
<Alt-V>.
	If you choose to load a customised font with LoadVideo then you will lose
this font if you press <Shift-F9> or <Shift-F10> within LaserEd, i.e. if you
switch to a graphics mode. This is behavaiour of LoadVideo is intentional and
not a bug. To load a customised font which will survive switching to the graphics
mode use VideoPermanent instead which as the name implies is not effected by
the action of any software.


41.2.2.23.	Zoom Character, 1 (F9) 

In order to gain a better impression of the proportions of a character an
additional option has been included here which shows the current character on
a separate screen. The character is zoomed down somewhat; each block here is
square whereas the blocks of which a character is composed in the normal bit
map are rectangular with the vertical sides longer than the horizontal ones.
Alternative keystroke: <SpaceBar>.

Ŀ
                                             
                                               
                                                           
                                                                   
                                                                   
                                                                 
                                                                   
                                                                   
                                                                 
                                                               
                                                               
                                                               
                                                               
                                                               
                                                               
                                                               
                                                     
                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 Move: [Ctrl-] PgUp, PgDn;  Exit: Space;  Outset: Escape    [Char.:  \  92 ]    



41.2.2.24.	Zoom Character, 2 (Shift-F9)

This option provides a further reduction in the size of the matrix used to display
the current character. In fact the video mode is changed to graphics (which you
notice by the twitching of the screen). The current character is now displayed on
its own in the middle of the screen in a much-reduced size. Press any key to
continue with LaserEd.
	Note When a character is zoomed down, by whatever factor, you can
navigate using the normal keys <[Ctrl-]PgUp>, <[Ctrl-]PgDn>. To exit and
remain at the new character position, press <Space> or <Return>. To return
to the outset character, press <Escape>.


41.2.2.25.	Save font to disk (F10)

With the current command it is possible to store the character set file currently
in system memory to disk. You are strongly advised to do this at periodic
intervals to ensure that should anything untoward happen you will still have an
uptodate version of the present character set on disk.
	
Ŀ
͸
 Sh-Tab
  Menus 
  F7 =  
  Quit  
 ĳ
        
        
  <F8> = Change Ŀ Row:  
                                                       
    D:\TC\LINGFONT\LASER                         Col:  
                                                       
  Directory for File         
                                                        
 ĳ
 Ŀ       
  Enter File Name, <Esc> = No Save    Char. 
    x    
                                       Ascii 
   120  
 ͸ Hex.  
   = MOD_GREK.LPF                     78   
 ;        
                                     ;
   123456789 123456789 123456789 123456789 123456789 123456789 1234567          


Notes. You can change the directory to be used to store the file in by pressing
<F8>. This command is functionally equivalent to the similar option in the file
lister of the main menu (see above for details).
	When saving a file enter the bare name. The character set file is always
saved to the current DOS directory which is indicated in the top window shown
with this command.


41.2.2.26.	View Entire Font (Shift-F10)

To see what characters are included in the entire font you do not have to page
through the whole file. Simply press <Shift-F10> and the screen changes to
display (in a graphics mode) the entire font as defined. If characters are not
defined at contiguous locations there may be blanks in the display. To return to
the edit screen press any key.

Note Do not be upset by the screen "twitching" when you press <Shift-F10> and
when you return again. This is due to the screen mode changing from text to
graphics (and back again) and is perfectly normal.


41.2.2.27.	Load Second Font (Alt-F10)

At any point when editing a font with LaserEd it is possible to import a
character from a second external font. This is realised via the present option.
What happens here is that you are requested to choose a font from a directory
listing, this then being loaded and displayed as on the following screen. You can
page in the font with the normal navigation keystrokes <[Ctrl-]PgUp> and
<[Ctrl-] PgDn>. When you have reached the character you want you can
terminate with one of four keys.

F5 Copy the character from the second font into current box, deleting any
previous contents in the process.

F6 Superimpose the character from the second font on the character from the
first font.

F7 Import the character from the second font as a character mask.

Esc Abort the operation entirely.

Note Once you have terminated the present option (irrespective of the keys
used to do this) you are asked whether the font is to be unloaded. If you wish to
import more characters then answer in the negative. Should you require the
system memory used by the second font, then unload it and the memory is
released for renewed use by LaserEd.

Ŀ
͵ F5: Copy; F6: Impose; F7: Mask ͸ 
                                  
                                   
                               
                               
                               
                                 
                                 
                                  
                                    
                                    
                                  
                                 
                               
                               
                               
                               
                               
                                    
                                  
                                         
 ĳ 
   Size: 99 Chars. [11,177 Bytes]        
-------------------  File: PHONETIC.LPF  Char.:  "  34 22  
  123456789 123456789 123456789 123456; 



41.2.2.28.	Move up, down and edit character (F11, F12)

When editing a font you may wish to move up and down and edit it as you do so,
in fact move from one character to the next and enter the edit mode
automatically. Normally this would involve pressing <Return>, <PgUp> (or
<PgDn>) and <Return> again. To reduce the number of keystrokes
necessary, the keys <F11> and <F12> realise the same steps (in either
direction) when you are already editing a character.
	Note For the <F11> and <F12> keys to respond you must use the
supplied keyboard driver AKeyb (see below) instead of the DOS keyboard.





21.3.	Character width tables

When you process a download character set which has a proportional pitch and
then save this when you finish a work session with LaserEd an additional file is
saved alongside the actual character set definition file (with the extension .dl3).
This file always has the extension .tbl; the part of the file name before the
extension is identical with the name of the font from which the table of
character widths is created. It contains the relative widths of the characters
which are contained in the proportional file you have just processed. Note that
this file is created each time you process a proportionally pitched download font
file and the previous version of the file, if there is one, is overwritten.
	The purpose of the file is to offer the user a list of character widths which
can then be entered into the character width table of the word processor from
within which he/she wishes to print a customised screen font which corresponds
to the proportionally pitched printer download font.
	The question naturally arises at this point, how does LaserEd calculate the
width of a character? Quite simply: it takes the left offset of a character (the
number of columns which the user has left free between the left edge of the
bitmap matrix and the first column occupied, wholy or partially, by blocks) adds
the so-called ink width of the character (the number of columns with blocks in
them) and duplicates the left offset to obtain a value for the right offset. The
sum of these three values, left offset, ink width and right offset (=left offset)
equals the width of the character as entered into the file of character widths.
	Care needs to be taken when defining character widths. The first point to
remember is that you do not enter the width of a download symbol at the same
ASCII value in the screen font but at the address in the screen font at which the
same symbol is to be found. Say you have defined, for the screen, an "i" without
a dot on it (as is needed for Turkish) and assigned the ASCII value $139 to it
(an "i" with a diaeresis over it in the normal IBM character set). The ASCII
address you have chosen in the printer download font file is, say, $105 (this is
the value of lowercase "i" in the lower ASCII area). The dotless "i" in the
download will be quite slender and so you must convey this to the word
processor via a character width table. The symbol which obtains the width of the
dotless "i" as specified in the character width file will be ASCII $139 (and not
ASCII $105 of the screen font as this is normal "i"). You will then, via a
character translation table, ensure that $139 on the screen is converted to $105
for printing (see 6.1.1. below).
	If you go to the trouble of entering all the relative character widths as
determined by LaserEd for a proportional font into a corresponding character
width table in your word processor, then you can obtain full right justification
even with customised printer fonts which are proportionally pitched.


21.4.	Addressing downloaded fonts

When you load a font file into a laser printer you must assign it a number
because a laser printer can accomodate a series of downloaded fonts. This
number is a value from 0 through 32767 and a maximum of 32 fonts can be
loaded into the printer at any one time (and 16 be used per page). Having
loaded a series of fonts into your printer they are then at your disposal and can
be addressed in one of two ways.
	1)  By specifying the characteristics of a font in the form of an escape
sequence as in the following example:

	ESC(8UESC(s1p10h12v0s0b5T

This escape sequence refers to a (primary) font with (i) Roman 8 symbol set
[ESC(8U], (ii) proportional spacing [ESC(s 1p], (ii) 10 characters per inch pitch
[10h], (iii) 12 point size [12v], (iv) upright style [0s], (v) medium stroke weight
[0b], (vi) Times Roman typeface [5T]. The laser printer now searches its
memory for a downloaded font which matches these characteristics. If it finds
one, this is then chosen as the active font; if not, it activates the font which
matches the specified characteristics most closely (with an order of priority
which is determined by the font parameters as they are listed from left to right).
	This method is not advisable with download fonts which contain
customised fonts. The reason why is as follows. Say you print a text with a Times
Roman 12 point font as base (this may well have to be present in the printer's
memory as a downloaded soft font as it is not necessarily included as firmware
in the printer to start with). You have in addition a user-defined font with
phonetic symbols, for argument's sake. These symbols have been defined to
look like a Times Roman font to ensure consistency of appearence between
your standard Times Roman 12 point font and your customised phonetic font.
You now load both files into the printer with different font IDs (more on this in
a moment). To activate the phonetic font you specify the font's characteristics
with a sequence like that quoted above. What happens now? The printer
searches its memory for a matching font and finds one. Which one is it? Both
the normal Times Roman font and the phonetic font have the same
characteristics (the shape of the characters is irrelevant here), so that the
printer chooses the font with the lower ID. This is problematic, however, as you
now cannot address the second font because its font characteristics are identical
with the first font with the lower font number and so you can never use it when
printing. The solution to this dilemma lies in the second method of addressing
and activating downloaded fonts.
	2) A downloaded font file can be activated by using the ID number
associated with it. This now allows you to address and activate two fonts which
may have identical font characteristics (as in the case sketched above). The
escape sequence for this is the following.

	ESC(#X    (where # stands for the ID number)

In your data processing software (e.g. word processor) you need only specify the
font ID as the escape sequence to be sent to the laser printer when you change
fonts within a text from normal to user-defined.
	You can now appreciate why it is necessary to specify a font ID with the
LoadLas programme. Furthermore you should be careful to use a number
which is not used by another font (or the font first loaded will be overwritten by
the second) and which corresponds to the font ID entered in the printer driver
of your word processor as the escape sequence to activate your user-defined
font. It would be sensible to choose a high value (like "99") for your special font;
you can then rest assured that any normal fonts loaded into the laser printer
(either by the user or via font loading software such as that which is
commercially available for laser printers) neither overwrite your font nor are in
turn overwritten.
	If you are au fait with batch files you may find them easier to use than
loading fonts separately with individual copy commands; it is certainly a more
efficient method of executing commands. A batch file can then be constructed
which contains the ID specification sequence for your customised font
immediately before the command to load the file.
	The sequence used to specify the ID number a font is to obtain in the
printer is different from that used to activate a particular font, as you might
expect.

	ESC*c#D     (where # stands for the ID number)

To achieve this do the following. Write a six byte long file with the following
contents (enter the first byte, indicated by an ASCII number, via the <Alt> key
and the numeric keypad on the right of the keyboard): "$27*c99D". Use no
spaces and no newline at the end of the sequence. Store the file as an ASCII
text (no formatting information!) with the name myfont.id. Now generate a new
text file with the following contents:

	copy myfont.id lpt1: /b
	copy phon_12u.lpf lpt1: /b

Again store this as an ASCII text file with the name loadfont.bat. Now enter
loadfont at the DOS prompt and the font ID will be loaded into the printer
followed by the download font file specified in the batch file.
	The above example is intended as an illustration. You can call the files you
generate what you like. However the batch file (the second one) must have the
extension .bat for DOS to recognise it as a batch file. The contents of the batch
file can be varied in a number of ways. It may contain the name of a different
download font file than the example quoted (phon_12u.lpf) and it might contain
several copy commands to load a whole set of files at once (say several normal
font files and one or more user-defined fonts). The end of the copy command
(lpt1: /b) is necessary to ensure that the files are copied to the printer at the
first parallel port and that DOS knows they are binary (and not text) files.
Needless to say the files referred to in the batch file must be accessible and your
printer must be on-line. When the batch file is run you will see the "data" light
on the control panel of the laser printer blinking while the downloading is
taking place.
	A last word on font IDs. If you fail to specify an ID for a download file then
it automatically obtains the identification number 0. This means it will overwrite
any font with this number. If you now download another font without an ID it
overwrites the first one and so on for any fonts without IDs.
	Note For more technical details concerning font addressing via escape
sequences which describe font characteristics, consult the technical reference
manual of your laser printer.




21.5.	Troubleshooting with laser printer fonts

31.5.0.	General

As laser printers are more complicated than dot matrix printers the likelihood
that a font you design does not work as you intended is obviously greater. The
most disconcerting thing with a laser printer is to discover that it does not print
your font at all although you have loaded it correctly into the printer with
LoadLas (i.e. the printer did not "hang" on loading the font).
	The reaction of a laser printer to an incorrect command or a font in an
incorrect format is simply to ignore it. This means that with a font you design
and then load, a series of blanks appear where you expect your customised
symbols. There are basically two possible causes of this:

	Font is (i) incorrectly defined or (ii) incorrectly activated

(i) can arise from misuse of options in LaserEd. When you load a supplied font
(or create one of your own for that matter), LaserEd assumes a set of default
values for 8 essential parameters concerning the whole font (this is part of the
font descriptor, see above). These are the following:

		1)	Pitch
		2)	Spacing (fixed or proportional)
		2)	Cell Height
		3)	Cell Width
		4)	Baseline
		5)	Symbol set
		6)	Typeface (Times Roman, Helvetica, Courier)
		7)	Style (upright or Italic)
		8)	Stroke weight

You are strongly advised not to change these parameters unless you really know
what you are doing. Altering these values can lead to incorrect information
being stored in the font descriptor (header of the font). When you later try to
activate a particular font from within your software the laser printer checks to
see if there is a match between the escape sequence (printer command) which it
has received from the software (e.g. word processor) and the fonts currently
present in its RAM. It does this by examining the font descriptor of each font. If
this has been changed so as to contain incorrect or even internally conflicting
values the printer will ignore the entire font. The net result of this is that
characters from this particular font will not be printed and you are left
wondering why.
	In this connection you should exercise extreme caution when combining
fonts with NewLas. There is nothing to stop you from joining characters from
two fonts with each other which do not match. But when you load such an
adulterated font into the printer the latter will ignore it if called to print
characters from it. When shifting characters from one font to another (A to B in
NewLas) make sure that both are of the same type, e.g. both Times Roman 12
Point, Helvetica 8 Point or whatever.
	Incorrect font activation is a matter for your software. As indicated above
the easiest way of all to activate soft fonts in your laser printer is to allocate a
font identification number to each of them on loading and then to address each
font with the ID address sequence provided for in the Hewlett Packard laser
printer control language (see details above).


31.5.1.	Character grid parameters

Font descriptor parameters

1)Cell Height.  The maximum height of a character cell as defined in the font
descriptor. View and/or alter in "Font Parameters" window.

2)Cell Width.  The maximum width of a character cell as defined in the font
descriptor. View and/or alter in "Font Parameters" window.

3)Baseline Distance.  This is the distance between the upper edge of a cell (as
determined by the cell height) and the imaginary line on which all letters
without descenders (e.g. all uppercase and many lowercase letters) rest. It
is fixed for the whole font in the font descriptor, see Top Offset below as
well.

	                                 Cell Width
	                      Ĵ
	      
	                                                                  
	                        
	                                                 
	                                          
	                                                      
	                                                        
	                                                 Top     Baseline
	        Character                                Offset  Distance
	          Height                                        
	                                                        
	                                                        
	                                                        
	 Cell                                                   	Height                             ܳ             
	                   
	                                                               (Baseline)
	                                               
	                                               
	                 
	                                                       
	      
	                               Character Width      
	              Left Ĵ Ĵ
	             Offset   Ĵ
	                                  Delta-X            

Legend. The parameters which are doubly underlined are defined in the font
descriptor at the head of the font file and to be edited on loading a font within
LaserEd. The other parameters (marked in boldface) are specified for each
character individually and to be edited by pressing <Shift-F7> when editing a
character within LaserEd or are determined automatically by the programme
when you finish processing a particular character.

Individual character parameters

1)Character Height.  The height of the individual character being defined;
may not exceed the cell height, this is normally prevented by LaserEd.
Automatically determined by LaserEd on finishing character editing.

2)Character Width.  The width of the individual character being defined; may
not exceed the cell width, this is normally prevented by LaserEd.
Automatically determined by LaserEd on finishing character editing.

3)Top Offset.  One of the parameters of an individual character which the
user must determine him/herself. To do this, press <Shift-F5> and move
the horizontal line to the point in the current character where you wish the
baseline for that character to be. The resulting value, the number of rows
between the upper edge of the character and the row where the horizontal
line is moved to by the user represent the number of rows by which the
current character will extend above the baseline (determined for the entire
font via the value in the font descriptor) when printed.
If you do not specify a top offset value via <Shift-F5> during editing and
press <Return> to conclude, LaserEd will display the current value (that
specified during a previous edit or the default value, used for new
characters, of the cell height less 1) when you press <Shift-F7> to check /
edit the parameters for the current character.

4)Left Offset.  This parameter has a default value of 1; to alter it press
<Shift-F7>, i.e. edit the parameters for an individual character (the
current one). The left offset ist rarely greater than 6.

5)Delta-X.  As noted above there is no parameter "Right Offset" for
characters in Hewlett Packard soft fonts. Instead there is one called
Delta-X which refers to the distance covered by the printer's cursor after
printing a character. This consists of (i) the left offset, the ink width, and a
number of columns which the user can regard as the right offset. The latter
is always a duplicate of the left offset. The Delta-X value is calculated every
time you edit a character and leave it again to continue scrolling in your
font. You can view its value for any particular character by pressing
<Shift-F7>.

A note on the size of fonts

When defining fonts you should keep to ASCII values between $33 and $126. It
is true that you can define any of the 256 ASCII codes from within LaserEd. The
real question is whether your software and the laser printer itself will go along
with this. Characters below $32 are so-called printer control codes and may not
be accepted by the printer or even released by your software (e.g. word
processor) on printing. Character codes above $126 (i.e. in the upper ASCII
area) suffer from similar drawbacks. Depending on how your software treats
upper ASCII characters (and whether it translates these in an unexpected
manner, you may experience difficulties here. If you find that you have not
enough space for your special characters in one font (while staying within the
safe limits just mentioned) then you can simply create a second font to
complement the first.
	Note. With more recent versions of both data processing software and laser
printers you should not experience difficulties with characters in the upper
ASCII area so that you can use these without too many reservations.




21.6.	The aesthetics of font design

When you either upgrade a dot matrix font to the laser printer format or create
a laser print font file yourself you will choose one of the following typefaces as a
guide for the characters of your customised font.

		1)	Courier
		2)	Helvetica
		3)	Times Roman
		4)	Letter Gothic

If you wish to take the path of least resistance then declare your font to be
Courier or Letter Gothic. For one thing the forms of letters in such fonts are
quite simple and resemble those of a traditional typewriter quite closely, for
another these fonts have fixed spacing between characters so that you do not
have to worry about entering the relative widths of each customised character in
a proportional table in your data processing software to ensure flush right
margins on printing.
The second typeface, Helvetica, is deliberately simple in its design but is
proportional. You will have to create a table of relative widths for the
characters you design, but the actual designing is relatively unproblematic. The
easiest way to try out a Helvetica font is to upgrade one of the supplied dot
matrix fonts and with the help of Size expand the characters somewhat, say with
a horizontal factor of 1 and a vertical factor of 4. This results in a 12 point font
(approximately). The curves of some letters need to be finely adjusted
somewhat (they look a little jagged). For all intents and purposes the result is
then a Helvetica laser font.
	The third typeface, Times Roman, is by far the most demanding but also the
most professional looking. The present book is set in Times Roman and printed
on a laser printer, the results being the same as a typeset book.
	Consider for a moment some general facts about typefaces. There are two
characteristics of all printed text no matter what the typeface used. The first
concerns serifs: a typeface is either serifed or it is not (so-called sans-serif).
Courier and Times Roman are serifed fonts while Helvetica is not. The second
refers to the relative thickness of the lines and curves which letters consists of.
Courier and Helvetica evince a uniform thickness while Times Roman varies
thickness according to the relationship between a line or section of a curve to an
imaginary vertical axis. Other typefaces used by printers such as Caslon,
Baskerville, Bodoni Roman have varying thickness of lines and curves. Fonts
with varying thickness are always serifed.
	To create an aesthetically pleasing Times Roman font certain guidelines
must be adhered to. These have to do with the lines, curves and serifs out of
which the characters of a Times Roman font are composed.

Lines. These are straight vertical, horizontal or diagonal strokes out of which a
letter may be composed, e.g. uppercase "H" consists of two vertical and a
horizontal line. The following rules apply to the relative thickness of lines
(compare the various letters in the present book).

1)   If a letter has only one vertical line then this is always thick (cf. "I").
2)   If a letter consists of two or more vertical lines then note that two thick or
     two thin lines cannot abut on each other (cf. "V", "W").
3)   Left-slanting diagonal lines are always thick (cf. "X", "V").
4)   Right-slanting diagonal lines are always thin (cf. "W", "A").
5)   Horizontal lines are always thin (cf. "H", "E").
6)   Vertical lines are always thick (cf. "F", "L") unless abutting on a diagonal
     which is thick, i.e. left-slanting (cf. "M", "N").

Curves. These vary in thickness along the length of the curve according to the
following rule:

1)The maximum thickness of a curve is reached in the vertical plane (cf. "C",
"o", "p", "q"). Conversely the minimum is reached on the horizontal plane.
Compare rules 5) and 6) for lines.

Serifs. These are tiny strokes placed at the ends of letters and which taper off
away from the stem to the left and possibly to the right as well. They are
intended to improve the quick recognition of letters and thus render text more
readable. Note the following points concerning serifs:

1)   Serifs are almost always parallel to the direction of print. There are only a
     few exceptions to this, e.g. "E", "F", "S" which have vertical serifs.
2)   With lowercase letters the serifs at the top of letters (top of normal letters
     or those with ascenders) are usually only single-sided (cf. "u", "i", "d", "l").
     There are a few exceptions to this such as "v" and "w".
3)   Single-sided serifs always point to the left.
4)   If a serif appears at the end of a curve with a lowercase letter then it adopts
     the form of a slight bulge as in "a", "f". Uppercase letters and lowercase "s"
     have a vertical serifs instead, cf. "C", "G", "s".


21.7.	Command activation via menu system

There are two basic means of activating commands within LaserEd. The first is
that which has been discussed so far: the user presses a function key or
combination of keys to start a command. The advantage of this method is one of
speed, the disadvantage should be equally obvious: it is necessary to learn a
large number of key combinations by heart.

	Keystroke for activation of menus:	Shift-Tab

Ŀ  
 Font Manipulation    Char. Editing 1    Char. Editing 2    Miscellaneous      
Ŀ Sh-Tab
  F2        Move character      Menus 
  Shift-F2  Swivel character    F7 =  
 ĳ Quit  
  F3        Show char. mask    ĳ
  Alt-F4    Shift char. mask   ĳ
  Shift-F3  Invert character          
  Ctrl-F3   Mirror image              
 ĳ Row:  
  F4        Expand character          
  Shift-F4  Compress character  Col:  
  Ctrl-F4   Italicise char.           
 ĳ       
  F5        Rotate character          
  Shift_F5  Set char. baseline ĳ
  Ctrl_F5   View font settings        
 ĳ Char. 
  F6        Undo last change         
  Shift-F6  Delete character    Ascii 
   227  
  Hex.  
   E3   
        
------------------------------;
  123456789 123456789 123456789 123456789 123456789 123456789 123456           


What the beginner needs is a means of activating commands without knowing
what keys are required. The solution to this dilemma is provided by a set of
inbuilt picklists which are activated by a single keystroke. The user does not
even have to remember what this is as it is continually prompted in the top
righthand corner of the screen. Indeed any of a series of keystrokes will do here.
	Once a correct key combination has been pressed, a window will appear;
this is one of four which can be selected by using the <LeftArrow> and <Right
Arrow> keys. To move within a window use the <UpArrow> or
<DownArrow> keys (or <PageUp>, <PageDown>) for the beginning or end
of a list.


21.8.	Command Summary

	Function keys and combinations with Shift, Ctrl and Alt

	F1			=	On-line help (requires lasered.hlp)
	SHIFT_F1	=	File information
	CTRL_F1		=	DOS call
	ALT_F1		=	Check font integrity
	F2			=	Move character
	SHIFT_F2	=	Swivel character
	CTRL_F2		=	Mark block
	ALT_F2		=	Retrieve clipboard contents
	F3			=	Character mask
	SHIFT_F3	=	Invert character
	CTRL_F3		=	Mirror image
	ALT_F3		=	View clipboard contents
	F4			=	Expand character
	SHIFT_F4	=	Compress character
	CTRL_F4		=	Italicise character
	ALT_F4		=	Shift character mask
	F5			=	Rotate character (portrait to landscape)
	SHIFT_F5	=  	Set baseline
	CTRL_F5		=	Check font parameters
	F6			=	Undo major change
	SHIFT_F6	=	Delete character
	F7			=	Return to main menu
	SHIFT_F7	=	Character parameters
	CTRL_F7		=	Switch colours
	F8			=	Copy character
	SHIFT_F8	=	Move character
	F9 (SPACE)	=	Zoom character (i)
	SHIFT_F9	=	Zoom character (ii)
	F10			=	Save font to disk
	SHIFT_F10	=	View entire font
	ALT_F10		=	Load second font
	F11			= 	Move up and edit character
	F12 		=	Move down and edit character

	Additional key settings   (all apply to editing characters)

	ESCAPE			=  Reject changes to character (editing)
	ARROW KEYS 		=  Move cursor within matrix (editing)
	SHIFT + ARROWS	=  Repeat set a dot in matrix (editing)
	CTRL + ARROWS 	=  Repeat delete a dot in matrix (editing) 
	CTRL_U / CTRL_D	=  Repeat delete (for up and down directions)

	INS / DEL   	=  Set / delete a single dot in matrix
	END       		=  Rightmost column in bit map matrix

	HOME		=  Leftmost column in bit map matrix
	CTRL_END	=  Delete character from cursor to right
	CTRL_HOME	=  Delete character from cursor to left

	CTRL_PG_UP	(i)   Delete character from cursor to top (editing)
				(ii)  First character of font (scrolling)
	CTRL_PG_DN	(i)   Delete character from cursor to bottom (editing)
				(ii)  Last character of font (scrolling)

	PAGE_UP		(i)   Top row of bit map matrix (editing)
              	(ii)  Scroll forwards in download font file
	PAGE_DOWN	(i)   Bottom row of bit map matrix (editing)
				(ii)  Scroll backwards in download font file

	ALT_G		Goto a certain character (edit & copy/move)
	ALT_V		View video character set

Note The <Return> key serves the main function of accepting an option or
confirming an entry (mostly main menu). In addition it is used to conclude a
temporary operation while editing a character, such as copying a character to a
new position, shifting a character around in the character grid, etc. In the latter
case you are always prompted to this effect via a message on the right of the
screen.





12.	DotEd


Syntax:	1)	doted [input_file] 
		2)	doted /file_template 

This is the corresponding editor for character sets intended for a laser printer.
In its command structure and screen layout it is similar to DotEd. Because of
differences between dot matrix printers and laser printers, there are several
details in which the two programmes differ, however.
	This is the character editor for 24 needle dot matrix printers. With it you
can define your own characters, store them in a disk file and load the latter into
your printer before you wish to print text in which these characters are to
appear. Remember that characters for the screen are defined with VideoEd and
that you must link screen characters with printer characters via a printer driver
in your word processor. Just how this is done is explained in detail below.
	Like all the programmes of the LinguaFont package, DotEd is written in
the programming language C++ in which it is often practice to pass any
information required by a programme when calling it to start with. This is an
option available in DotEd. Technically it is termed passing command line
parameters. Consider how this works.
	You can start DotEd by simply typing doted at the DOS prompt (which will
look something like C:> on your computer). But you may cause the programme
to automatically load a character set file by specifying this immediately after the
programme name on the command line, i.e. before pressing <Return> to
execute the programme as in:

			doted russian.dl1

This assumes that there is a file 8russian.dl1 in the directory in which you are in
and that (as its name implies) it is an DotEd character set file (more on this
below). If DotEd does not find the file (you did not type it correctly or it really is
not in the current directory) then it issues an error message and after pressing a
key you are presented with the main menu as if you had simply entered doted.


22.0.	Main Menu

DotEd starts by presenting you with a screen in which seven options are listed. A
highlight bar rests to begin with on the second option. To activate an option,
move the bar with either the <UpArrow> or <DownArrow> key and press
<Return>. Depending on the option you choose you will be prompted by the
programme to take one or two further steps.
	The centre of the window offered at the beginning is the main menu and
should look like the following:

Ŀ
                    ---     F1 Help, F7 Exit to DOS     ---                     




͸
>  DotEd  <ĳ 
                                                     
    Ŀ     
         Create a new font                         
     =  Process an existing font                  
         Print test table of font                  
         Download a font to printer                
         Create new font from existing one         
         Change printer configuration              
         Run printer test programme                
                                                   
         
                                                     
; 
                                                      


                        ---     D:\TC\LINGFONT     ---                          
                      Use , to move bar,  for option                        


When you finish editing a character set you are returned to the main menu from
which you can continue with some option or leave the programme (finish a
work session). You leave by pressing the <F7> key; an on-line text is available
by pressing the <F1> key.
	On the second last line of the screen, the current directory is displayed in
inverse and on the last a message is displayed prompting the user what to do.


32.0.1.	Making a DOS call

During a work session with DotEd you may find at some point that you would
like to do something in DOS (like look at a directory or run a programme). This
can be achieved very simply by pressing <Ctrl-F1>. On doing this, the current
screen disappears and you are suddenly in DOS. DotEd is now in the
background and DOS is in the foreground. You know that DotEd is still there as
the prompt in DOS is now Type "exit" to return to DotEd. This prompt is to
remind you that you have called DOS temporarily from within DotEd (you
might conceivably forget this). When you enter exit and press <Return> the
screen of DotEd is restored as if nothing had happened.


32.1.1.	Create a new font

This is the first option but one which you should not need that often as
predefined fonts are supplied with LinguaFont anyway. It is easier for you to
take an existing font and alter it (with the next option) than to create one from
scratch. Furthermore, you can create a new font by importing symbols from an
existing font with the utility NewDot. However, if you choose the present
method you must bear a few points in mind.
	Firstly you must specify a name for the new font. Up to eight characters are
possible. Use names which suggest what characters will be contained in the font
so that you can recognise a font's contents by its name afterwards.
	Note. Do not type an extension at the input prompt.

Secondly you must indicate what type of download font you intend to construct.
For this purpose a window opens in which you can choose what pitch you wish
the new font to be in. There are four possibilities here:

	1)	Pica (10 characters per inch)
	2)	Elite (12 characters per inch)
	3)	Proportional (variable pitch)
	4)	Draft (lower character resolution)

You will have noted that there are different extensions for download fonts. The
extension indicates what pitch holds for the download font according to the
following key.
		.DL1		=	Pica
		.DL2		=	Elite
		.DL3		= 	Proportional
		.DL4		= 	Draft

Never change the extension of a file as this will disturb the operation of DotEd.
If you wish to convert one pitch type into another, use the programme TranDot
which has been specifically designed for this purpose.
Once you have specified the pitch for a font, the screen changes and you are
presented with the editing screen which will of course be empty. With the
<Page Up> and <PageDown> keys you can move to the ASCII number which
you wish to use as the address for the first symbol you define; a number counter
can be seen at the bottom left corner of the screen which changes its value in
ascending or descending order depending on whether you press <PageUp> or
<PageDown>. Press <Return> to start editing a character at the current
ASCII number (what you can do at this stage is explained below). Continue this
procedure until you have created as many new characters as you wish (or wish
to create in a work session - you can process this file again later, of course).


32.1.2.	Fonts in draft mode

Fonts for use in draft mode can be processed with DotEd. These fonts need far
less information for the representation of a single character (as fewer dots are
use per symbol during printing). The net result is faster printing which often
compensates for the poorer quality of such fonts vis  vis letter quality fonts.
	If you wish to create a draft mode font then choose a normal (letter
quality) font on the desktop level of DotEd and convert it to a draft font via
<Shift-F5> after you have transferred to the editing level. You will notice
immediately that each symbol now only occupies one fourth of the space it did
previously. It may happen that the conversion does not result in symbols which
are aesthetically satisfying so that it will probably necessary to do some editing
with them.

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5   Ctrl+ArrowKey  = Repeat Delete     
 6   Shift-F1    =  File Information    
 7 ų  (Shift)F2   =  Move (Swivel)       
 8   Ctrl/Alt-F2 =  Block/Clipboard     
 9   F3/Alt-F3   =  Char.Mask / Clip    
10   Shift-F3    =  Invert Character    
11   Ctrl-F3     =  Mirror Image        
12   (Shift-)F4  =  Expand (Compress)   
13   Shift-F5    =  Convert to Draft    
14   (Shift-)F6  =  (Delete Char.)Undo  
15   F7          =  Test Print Char.    
16   (Shift-)F8  =  (Move) Copy Char.   
17   (Shift-)F9  =  Zoom Character      
18   F10         =  Return to Main Menu 
19 ų  Shift-F10   =  Display Entire Font 
20   Return/Esc  =  Save/Reject changes 
21 ĳ
22   File:   RUSSIAN.DL4                
23   Character:  s ASCII:  115 Hex:  73 
24 ;
   123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ]  


Always store a draft mode font with the extension .dl4. Such a font can be sent
to the printer either from the desktop of DotEd or with the utility LoadDot.
	A draft mode font is always 9 dots wide (the height of characters is 24 for
all types of fonts). During printing a gap of 3 points is left between any two
symbols. You may utilise the full width of 9 dots when designing a draft mode
font.


32.1.3.	Process an existing font

	With this option you are presented with a list of the download files in the current
directory from which you can choose one for processing. Bear in mind that the
directory listing here only shows those files which have an extension in dl followed
by a digit, i.e. .dl1, .dl2, .dl3 or .dl4, unless you change the template as
discussed below.
	Note the special keystrokes which are available in the file lister and which
are prompted on the top line of the screen.

F4 Drive Allows you to choose a new drive from the list of logical drives on your
computer system.

Sh-F4 File template Permits the specification of a new file template. After you
do this the file listing is refreshed to show just those files which match the
template you entered. Note that if no files match then nothing is displayed.
Revert the file template to an earlier value or enter a new one by pressing
<Shift-F4> again.

F8 Directory The directory from which the file listing is gained is that from
which you start DotEd. You may well wish to change directory to access
different files. This is realised quite easily by pressing <F8>. The screen
changes and the programme 8d.exe is called with which you can change
directory by moving a highlight bar in a tree and pressing <Return>.
	Note The various options of the programme _dirs.exe are shown in the
picklists which you can activate via <Shift-Tab>. This programme must be
accessible via the DOS path for the current option to work.

Ŀ
                F4=Drive   Shift-F4=File Template   F8=Directory                




͸
>  DotEd  <ĳ 
                                                     
   ͵ FileName Ext.   Size    Date    Time  ͸     
      CZECH   .DL4    1008  02/17/91  22:20        
      DRAFT   .DL4   16723  11/17/90  07:38        
      EXT_CYR .DL1    3964  04/26/89  21:36        
      EXT_CYR .DL4    1540  02/16/91  11:27        
      GER_MED .DL1    7270  05/01/92  15:55        
      HEBREW  .DL1    5029  04/26/89  14:03        
      HIST_ENG.DL1    7022  04/26/89  14:07        
      HUNGARIA.DL1     774  04/26/89  14:08        
   ͵ Files:  35, Size:  191202 Bytes ;     
                                                     
; 
                                                      


                       ---     D:\TC\LINGFONT\DOT     ---                       
                       Use , to move bar,  for option                       


Once you have chosen the drive, directory and file template you want, move the
highlight bar to the file you wish. If there are more files than fit in a window you
can move downwards with the <DownArrow> key and back up again with
<Up Arrow>. <PageUp> and <Page Down> move the highlight bar to the
first and last file in the listing respectively. The maximum number of download
files which can be displayed in a window is 128.


32.1.4.	Print test table of font

With this option it is possible to print a page on which the symbols of a
download font are listed with the ASCII values they are assigned in the
download RAM area. To use this option successfully the LinguaFont utility
LoadDot must be accessible (either be in the current directory or reachable via
the DOS path command, usually specified in the start-up batch file
8autoexec.bat).
	You are prompted to choose a download file for printing. If your printer is
offline, if there is no printer port in the computer, or if there is more that one
parallel port present, a relevant message is issued and you are prompted to take
a course of action before printing actually begins.


32.1.5.	Download a font to printer

This is the equivalent to the above option except that the download font is not
printed but just loaded into the printer. It requires the LinguaFont utility
LoadDot which must be accessible in the same manner as described for the
previous option.


32.1.6.	Create new font from existing one

In order to offer the user an integrated environment for processing fonts this
option has been included which allows the user to take an existing font and
create a new one which can then be processed with DotEd. The second font
specified can in fact itself already exist; in this case one simply adds symbols
from the first font to the second as opposed to creating the second from scratch.
The LinguaFont utility NewDot (see detailed description below) must be
accessible to DotEd.


32.1.7.	Change printer configuration

In case you wish to change the settings for your printer during a work session
with DotEd this option has been provided. It calls the programme CtrlDot
described below and allows you to issue direct printer commands comfortably
and easily and returns you to the main menu of DotEd on pressing <Escape>.
CtrlDot must be accessible for this to work.


32.1.8.	Run printer test programme

It is conceivable that some function of your printer appears not to be working
properly. Usually it works all right but the settings of the DIP switches (see
glossary for definition) are not appropriate to your needs. With this option you
can test the printer. The utility TestDot is called for this function and must of
course be accessible for DotEd.


22.2.	Edit Screen

When you either create a new font or process an existing one the screen
changes and you are presented with the edit screen. It is here that the main
work with DotEd is done. the screen has a certain layout which can be best
illustrated by considering a screen print out like the following:

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5   Ctrl+ArrowKey  = Repeat Delete     
 6   Shift-F1    =  File Information    
 7 ų  (Shift)F2   =  Move (Swivel)       
 8   Ctrl/Alt-F2 =  Block/Clipboard     
 9   F3/Alt-F3   =  Char.Mask / Clip    
10   Shift-F3    =  Invert Character    
11   Ctrl-F3     =  Mirror Image        
12   (Shift-)F4  =  Expand (Compress)   
13   Shift-F5    =  Convert to Draft    
14   (Shift-)F6  =  (Delete Char.)Undo  
15   F7          =  Test Print Char.    
16   (Shift-)F8  =  (Move) Copy Char.   
17   (Shift-)F9  =  Zoom Character      
18   F10         =  Return to Main Menu 
19 ų  Shift-F10   =  Display Entire Font 
20   Return/Esc  =  Save/Reject changes 
21 ĳ
22   File:   MOD_GR.DL1                 
23   Character:  c ASCII:  99  Hex:  63 
24 ;
   123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ]  



32.2.1.	Editing Commands

Paging in a character set When the edit screen appears first you cannot edit a
character. Instead you can scroll in the file by using the <PageUp> and <Page
Down> keys. By default, the first character shown on entering the edit screen is
the first character of the file you have loaded (or an empty screen if you have
just created a new file). Try using the <PageUp> and <PageDown> keys. You
will notice in the bottom right of the screen that ASCII numbers are counted
upwards or downwards depending on what direction you scroll in. Furthermore,
not every ASCII value in the bottom righthand corner corresponds to a
character on the screen. For some values there is no character in the screen
matrix. This simply means that there is no character defined for that ASCII
value in the input font file. In most files the entire upper ASCII area will also be
empty as there are very few printers which have a download memory which
covers the entire ASCII area (lower and upper). If your printer does however
(e.g. if you have one of the NEC Pinwriter series) then you can define
characters in this area (or duplicate characters into this area) and afterwards
use this font file with your printer (see supplementary programme LoadNec
below). Should your printer only allow the lower ASCII area to be filled for
downloading then do not use the upper area when working with DotEd. The
effect of doing this is apparent when you try to load such a download file into
your printer: it does not work (your printer will probably start printing the
characters it receives above $127 rather than storing them as download
symbols).
	Note You should not be upset if there is so much empty space in the font
file as presented within DotEd. The empty characters are filtered out when
saving the file (the DOS binary file is quite compact).
	Editing a character To edit a character simply press <Return>. You will
notice two things at once. First of all a cursor appears in the middle of the
screen and secondly the margins of the characters are displayed in high video so
that you immediately recognise that you are in the edit mode.
	The cursor can be moved up and down with the Arrow keys or you can
jump to the edge of the matrix with <PageUp>, <PageDown>, <Home> or
<End> which move the cursor up, down, left or right respectively. The cursor
position in the matrix is the position where a block can be inserted or deleted.
	When you are finished editing the current character and wish to move to
another, press <Return> again. You will notice that the cursor disappears, and
the border of the screen matrix is no longer displayed brightly. Use <PageUp>
or <PageDown> to move to the new location and <Return> to edit this
character.
	Insert, Delete  Set, Delete Block. There are a variety of ways of entering or
removing blocks in the edit screen. The simplest of all is the press the <Insert>
key to insert a block at the current cursor position, and <Delete> to remove a
block. This can be used when making minor corrections to a character.
	Shift+ArrowKey  Repeat Set. A far speedier way of inserting blocks is to
press the <Shift> key (left or right) and use one of the Arrow keys
simultaneously. The cursor moves in the direction of the Arrow key pressed and
keeps moving until the edge of matrix is reached.
	Ctrl+ArrowKey  Repeat Delete. The corresponding means of removing
blocks is to press the <Control> key and use one of the Arrow keys.
Unfortunately due to a quirk of the operating system, it is not possible to use
the <Control> key with a vertical Arrow key. To achieve this function I have
had to use the key combinations <Ctrl-U> (with "U" for up) and <Ctrl-D>
(with "D" for down). These combinations delete a column of blocks in an
upward or downward direction respectively. If a block is not present at a
particular location, the cursor continues through it and deletes the next location
which is occupied.
	Return  Save Changes. When you finish editing a character and wish to
move to the next you press <Return> (cursor disappears and you can page to
another character).
	 Escape  Reject Changes. It you wish to abandon the changes which you
made to a character, press <Escape>. The original shape of the character is
restored and you can page to a new character.


42.2.1.1.	Using a mouse to draw characters
	
If a mouse is physically present in your system and if the necessary mouse driver
has been loaded beforehand, then you can move the cursor in the grid of the
current character via the mouse. The advantage of the mouse is that you can
move in any direction, and not just in straight lines at ninety degrees to each
other as with the cursor keys alone.
	Both buttons of the mouse are programmed for use in DotEd. The left
button serves the simple function of setting a dot in the grid; the right button
removes one if the cursor is moved to a point which is already occupied by a
dot. The mouse cursor and the normal cursor are linked to allow you to switch
between keyboard and mouse at ease. Note that you can in theory move the
mouse cursor to any position on the screen but that it can only be used when
within the grid of the current character.




32.2.2.		Additional Commands

42.2.2.1.	File Information (Shift-F1)

In order to keep you informed of what file you are editing, its name, how many
characters it has, your current directory, etc. a window appears on pressing
<Shift-F1> which displays various items of information about the status of the
font file and the environment in which DotEd is running. Press any key to return
to the edit screen.

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5   Ctrl+ArrowKey  = Repeat Delete     
 6 ͸ormation    
 7                                                     vel)       
 8       File Name   MOD_GR.DL1                        pboard     
 9       Font Type   Pica [10 CPI]                      / Clip    
10       File Size   98 Characters  [7,449 Bytes]      aracter    
11        Archived   04/26/89 ; 14:04                  age        
12                                                     ompress)   
13       Current Path   D:\TC\LINGFONT\DOT             o Draft    
14                                                     har.)Undo  
15         Disk Space    16,119,808                    t Char.    
16        Memory Left       390,640                    py Char.   
17                                                     acter      
18       Current Time   22:19:53                        Main Menu 
19       Current Date   12/29/1992                     ntire Font 
20                                                     ct changes 
21  Press any key! ; ĳ
22                                                                 
23   Character:  l ASCII:  108 Hex:  6C 
24 ;
    123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ] 



42.2.2.2.	Move Character (F2)

While function key <F8> is used to move characters to different locations
within a font file (see below), the concern here is with moving a character
around within the bit map matrix itself. Press <F2> and use one of the Arrow
keys to move in one of the four cardinal directions.
	Note If you move a character so far to the edge that part of it disappears off
the screen then this is lost, i.e. moving the character back will not retrieve the
section moved off the edge. However, you can retrieve the entire character (at
the position it was in at the outset of the present operation) by pressing <F6>
for undo.


42.2.2.3.	Swivel Character (Shift-F2)

In many cases a new character which one requires is an old character upside
down or back to front (this is often the case with phonetic symbols, for
example). To avoid the chore of drawing a new character in its entirety, copy
the old character from its original location into the current one and use the
present function -  swivel character - to turn the character to the required
extent. Note that the character is swivelled in increments of 90 degrees.
Conclude the operation by pressing <Return>.


42.2.2.4.	Mark Block (Ctrl-F2)

You can not only move entire characters within DotEd, you can also operate on
a section of a character. To do this you must first mark the appropriate part of
the character. Press <Ctrl-F2>; you can now block mark (shown in inverse
video) a section of the current character by using the cursor keys in combination
with the <Shift> key to move in any particular direction. The initial row and
column of the cursor after pressing <Ctrl-F2> is the starting point for the block
marking process. You can move the cursor either above or below, to the left or
the right of this initial position. When the desired amount is marked you have
three options:

1)	Press <Return> to shift the block within the current character grid
2)	Press <Ctrl-Return> to store block in the clipboard.
3)	Press <Delete> to delete marked section of the current character.

The first option allows you to shift a section of a character to a new location
(the original section is deleted at its old location). To move the marked section
use the cursor keys (without holding the <Shift> key down!) and press
<Return> to confirm the shift to the new location.
	The second option causes the marked section of the current character to be
stored in a reserved section of memory called a clipboard from where it can be
retrieved by the user later on. When you copy a section of a character to the
clipboard it is not deleted at its original position (contrast this with shifting a
section within the current character grid).
	The contents of the clipboard can be retrieved more than once if you wish.
In fact, the contents are only altered when you re-fill the clipboard with fresh
contents. The third option does not require commenting. Pressing <Escape>
aborts the present operation.


42.2.2.5.	Copy from Clipboard (Alt-F2)

Obviously you will want to retrieve the contents of the clipboard at some point
when you are processing another character. This is done with the present key
combination. Bear in mind that the current cursor position in the character grid
represents the top left-hand corner for the clipboard contents which are about
to be inserted. Ensure that there is enough space between the present cursor
position and the right and bottom margins of the grid to accomodate the
clipboard contents otherwise the overspill will be lost.


42.2.2.6.	Mirror Image (F3)

Here the current character is turned such that a mirror image of the character
results. Useful with some foreign language fonts, e.g. the Russian ja letter is a
mirror image of uppercase Latin R. Conclude by pressing <Return>.


42.2.2.7.	Invert Character (Shift-F3)

This is a simple function which turns every filled space (block character) in the
bit map into an empty space (small full stop) and vice versa.


42.2.2.8.	View Clipboard Contents (Alt-F3)

This just allows you to take a look at what is in the clipboard at present. If it is
empty, an appropriate message is issued. The window which appears shows the
contents zoomed down by 50%. Press any key to continue editing.

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5 Ĵ Contents of Clipboard Ŀ Repeat Delete     
 6                                        le Information    
 7                              ve (Swivel)       
 8                        ock/Clipboard     
 9                              ar.Mask / Clip    
10                                    vert Character    
11                        rror Image        
12                                 pand (Compress)   
13                                        nvert to Draft    
14                                        elete Char.)Undo  
15                                        st Print Char.    
16                                        ove) Copy Char.   
17                                        om Character      
18                                        turn to Main Menu 
19                                        splay Entire Font 
20 Ĵ Press any key to continue!  ve/Reject changes 
21                                         ĳ
22   File:   MOD_GR.DL1                 
23   Character:  c ASCII:  99  Hex:  63 
24 ;
   123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ]  



42.2.2.9.	Expand Character (F4)

You might find when creating a new character that this is like an existing one
but slightly broader or longer. Copy the existing character into the current
matrix using <F8> and expand the character by the desired amount using the
present command. Note that the expansion consists of duplicating the current
column or row at the current cursor position and inserting it into the character.
	To duplicate a column use either the <LeftArrow> or <RightArrow>
key; to duplicate a row, use the <UpArrow> or <DownArrow> key. Conclude
the operation by pressing <Return>.


42.2.2.10.	Compress Character (Shift-F4)

This is the reverse of the above command. It removes the current column from
a character if the <LeftArrow> or <RightArrow> key is used; it removes the
current row if the <UpArrow> or <DownArrow> key is used.
	This command can be of considerable help if you wish to generate an Elite
pitch font from a Pica pitch file which requires that each character be reduced
by about 20% in width. Conclude the operation by pressing <Return>.


42.2.2.11.	Delete Character (F5)

Simply deletes the present character; it can be retrieved by pressing <F6>.


42.2.2.12.	Undo Last Change (F6)

At some stage during character generation you are liable to regret a move. The
purpose of the present command is to enable you to undo a change. Here's how
this works internally. Before any major operation (like swivelling or expanding a
character) is started the entire bit map for the current character is saved in an
extra matrix. You then edit the bit map and if you want to reject the changes
you made, then you press <F6> which copies this extra matrix back into the bit
map, thereby restoring the character to its original shape.


42.2.2.13.	Test Print Character (F7)

It is not always possible to imagine exactly from the screen matrix just what a
character looks like. Because of this, the present function allows the user to test
print a character while still processing a download file. It is obvious that with
this command you need a printer attached to your computer.
	When you activate this command you are prompted by DotEd to enter a
string which is to be printed. Note the following conventions in this respect.

		^C	=	Current character
		^O	=	Overprint character
		^R	=	Repeat last test line

Any other characters entered are printed as normal. You might like to see the
current download character beside some ordinary character. Type the normal
characters you require, type <Control-C> (appears as a clover leaf symbol) to
indicate the position in the string where the current download character is to be
inserted. Use <Control-O> if you wish to overprint a character with the current
download character (this could be useful if the current character is a diacritic).
Press <Return> to conclude the string. It is now printed. If there is more than
one parallel port in your computer or if the printer is off-line a message is
issued and you are prompted to remedy the obstacle to printing (<Escape> can
be used to abort the entire command).

Ŀ
 1 ͸
 2       ---  Row: 13  Col: 16  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5   Ctrl+ArrowKey  = Repeat Delete     
 6   Shift-F1    =  File Information    
 7 ͸Move (Swivel)       
 8   Use these Characters for Test:    lock/Clipboard     
 9    ^C = Current Character           har.Mask / Clip    
10    ^O = Overprint character         nvert Character    
11    ^R = Repeat last test line       irror Image        
12   Press Return to Finish String!    xpand (Compress)   
13 ; onvert to Draft    
14                                      Delete Char.)Undo  
15   F7          =  Test Print Char.    
16 Ŀ(Move) Copy Char.   
17  Enter a Test String to be Printed  oom Character      
18  eturn to Main Menu 
19                                      isplay Entire Font 
20   Return/Esc  =  Save/Reject changes 
21 ͸ĳ
22   =                                L1                 
23 ; CII:  99  Hex:  63 
24                                      ;
    123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ] 


If you are test printing a character for a second time you might like simply to
repeat the first line. This is achieved by pressing <Control-R> which retrieves
the last test line. The test string which you enter can be up to 24 characters long.


42.2.2.14.	Switch Colours (Ctrl-F7)
	
This command activates a toggle which moves through the seven colour options
of DotEd. Keep pressing <Ctrl-F7> until you reach the combination you want.
The initial option has light blue lettering on a blue background with pink for
high video (i.e. the equivalent of bright lettering on a monochrome system).


42.2.2.15.	Copy Character (F8)

If a character is not at the address you want or if you wish to create a new
character which is similar to one already defined, it is sensible to shift a
character to a new location. There are two possibilities here. You can either
move a character (which deletes it at the original position) or you can copy it
(which does not delete the original).
	When you press <F8> a message appears on the right of the screen
prompting you to use <PageUp> or <PageDown> to move to the location you
want the character moved or copied to. Press <Return> and the character is
inserted at the location. To determine where you are, look at the counter at the
bottom righthand corner of the screen.

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5   Ctrl+ArrowKey  = Repeat Delete     
 6   Shift-F1    =  File Information    
 7 ų  (Shift)F2   =  Move (Swivel)       
 8 Ĵ
 9                                      
10       Use PageUp/PageDown to move    
11       to target position, press      
12       Return to copy character.      
13                                      
14       Mode: Move Character           
15                                      
16 Ĵ
17   (Shift-)F9  =  Zoom Character      
18   F10         =  Return to Main Menu 
19 ų  Shift-F10   =  Display Entire Font 
20   Return/Esc  =  Save/Reject changes 
21 ĳ
22   File:   MOD_GR.DL1                 
23   Character:  f ASCII:  102 Hex:  66 
24 ;
    123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ] 



42.2.2.16.	Move Character (Shift-F8)

This is basically the same command as the previous one with the sole difference
that here the character moved is deleted at its original position.


42.2.2.17.	Zoom Character, 1 (F9) 

In order to gain a better impression of the proportions of a character an
additional option has been included here which shows the current character in a
special window in the centre of the screen. The character is zoomed down
somewhat; each block here is square whereas the blocks of which a character is
composed in the normal bit map are rectangular with the vertical sides longer
than the horizontal ones. Alternative keystroke: <SpaceBar>.

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5 Ŀ Repeat Delete     
 6                                        le Information    
 7                                     ve (Swivel)       
 8                          ock/Clipboard     
 9                           ar.Mask / Clip    
10                                    vert Character    
11                               rror Image        
12                         pand (Compress)   
13                                   nvert to Draft    
14                                     elete Char.)Undo  
15                              st Print Char.    
16                           ove) Copy Char.   
17                               om Character      
18                                turn to Main Menu 
19                                        splay Entire Font 
20 Ĵ Press any key to continue!  ve/Reject changes 
21                                         ĳ
22   File:   MOD_GR.DL1                 
23   Character:  c ASCII:  99  Hex:  63 
24 ;
    123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ] 



42.2.2.18.	Zoom Character, 2 (Shift-F9)

This option provides a further reduction in the size of the matrix used to display
the current character. In fact the video mode is changed to graphics (which you
notice by the twitching of the screen). The current character is now displayed on
its own in the middle of the screen in a much-reduced size. Press any key to
continue with DotEd.


42.2.2.19.	Return to Main Menu (F10)

To return to the main menu, i.e. end the processing of the current download
character set, press <F10>. A small window prompt appears with the name of
the current file in it. You can either press <Return> to have the character set
saved under that name, edit the prompt to give the character a new name
before saving (if you wanted it saved separately from the input file) or press
<Escape> to reject all changes made to the file.
	It is advisable, particularly if you have made extensive changes, to edit the
file name to a new name and save the character set. You never know, you might
regret rejecting the changes after all. When rejecting a processed font you must
confirm pressing the <Escape> key by explicitly pressing the <y> key as well.

Ŀ
 1 ͸
 2       ---  Editing Commands  ---     
 3 ųĳ
 4   Shift+ArrowKey = Repeat Set        
 5   Ctrl+ArrowKey  = Repeat Delete     
 6   Shift-F1    =  File Information    
 7 ų  (Shift)F2   =  Move (Swivel)       
 8   Ctrl/Alt-F2 =  Block/Clipboard     
 9  <F8> = Change ĿMask / Clip    
10                                                 Character    
11    D:\TC\LINGFONT\DOT                           Image        
12                                                 (Compress)   
13  Directory for File  t to Draft    
14                                                 e Char.)Undo  
15   F7          =  Test Print Char.    
16 Ŀ(Move) Copy Char.   
17  Enter File Name, <Esc> = No Save   oom Character      
18  eturn to Main Menu 
19                                      isplay Entire Font 
20   Return/Esc  =  Save/Reject changes 
21 ͸ĳ
22   = PHONETIC.DL1                   .DL1               
23 ; CII:  56  Hex:  38 
24                                      ;
    123456789 123456789 123456789 123456  [ Use <PgUp>,<PgDn> to move in file ] 

                                                                                        

42.2.2.20.	View Entire Font (Shift-F10)

To see what characters are included in the entire font you do not have to page
through the whole file. Simply press <Shift-F10> and the screen changes to
display (in a graphics mode) the entire font as defined. If characters are not
defined at contiguous locations there may be blanks in the display. To return to
the edit screen press any key.
	Note Do not be upset by the screen "twitching" when you press
<Shift-F10> and when you return again. This is due to the screen mode
changing from text to graphics (and back again) and is perfectly normal.


22.3.	Character width tables

When you process a download character set which has a proportional pitch and
then save this when you finish a work session with DotEd an additional file is
saved alongside the actual character set definition file (with the extension .dl3).
This file always has the extension .tbl; the part of the file name before the
extension is identical with the name of the font from which the table of
character widths is created. It contains the relative widths of the characters
which are contained in the proportional file you have just processed. Note that
this file is created each time you process a proportionally pitched download font
file and the previous version of the file, if there is one, is overwritten.
	The purpose of the file is to offer the user a list of character widths which
can then be entered into the character width table of the word processor from
within which he/she wishes to print a customised screen font which corresponds
to the proportionally pitched printer download font.
	The question naturally arises at this point, how does DotEd calculate the
width of a character? Quite simply: it takes the left offset of a character (the
number of columns which the user has left free between the left edge of the
bitmap matrix and the first column occupied, wholy or partially, by blocks) adds
the so-called ink width of the character (the number of columns with blocks in
them) and duplicates the left offset to obtain a value for the right offset. The
sum of these three values, left offset, ink width and right offset (=left offset)
equals the width of the character as entered into the file of character widths.
	Care needs to be taken when defining character widths. The first point to
remember is that you do not enter the width of a download symbol at the same
ASCII value in the screen font but at the address in the screen font at which the
same symbol is to be found. Say you have defined, for the screen, an "i" without
a dot on it (as is needed for Turkish) and assigned the ASCII value $139 to it
(an "i" with a diaeresis over it in the normal IBM character set). The ASCII
address you have chosen in the printer download font file is, say, $105 (this is
the value of lowercase "i" in the lower ASCII area). The dotless "i" in the
download will be quite slender and so you must convey this to the word
processor via a character width table. The symbol which obtains the width of the
dotless "i" as specified in the character width file will be ASCII $139 (and not
ASCII $105 of the screen font as this is normal "i"). You will then, via a
character translation table, ensure that $139 on the screen is converted to $105
for printing (see 6.1.1. below).
	If you go to the trouble of entering all the relative character widths as determined
by DotEd for a proportional font into a corresponding character width table
in your word processor, then you can obtain full right justification even with
customised printer fonts which are proportionally pitched.
	Note The same procedure applies to laser printer fonts. Here it is
obligatory to fill in the character width table of your word processor as
practically all laser printer fonts are proportionally pitched.




22.4.	Command Summary

	Function keys and combinations with Shift, Ctrl and Alt

	F1			=	On-line help
	SHIFT_F1	=	File information
	CTRL_F1		=	DOS call
	F2			=	Move character
	SHIFT_F2	=	Swivel character
	CTRL_F2		=	Mark block
	ALT_F2		=	Retrieve clipboard contents
	F3			=	Character mask
	SHIFT_F3	=	Invert character
	ALT_F3		=	View clipboard contents
	F4			=	Expand character
	SHIFT_F4	=	Compress character
	F5			=	Delete character
	SHIFT_F5	=	Convert font to draft
	F6			=	Undo major change
	F7			=	Test print character
	CTRL_F7		=	Switch colours
	F8			=	Copy character
	SHIFT_F8	=	Move character
	F9 (SPACE)	=	Zoom character (i)
	SHIFT_F9	=	Zoom character (ii)
	F10			=	Return to main menu
	SHIFT_F10	=	View entire font

	Additional key settings   (all apply to editing characters)

	ESCAPE		=  Reject changes to character
	ARROW KEYS	=  Move cursor within matrix

	SHIFT + ARROWS	=  Repeat set a dot in matrix
	CTRL + ARROWS	=  Repeat delete a dot in matrix
	CTRL_U / CTRL_D	=  Repeat delete (for up and down directions)

	INS / DEL	=  Set / delete a single dot in matrix
	END			=  Rightmost column in bit map matrix
	HOME		=  Leftmost column in bit map matrix
	CTRL_END	=  Delete character from cursor to right
	CTRL_HOME	=  Delete character from cursor to left

	CTRL_PG_UP 	(i)   Delete character from cursor to top
				(ii)  Move to the first character of font
	CTRL_PG_DN	(i)   Delete character from cursor to bottom
				(ii)  Move to the last character of font

	PAGE_UP		(i)   Top row of bit map matrix (editing character)
				(ii)  Scroll forwards in download font file
	PAGE_DOWN	(i)   Bottom row of bit map matrix (editing character)
				(ii)  Scroll backwards in download font file

	ALT_G		Goto a certain character (edit & copy/move)

Note The <Return> key serves the main function of accepting an option or
confirming an entry (mostly main menu). In addition it is used to conclude a
temporary operation while editing a character, such as copying a character to a
new position, shifting a character around in the bit map matrix, etc. In the latter
case you are always prompted to this effect via a message in the right of the
screen.





13.	VideoEd


Syntax:	1)		videoed [input_file]
		2)		videoed /-file_template

23.0.	Introduction

This is the character editor for the PC screen. Character sets are available for
the screen much as they are for the printer. They are smaller as the matrix of
the screen - usually 8 x 16 the so-called text mode - is considerably smaller than
that for dot matrix printers let alone for laser printers. Characters which one
designs for the screen should be easily recognisable, nothing more and nothing
less.
	When one loads VideoEd a by now familiar screen appears from which one
may choose from a number of options. The highlight bar, as with the other
programmes, rests on option two with which one can choose an existing font to
process. The screen should look this:

Ŀ
                    ---     F1 Help, F7 Exit to DOS     ---                     



͸
>  VideoEd  <ĳ 
                                                     
    Ŀ     
         Create a new font                         
     =  Process an existing font                  
         Convert Hercules font to EGA              
         Convert EGA font to Hercules              
         Load font file into memory                
         View ASCII character set                  
                                                   
                                                   
         
                                                     
; 
                                                      


                         ---     D:\LINGFONT     ---                            
                     Use ,  to move bar,  for option                        



33.0.1.	Making a DOS call

During a work session with VideoEd you may find at some point that you would
like to do something in DOS (like look at a directory or run a programme). This
can be achieved very simply by pressing <Ctrl-F1>. On doing this, the current
screen disappears and you are suddenly in DOS. VideoEd is now in the
background and DOS is in the foreground. You know that VideoEd is still there
as the prompt in DOS is now Type "exit" to return to VideoEd. This prompt is
to remind you that you have called DOS temporarily from within VideoEd (you
might conceivably forget this). When you enter exit and press <Return> the
screen of VideoEd is restored as if nothing had happened.


23.1.	Create a new font

If for some reason you choose to create a font from scratch with VideoEd then
you must not only supply the new font with a name but also say whether it is to
be a Hercules, a VGA or an EGA font. The reason for this is that VideoEd must
know what size matrix to store in the resulting file and what extension to give it
(.fnt, .vga or .ega).
	The remaining options of the main menu in VideoEd are discussed briefly
below, the remainder of the description being then devoted to a discussion of
character editing.


23.2.	Process an existing font

Even more than with the printer character editors, it is advisable with VideoEd
simply to edit one of the fonts supplied with LinguaFont. There is one main
reason for this: when you design a new screen font you will wish to leave the
entire lower ASCII area unchanged and only redefine symbols in the upper area
which you do not normally require. Taking an existing font, one can simply alter
those characters one wishes to redefine and one's font is complete, ready to be
loaded. The only possible exception to this is where you wish to redefine the
shape of all characters of a set much as has already been done by the present
author for the thin font slender.fnt which is supplied with LinguaFont.
	Every user of VideoEd will either be intending to use the fonts he/she
creates with the programme for a VGA, Hercules Graphics Card Plus or for an
EGA card. Bear in mind that fonts for these cards are different in size (4096
bytes versus 3584 bytes) and that the former have the extension .vga, .fnt and
the latter the extension .ega. For more technical details on the differences
between the video adapter cards, see the second section of this book.
	The directory listing which appears on choosing the present option contains
by default files which have one of the three above extensions. You can,
however, have different files displayed if you enter a new template for the
directory listing. Note in this connection the three special commands which you
have at your disposal on this level of the programme.

F4 Drive. Allows you to choose a new drive from the list of logical drives on
your computer system.

Sh-F4 File template. Permits the specification of a new file template. After you
do this the file listing is refreshed to show just those files which match the
template you entered. Note that if no files match then nothing is displayed.
Revert the file template to an earlier value or enter a new one by pressing
<Shift-F4> again.

F8 Directory. The directory from which the file listing is gained is that from
which you start DotEd. You may well wish to change directory to access
different files. This is realised quite easily by pressing <F8>. The screen
changes and the programme 8d.exe is called with which you can change
directory by moving a highlight bar in a tree and pressing <Return>.

Note. The various options of the programme _dirs.exe are shown in the picklists
which you can activate via <Shift-Tab>. This programme must be accessible
via the DOS path for the current option to work.

Ŀ 
               F4= Drive   Shift-F4=New Template   F8=Directory                  
 
 
 

͸
>  VideoEd  <ĳ 
                                                     
   ͵ FileName Ext.   Size    Date    Time  ͸     
      MOD_GR  .EGA    3584  11/14/88  13:34        
      MOD_GR  .FNT    4096  11/05/87  01:25        
      NONAME  .FNT    4096  03/07/89  20:51        
      OE_ME   .EGA    3584  03/07/89  20:50        
      OE_ME   .FNT    4096  03/15/87  10:36        
      RUSSIAN .EGA    3584  11/03/88  22:11        
      RUSSIAN .FNT    4096  06/13/88  15:50        
      THIN    .EGA    3584  11/14/88  13:35        
   ͵ Files:   9, Size:   34816 Bytes ;     
                                                     
; 
                                                      


                         ---     D:\LINGFONT     ---                            
                     Use ,  to move bar,  for option                        



23.3.	Convert Hercules font to EGA

This a conversion facility to allow you to convert a character set which you have
designed in Hercules format into EGA format. You can also convert a supplied
font in this manner. The new font receives the extension .ega and is 512 bytes
smaller than the original. You are requested to confirm overwriting if a file with
the new file name already exists in the current directory of the disk.


23.4.	Convert EGA font to Hercules

The opposite to the above facility: .ega files are converted to .fnt files for the
Hercules Graphics Card Plus. The resulting files are 512 bytes larger. The reason
for this is given in the technical discussion of both kinds of video adapter card in
section two of the present book.


23.5.	Load font file into memory

Here you are prompted to choose a font from a directory listing (see above) which
is to loaded into the RAM of your VGA or EGA card or Hercules Graphics
Card Plus. Before selecting a font from the file listing offered you must specify
what kind of font is to be loaded.

Ŀ 
                    ---     F1 Help, F7 Exit to DOS     ---                     




͸
>  VideoEd  <ĳ 
                                                     
    Ŀ     
         Create a new font                         
         Process an existing font              Ŀ
         Convert Hercules font to EGA            EGA       
         Convert Hercules font to 8x8            VGA       
         Convert EGA font to Hercules            Hercules  
     =  Load font file into memory              8x8 Font  
         View ASCII character set               
                                                             
         
                                                     
; 
                                                      


                         ---     D:\LINGFONT     ---                            
                     Use ,  to move bar,  for option                        
 

Load EGA font into memory

Assuming that you are running the programme on a computer with an EGA
card you can load a file from this point in VideoEd into the video adapter and
all character representation on the screen from now on will be achieved using
the character here loaded. Don't worry about the screen "twitching" when the
character is loaded. This is perfectly normal and is not a portent of immanent
system crash as many users feel.

Note. For this option to function correctly the LinguaFont programme LoadVid
must either be in the current directory or be accessible via the entry for the
DOS path command (e.g. in the 8autoexec.bat startup file).

Load VGA font into memory

In order to load a font you generated or edited with VideoEd into a VGA video
adapter you choose the present option. Again LoadVid is the programme which
is called by VideoEd with the font which you choose from the directory listing
you are offered first as a command line parameter. VGA fonts bear the
extension .vga.

Load Hercules font into memory

Here you are prompted to choose a font which is then loaded into the RAM of
your Hercules Graphics Card Plus. Bear in mind that Hercules fonts carry the
extension .fnt.


23.6.	View ASCII character set

If you want to check a font which you have loaded with one of the above options
and which is identical with the normal font in the lower ASCII area and in the
block graphics section of the upper area (special characters from such a font
would not be evident from any screen in VideoEd) you can use this option to
view the entire ASCII set from the video adapter card, i.e. not from a file which
you may load.


23.7.	Editing Commands

The screen you are presented with when you load VideoEd bears a close
resemblance to that of DotEd. The first and major difference is that there are
two matrices to be seen on the screen. Consider the following screen print out.

Ŀ
͸ ͸
         Font 1             Font 2             ---  Editing Commands  ---   
    Ŀ   Ŀ     ĳ
   1               1     Insert/Delete  = Set/Del.Point 
   2               2     Shift+ArrowKey = Repeat Set    
   3               3     Ctrl+ArrowKey  = Repeat Delete 
   4               4    ĳ
   5               5     F2        = Move Character     
   6               6     Shift-F2  = Swivel Character   
   7               7     F3        = Character Mask     
   8               8     Shift-F3  = Invert Character   
   9               9     F4        = Expand Character   
  10               10    Shift-F4  = Compress Character 
  11               11    Shift-F6  = Delete Character   
  12               12    F6        = Undo Major Change  
  13               13   ĳ
  14               14    Return/Esc = Save/Reject Char. 
             (Shift-)F8 = (Move)Copy Char.  
        12345678           12345678          Tab = Font 2 (F5 = New Font 2) 
;  F10        = Back to Main Menu 
͸ ĳ
 Sh-F1 = File Info; F9,Sh-F9 = Zoom Char.    File: RUSSIAN.EGA              
 Sh-F10 = Display Font; Alt-V = Video Set    Charac.    ASCII: 167  Hex: A7 
; ;
[    Use <PgUp>, <PgDn> to scroll in file, press <Return> to edit character    ]


The matrix to the left labelled "Font 1" will contain the first character of the
character set which you chose from the directory listing in the main menu and
which enabled you to get this far in the first place.
	The second matrix will initially be empty. You can load a second font file if you
wish with <F5> and this is then displayed in the right-hand box labelled "Font 2"
(the case with the above screen print-out). Indeed if you attempt switching to the
second font with <Tab> when none has been loaded you automatically activate the
directory listing from which you can choose a font for display in the right-hand box.
	The purpose of loading a second font is to enable you to import characters easily
from one font file into another. 

Ŀ
͸ ͸
         Font 1             Font 2             ---  Editing Commands  ---   
    Ŀ   Ŀ     ĳ
   1               1     Insert/Delete  = Set/Del.Point 
   2               2    Ŀ
   3               3      Use PageUp/PageDown to move 
   4               4      to desired character, press 
   5               5      Return to copy into Font 1. 
   6               6                                  
   7               7      Current Character: $ 234    
   8               8                                  
   9               9      Alt-V : Video char. select  
  10               10     Alt-N : No.of chars.to copy 
  11               11                                 
  12               12     Sh-F10: View graphically    
  13               13     Sh-F9 : Just one character  
  14               14                                 
  15               15     Alt-G : Goto character no.  
  16               16     Alt-C : Character set       
            ٳ
        12345678           12345678         ĳ
 Sh-F1 = File Info; F9,Sh-F9 = Zoom Char.    File: PHONETIC.VGA             
 Sh-F10 = Display Font; Alt-V = Video Set    Charac.    ASCII: 230  Hex: E6 
; ;
[    Use <PgUp>, <PgDn> to scroll in file, press <Return> to edit character    ]


To copy a character from Font 2 into Font 1 move first of all with <Page Up>
or <PageDown> to the character in Font 1 which is to be replaced by one from
Font 2. Then press <Shift-F5> or simply <Tab>. You can now page in Font 2 until
you find the character you wish to copy into Font 1 and have the following
keystrokes at your disposal:

	Alt-V   Display Font 2 in tabular form and select a character to copy into
            Font 1.
	Alt-N	Specify the number of characters you wish to copy into Font 1.
	Sh-F10	View Font 2 graphically.
	Sh-F9	View the current character of Font 2 graphically.
	Alt-G	Goto character whose number you specify.
	Alt-C	Display current character set (without selection, cf. Alt-V).

By pressing <Return> you cause the copy operation to be carried out. Note
that you cannot reverse this, so look before you leap (you could of course reject
all changes to the current font when leaving with <F10>, but this would only be
a last resort). Bear in mind also that you cannot edit characters in Font 2; it is
simply loaded as a source for characters you wish to copy into Font 1.
	You can edit a character in Font 1 in exactly the same manner as with the
character editors for printers. Press <Return> to activate the edit mode (cursor
appears and the bordering of the matrix box is displayed in high video). The
editing commands indicated on the right of the screen are similar to those in
LaserEd and DotEd, for instance the Zoom Character command which is
activated by pressing <F9> and produces a screen like the following one.

Ŀ
͸ ͸
         Font 1             Font 2             ---  Editing Commands  ---   
    Ŀ   Ŀ     ĳ
   1               1     Insert/Delete  = Set/Del.Point 
   2               2     Shift+ArrowKey = Repeat Set    
   3               3     Ctrl+ArrowKey  = Repeat Delete 
   4               4    ĳ
   5               5     F2        = Move Character     
   6            Ŀift-F2  = Swivel Character   
   7                                    = Character Mask     
   8                            ift-F3  = Invert Character   
   9                              = Expand Character   
  10                    ift-F4  = Compress Character 
  11                      ift-F6  = Delete Character   
  12                              = Undo Major Change  
  13                      ĳ
  14                            turn/Esc = Save/Reject Char. 
       ĳ                hift-)F8 = (Move)Copy Char.  
        12345678           1234b = Font 2 (F5 = New Font 2) 
;  F10        = Back to Main Menu 
͸ ĳ
 Sh-F1 = File Info; F9,Sh-F9 = Zoom Char.    File: RUSSIAN.EGA              
 Sh-F10 = Display Font; Alt-V = Video Set    Charac.   ASCII: 137  Hex: 89 
; ;
[    Use <PgUp>, <PgDn> to scroll in file, press <Return> to edit character    ]


You can further zoom a character by pressing <Shift-F9>. The screen now
changes and the current character is displayed on its own as a normal-sized
letter of your video adapter character set. Press any key to continue with
VideoEd.
	Apart from this case, the same tips and warnings for processing character
sets apply here, so consult the relevant sections of the description of DotEd for
details.


33.7.1.	Using a mouse to draw characters

If a mouse is physically present in your system and if the necessary mouse driver
has been loaded beforehand, then you can move the cursor in the grid of the
current character via the mouse (this is obviously only possible in Font 1 as only
this is used for character editing). The advantage of the mouse is that you can
move in any direction, and not just in straight lines at ninety degrees to each
other as with the cursor keys alone.
	Both buttons of the mouse are programmed for use in VideoEd. The left
button serves the simple function of setting a dot in the grid; the right button
removes one if the cursor is moved to a point which is already occupied by a
dot. The mouse cursor and the normal cursor are linked to allow you to switch
between keyboard and mouse at ease. Note that you can in theory move the
mouse cursor to any position on the screen but that it can only be used when
within the grid of the current character.


33.7.2.	Saving a font to disk

Of all commands that for saving your work permanently to disk is probably the
most important. Note here that you are presented with three small windows
which are similar to those used for the same command in LaserEd and DotEd.
You can change the current DOS directory by pressing <F8>. Only enter a
bare file name, i.e. do not specify a path for the disk file. The drive and
directory information are gleaned from the value for the present DOS directory.

Ŀ
͸ ͸
         Font 1             Font 2             ---  Editing Commands  ---   
    Ŀ   Ŀ     ĳ
   1               1     Insert/Delete  = Set/Del.Point 
   2               2     Shift+ArrowKey = Repeat Set    
   3               3     Ctrl+ArrowKey  = Repeat Delete 
   4               4    ĳ
   5               5     F2        = Move Character     
   6    <F8> = Change Ŀel Character   
   7                                                  cter Mask     
   8      D:\LINGFONT                                 t Character   
   9                                                  d Character   
  10    Directory for File  ess Character 
  11                                                   e Character   
  12               12    F6        = Undo Major Change  
  13       Ŀĳ
  14        Enter File Name, <Esc> = No Save    Save/Reject Char. 
  15         (Move)Copy Char.  
  16                                              (F5 = New Font 2) 
             F10        = Back to Main Menu 
        12345678     ͸ĳ
 Sh-F1 = File Info; F  = RUSSIAN.VGA                    N.VGA              
 Sh-F10 = Display Fon; SCII: 159  Hex: 9F 
                                     ;
[    Use <PgUp>, <PgDn> to scroll in file, press <Return> to edit character    ]



23.8.	Command Summary

	Function keys and combinations with Shift and Ctrl

	F1			=	Online help
	SHIFT_F1	=	File information
	CTRL_F1		=	DOS call
	F2			=	Move character
	SHIFT_F2	=	Swivel character
	F3			=	Character mask
	SHIFT_F3	=	Invert character
	F4			=	Expand character
	SHIFT_F4	=	Compress character
	F5			=	Load Font 2
	SH_F5,TAB	=	Copy character from Font 2
	F6			=	Undo major change
	SHIFT_F6	=	Delete character
	F7			=	Return to Main Menu
	F8			=	Copy character
	SHIFT_F8	=	Move character
	F9			=	Zoom character, factor 1
	SHIFT_F9	=	Zoom character, factor 2
	F10			=	Save font to disk (and return to main menu)
	SHIFT_F10	=	View entire font

	Additional key settings   (all apply to edit screen)

	ESCAPE			=  Reject changes to character (edit screen)
	ARROW KEYS		=  Move cursor within matrix (edit screen)
	SHIFT + ARROWS	=  Repeat set a dot in matrix (edit screen)
	CTRL + ARROWS	=  Repeat delete a dot in matrix (edit screen)

	CTRL_U / CTRL_D	=  Repeat delete (for up and down directions)
	INS / DEL		=  Set / delete a single dot in matrix
	END				=  Rightmost column in bit map matrix
	HOME			=  Leftmost column in bit map matrix
	CTRL_END		=  Delete character from cursor to right
	CTRL_HOME		=  Delete character from cursor to left
	CTRL_PG_UP	(i)   Delete character from cursor to top
				(ii)  First character in current font
	CTRL_PG_DN	(i)   Delete character from cursor to bottom
				(ii)  Last character in current font

	PAGE_UP		(i)   Top row of bit map matrix (editing character)
				(ii)  Scroll forwards in screen font file
	PAGE_DOWN	(i)   Bottom row of bit map matrix (editing character)
				(ii)  Scroll backwards in screen font file

	ALT_G		Goto a certain character (edit & copy/move)

	ALT_V		Select current character from video set
	ALT_C		Just display character set

Note The <Return> key serves the main function of accepting an option or
confirming an entry (mostly main menu). In addition it is used to conclude a
temporary operation while editing a character, such as copying a character to a
new position, shifting a character around in the bit map matrix, etc. In the latter
case you are always prompted to this effect via a message in the right of the
screen.





14.		Additional video programmes

24.1.	LoadVid

Syntax:	loadvid font_file /h,e,v /t

Naturally after producing a font of your own with VideoEd you will be anxious
not just to see it on the screen within the font creation programme but have it at
your general disposal as well. This is achieved with the present programme.
There are three main types of video adapters supported by LoadVid. For
technical details of these adapters, consult the second section of the present
book.

Hercules mode

By using the /h switch (see call syntax above) you can load a font into the
Hercules Graphics Card Plus assuming one is present in your system. The
font_file parameter must then be represented by a file with the extension .fnt
which was generated by, or supplied with, VideoEd. These files are 4096 bytes
long as opposed to the EGA files which are only 3584 bytes long.

EGA mode

The /e switch is intended to be used when loading a font into the EGA adapter.
Use files with the extension .ega. You notice that these are slightly smaller than
the corresponding .fnt files. If you have a multi-resolution EGA card (capable
of various modes) in your system unit then check that it is in the default EGA
mode before trying to use LoadVid otherwise the font load will probably not
succeed.

VGA mode

By using the /v switch you load a customised font into the VGA adapter. This is
the video adapter present in IBM PS/2 machines. You must use a special VGA
font file (such as those which one can generate with VideoEd) as otherwise the
length of the screen will be incorrect after calling LoadVid.

Display character table

If you specify /t on the command line then after LoadVid has loaded the
specified font you are presented with a screen on which the entire ASCII set is
to be seen. The characters used for this display are those in the font you have
just loaded thus providing a check on whether the operation just carried out was
successful or not. You press any key to return to DOS.





24.2.	VidPerm

Syntax:	vidperm font_file

The intention behind this utility is to render any font loaded into either an EGA
or VGA video adapter permanent, i.e. resistant to a video reset. This is
necessary as so many programmes reset the video adapter of the computer
either in starting or during operation, e.g. when switching from a graphics mode
back to a text mode. If you load a font in the normal fashion with LoadVid then
this customised font is lost after the video reset.
	Video Permanent functions by re-routing a pointer in the Video Display
Data Area in low system memory (just after the BIOS Data Area, at 0040:00a8)
to point not to the tables in the ROM BIOS of the video adapter but to an area
of system memory in which alternative tables, including the customised font
passed to Video Permanent from the command line on loading, are located.
These tables are used anytime a video reset is made. The net effect of this is
that your font will survive any change in video mode which a subsequently
loaded application may make.
	A few points in connection with Video Permanent should be noted. The first
is that it remains in memory after being loaded. This is necessary as the font
buffer with the contents of your customised font must be retained in order for it
to be accessed any time a video reset is made by some programme or other. The
sacrifice you make here is about 12K of system memory (the programme Video
Permanent itself and a 4K memory buffer for the font in question).
	Video Permanent should be loaded immediately after you start your
computer (your best move is to include it in autoexec.bat). If you call it a second
time it installs itself again, and you forfeit another 12K.
	There is no checking on the type of video adapter in your machine as this
would require code which would in turn take up a little more system memory.
As the latter is undesirable, adapter checking has been left out, so make sure
you know what video subsystem is in the machine your operating before calling
Video Permanent.
	Either an EGA or a VGA file (created with VideoEd for example) can be
passed to Video Permanent from the command line. It automatically recognises
which is which and loads the correct number of bytes into the internal font
buffer.





24.3.	InsWP

Syntax:	inswp font_file font_number

There is a basic difficulty with WordPerfect 5.x if one wants to use customised
screen fonts generated with VideoEd, namely that WordPerfect, on starting,
discards any font previously loaded into the video adapter, no matter what type
the latter is (EGA/VGA or Hercules Graphics Card Plus). The solution to this
difficulty is to use the internal font loading capability of WordPerfect to attain
one's customised font.
	The procedure is as follows. Start WordPerfect. Press <Shift-F1>, then "3"
for "Display" and "2" for "Colors/Fonts/Attributes". At this stage WordPerfect
will offer a series of options depending on the installed video adapter.

EGA/VGA adapters. Here one can choose to load an additional font to be
used to display (i) underlining (monochrome underlining is blue lettering on
colour systems!), (ii) italics, (iii) small capitals. Opting for any one of these
options leads to an EGA font file being loaded from disk by WordPerfect. These
fonts are all 3584 bytes long and have the extension .frs (=font resource). The
beauty of this is that you can edit one of these with VideoEd as the latter
recognises them as normal EGA screen font files. You must enter the name of
the file to be edited via the command line for VideoEd or specify the file
template *.frs on the command line (in the manner described above) in order to
be able to access these files from within VideoEd. Change one of the supplied
WordPerfect files to your liking, store it on disk and load it internally with
WordPerfect. Say you changed the small capitals font, egasmc.frs, to include a
Russian alphabet instead and loaded it internally in WordPerfect. The net effect
of doing this is that when you choose the screen attribute "small capitals" via
<Ctrl-F8>, 2, 7 you now have your Russian font at your disposal. You must of
course link up your screen font with a printer font; for details of this consult the
relevant section of the present book.

Hercules Graphics Card Plus. The position with the Hercules Plus adapter is
more intricate. This adapter allows the user to have up to 12 customised fonts
simultaneously on the screen. In WordPerfect this possibility is used to show such
font styles as italics, bolding, shadow, outline, double underline in just that form
on the screen. To see a font of customised characters, you must replace one of
these styles with a font of your own.
	To realise this one must first understand how WordPerfect manages the
Hercules Plus adapter. A single file, hrf12.frs (or hrf6.frs for 6 as opposed to 12
fonts) is loaded into the Hercules Plus adapter. Via the first option of the
"Colors/Fonts/Attributes" menu, "Screen Attributes", you can associate a
certain Hercules Plus font with a certain font style, say double underlining as a
WordPerfect function with a font containing doubly underlined letters. You can
just as well associate a font of customised characters with a certain WordPerfect
formatting function, say a font of phonetic characters with the function "outline
style".
	To do this you must change the supplied file hrf12.frs. The present utility
achieves this task for you. The WordPerfect file consists of 12 Hercules fonts in a
single file. Each is 4096 bytes long. With InsWP you can insert a font, which you
have generated with VideoEd, at a certain position in the multiple font file
8hrf12.frs. To do this enter the command line something like the following:
 
	inswp russian.fnt 4 
 
This inserts a Hercules Plus font russian.fnt, produced with VideoEd, into the
position of the fourth file in the WordPerfect font file hrf12.frs. Note that the
latter must be in the current directory as must the font file to be inserted. It is
possible to insert several fonts into the WordPerfect file.
	Now start WordPerfect. Press <Shift-F1>, 3, 2, 2, 1. This will select the 12
font mode for the Hercules Plus card and enter the screen attribute selection
menu. Move to the formatting function you wish to customise. Press the space
bar until the word "Sample" on the right-hand side of the screen is displayed in
the font which you just inserted; continue for other formatting functions, if so
desired. Terminate with <F7> and return to word processing. Your customised
font or fonts are now at your disposal (and remain so between word sessions
with WordPerfect).
	Note. Changing hrf12.frs means that the version you now have is not
identical with the original. Should you inadvertently overwrite the copy of this
file on your hard disk, then copy the original from the WordPerfect distribution
disks ("Fonts/Graphics" diskette) back onto the hard drive.





24.4.	VideoSet

Syntax:	vs

This is a utility which offers users information about the current video system on
a computer and allows you to configure this. Basically it allows you to load
user-defined fonts into the video adapter. Depending on what adapter you have
one or more of the font loading options will be available.
	VideoSet attempts to recognise the type of video adapter in your computer
correctly. However due to the wide variety of adapter clones available a wrong
diagnosis may be made. In such cases you can manually override the
determined video adapter type and thus have access to other options in
VideoSet. Be careful when doing this not to choose the incorrect adapter type as
the results are then unpredictable.
	Note that any font loaded or line mode chosen from within VideoSet
remains active after you return to DOS so that you can use the programme to
setup the video adapter in a mode which which you require for a different
programme assuming that the latter does not reset the video adapter on
starting.





15.		SetKey

Syntax:	setkey keyboard_file

25.0.		Introduction

SetKey is simplicity itself. When you start it you are faced with a screen in which
two sets of keyboard characters are displayed on screen, one for the lowercase
symbols and one for the uppercase ones. The default layout is that of an
American English keyboard.

Ŀ
 SetKey  -  Customise your keyboard layout the easy way!            AKEYB.EXE   


 Default Layout ͸
                                                                 
 Uppercase Letters  
                                                                 
     !    @    #    $    %    ^    &    *    (    )    _    +    
     Q    W    E    R    T    Y    U    I    O    P    {    }    
     A    S    D    F    G    H    J    K    L    :    "    ~    
     |    Z    X    C    V    B    N    M    <    >    ?         
                                                                 
 Lowercase Letters  
                                                                 
     1    2    3    4    5    6    7    8    9    0    -    =    
     q    w    e    r    t    y    u    i    o    p    [    ]    
     a    s    d    f    g    h    j    k    l    ;    '    `    
     \    z    x    c    v    b    n    m    ,    .    /         
                                                                 
 F5 = Next Window ;



                   Letter No.  1  Original: ! Substitute: !                     
 <F1> Help; <F5> Page; <F8> Write to text; <F10> Save keyboard; <F7,Alt-F4> End 


With the Arrow keys (or <PageUp>, <Page Down>) you can move within the
keyboard template (the inverse video block wanders across both sections of the
keyboard template). To change the value of a particular key, press <Return>.
You will notice that a cursor appears and you can now enter a single character.
It may well be that to access the screen font symbol to be laid on the current key
in the screen template you will have to press the <Alt> key and type in the
ASCII code value of the screen font symbol as a number on the numeric keypad
to the right of the keyboard. After entering the code value, do not press the
<Return> key as the entry is automatically terminated by SetKey.
	With one of the arrow keys you can now move to another character. By
pressing <F10> you can save the present layout and return to DOS; using
<Escape> instead leads, as one might expect, to this layout being abandoned
(not saved to disk); this must be confirmed by the user.
	Five grids in all are available within SetKey. These correspond to the five
character tables which can be activated by the keyboard driver akeyb.exe.

	(1)	American English keyboard layout	(full, with shift)
	(2)	Customised keyboard layout		(full, with shift)
	(3)	<Right-Alt> keyboard layout		(half, no shift)
	(4)	<Left-Alt+Ctrl> keyboard layout	(half, no shift)
	(5)	<Shift+Alt+Ctrl> keyboard layout	(half, no shift)

Note that only the first two layouts cover a full complement of keys (one normal
set and another when the <Shift> key is depressed). The remaining three are
half sets for each of which you must press one or more status keys.
	To view other grids, simply press <F5>. The next grid appears and can be
edited. For the next one press <F5> again. When you press this key and the
last grid is already displayed, the programme loops back to the first layout
again, i.e. the default layout.
	Selecting symbols via the current video character set. Instead of pressing
<Return> and entering the numerical value of a character to be assigned to a
particular key setting you can press <Alt-V>. This activates a chart which shows
the current video set.
	Here you move the highlight bar to the character you wish to set the
current key to and press <Return>. This function is analogous to that in
LaserEd. With <Alt-C> you simply view the current character set without
selecting any symbol for a key setting.
	<F8> Write key settings to text file. For documentary purposes it is
frequently expedient to store the settings for a keyboard driver to a text file
which one can examine at one's leisure afterwards. Pressing <F8> achieves this
in SetKey leading to a text file being generated which looks something like the
following.


Key Settings for Default Plane

1 1    2 2    3 3    4 4    5 5    6 6    7 7    8 8    9 9    0 0    - -    = =
q q    w w    e e    r r    t t    y y    u u    i i    o o    p p    [ [    ] ]
a a    s s    d d    f f    g g    h h    j j    k k    l l    ; ;    ' '    ` `
\ \    z z    x x    c c    v v    b b    n n    m m    , ,    . .    / /
! !    @ @    # #    $ $    % %    ^ ^    & &    * *    ( (    ) )    _ _    + +
Q Q    W W    E E    R R    T T    Y Y    U U    I I    O O    P P    { {    } }
A A    S S    D D    F F    G G    H H    J J    K K    L L    : :    \ "    ~ ~ 
| |    Z Z    X X    C C    V V    B B    N N    M M    < <    > >    ? ?

Key Settings for Customised Plane

1 1    2 2    3 3    4 4    5 5    6 6    7 7    8 8    9 9    0 0    -     = '
q q    w w    e e    r r    t t    y z    u u    i i    o o    p p    [     ] +
a a    s s    d d    f f    g g    h h    j j    k k    l l    ;     '     ` ^
\ #    z y    x x    c c    v v    b b    n n    m m    , ,    . .    / -
! !    @ "    # ?    $ $    % %    ^ &    & /    * (    ( )    ) =    _ ?    + `
Q Q    W W    E E    R R    T T    Y Z    U U    I I    O O    P P    {     } *
A A    S S    D D    F F    G G    H H    J J    K K    L L    :     \     ~ 
| '    Z Y    X X    C C    V V    B B    N N    M M    < ;    > :    ? _

Key Settings for Right Alt Plane

1     2 ?    3 ?    4     5     6     7 {    8 [    9 ]    0 }    - \    = ?
q @    w     e     r     t     y ?    u     i     o 	    p     [ ?    ] ~ 
a     s     d     f ?    g ?    h     j     k ?    l     ; ?    ' @    ` |
\     z ?    x ?    c     v     b     n     m ?    ,     .     / 

Key Settings for Alt + Control Plane

1     2 ?    3 ?    4     5     6     7 {    8 [    9 ]    0 }    - \    = ?
q     w     e     r     t     y ?    u     i     o     p ?    [ ?    ] ~ 
a     s     d     f     g     h     j     k     l |    ; ?    ' @    ` |
\     z ?    x     c     v     b     n     m     ,     .     / 

Key Settings for Shift + Alt + Control Plane

1     2 ?    3 ?    4     5     6 ?    7     8     9     0 ?    -     = ? 
q     w     e     r     t ?    y ?    u     i     o     p     [     ] ?
a     s     d ?    f     g ?    h     j     k     l     ;     ' ?    ` ?
\ ?    z ?    x     c     v     b     n     m     ,     .     / 


25.1.	Creating a new keyboard driver

SetKey does not generate a new keyboard driver but alters an existing one.
With LinguaFont a driver is supplied, called 8lkeyb.exe. This driver is intended
as an input for the drivers users design themselves. To create such a driver, the
first step is to copy the normal driver. Copy it as follows (assuming that you wish
to create a Russian keyboard driver, for argument's sake).

		copy akeyb.exe keyruss.exe

You can now edit the newly created file keyruss.exe with SetKey by entering the
following command line at the DOS prompt and pressing <Return>.

		setkey keyruss.exe

In order to be successful in editing such a driver you would have to define a
Russian character set (for example with the font manager LinguaFont by the
present author) and load it as a screen font into your video adapter. You can
then devise a layout which enables you to access the symbols of your Russian
screen character set from the keyboard.


25.2.	Managing keyboard drivers

Remember that the keyboard driver akeyb.exe, which is the source of all
keyboard drivers which users may create and then alter with SetKey, allows
two full keyboard layouts. You switch between layouts by pressing <Ctrl> and
<Alt> together and then pressing <F1> or <F2> to activate one layout or the other.
	Note a few final points in connection with the keyboard drivers you can
design with SetKey.
	1)  Initially when you create a new keyboard file by copying the original
keyboard driver supplied with SetKey, the default keyboard layout is duplicated
in the customised keyboard layout.
	2)  There may be one or two peripheral letters of the keyboard (diacritics)
which cannot be re-defined for a customised keyboard layout.
	3)  When you first load a keyboard driver it is the default layout which is
active; you may then switch between layouts as follows:

 		Ctrl - Alt + F1   =  Default keyboard layout
 		Ctrl - Alt + F2   =  Customised keyboard layout

	4)  If you wish the customised layout to be active initially or if you wish to
activate it with the keyboard driver already resident in system memory then
enter the number "2" (= 2nd. layout) as a command line parameter as in:

		lkeyb 2	

	5)  By default the <CapsLock> key functions as just that: it converts
lowercase letters to uppercase ones but nothing else and, importantly, is not
turned off by the user pressing the <LeftShift> or <RightShift> key. However,
if you wish to have the second type of situation (that found with so-called
multifunction keyboards with PCs nowadays) then enter /s as a command line
parameter and this will then hold.

		lkeyb /s


25.3.	Loading a keyboard driver

A customised keyboard driver is loaded by simply entering its name at the DOS
prompt and pressing <Return> as follows (with the exemplary Russian
keyboard driver).

		keyruss <Return>

This keyboard remain resident in system memory and is used by DOS until you
either reset the computer or load another keyboard. What is important to
remember here is that the keyboard is independent of any application
programme (word processor, database management system or whatever) which
you might subsequently load and is, of course, present on the DOS level as well.
Bear the latter fact in mind and change the keyboard setting to the default
layout (American English) when in DOS (press Ctrl-Alt+F1) as you will
probably never need a customised layout when working on the operating system
level.
	Be careful!  When using a customised keyboard driver, the customised
layout (reached via Ctrl-Alt+F2) will contain symbols from the upper ASCII
area which will have been re-defined for the screen by the user so that they
display the special symbols he/she requires. You can use this alternative
keyboard layout for entering text but not for entering commands in the
programme you are using. Say, for example, a particular command in your word
processor requires that you press <F4> followed by the one of the letters "y/n"
(a common situation). With the customised keyboard layout, the <F4> key
reacts normally, but when you strike the "n" or "y" key you do not convey "no" or
"yes" to the programme. Instead the key which is to be found on the "n" or "y"
keys in the customised keyboard layout is sent to the programme and the latter
will most certainly not be able to interpret this in any meaningful way. At best,
the programme simply forgets you ever started the command and returns you to
the text, at worst it does something which is the reverse of your intention. The
moral of the story is: switch back to the default keyboard layout before issuing
commands in a programme.






16.	Using character sets with data processing software

The LinguaFont set is intended to provide the user with a complete system for
processing foreign language alphabets on the PC. The screen display, the
keyboard layout and the printer output have been catered for by various
programmes of the set. There remains one part of this whole complex which the
user must manage him/herself. To explain this consider the starting point for
the average user.
	One has one's favourite word processor with which one writes all one's
texts. Along comes LinguaFont and lo and behold you have the screen and
printer fonts you have always wanted at your fingertips. You can even design
your own programme-independent keyboard layouts. You then write your first
text in the language of your choice, print it via the printing function of your
processor and nothing happens. Why?
	Let me give my ideal user the benefit of the doubt and assume that he/she
has loaded the download file which matches the screen file being used into the
printer correctly (before starting a print operation). Granted that, one must pay
attention to two further aspects of font management which the user must look
after him/herself.

	1)	Activation of download.
	2)	Translation of screen to printer characters.

	1)  You must communicate to your printer that the symbols which you
know are special font symbols are to be taken from the download memory area
of the printer and not from the normal firmware font in the ROM of the printer.
To achieve this you must embed the command sequence for the printer in your
text which, in simple words, tells the printer to enter the download area and
fetch the next symbol from there. This is the sequence ESC % 1 (= "download
on" in the Epson Esc P printer command language, see second section of this
book). The printer is told to leave the download area with the sequence ESC %
0 (= "download off" in the Epson ESC P printer command language). At this
stage you may well ask why I did not do this for you in advance. The answer is
that I do not know what software the users of LinguaFont are going to be
running. However, I have taken a step towards helping you by explaining in the
following section with the example of WordPerfect how this works for a certain
word processor.
	2)  If you look at the screen fonts which are supplied with LinguaFont then
you immediately notice that all the special characters are stored in the upper
ASCII area (and the lower area is left untouched). Now most printers have only
a download capabilitiy of 128 characters which is in practice further reduced to
94 because the characters below $32 are printer control codes which should not
be defined for a download font (with the possible exception of ASCII $3 - $6).
What is most important, however, is that the download symbols of the printers
have ASCII address numbers which lie in the lower area, i.e. under ASCII $128.
Take a fictitious example. I define a screen symbol which is shaped like a Greek
epsilon facing backwards (an actual symbol in phonetics). For the printer I also
define the symbol with DotEd (assuming a dot matrix printer). Now within the
character editor for the printer I must choose a symbol in the lower ASCII area,
say $101 (lowercase "e") for mnemonic reasons while the screen symbol I
redefine has the ASCII number $238 (capital Greek epsilon); I cannot use $101
in the screen file as this would replace normal "e" which is obviously undesirable
as this is needed the whole time. The result of this situation is that the screen
symbol has the upper ASCII address $238 and the printer symbol has the lower
ASCII address $101. How do I link the two? By means of what is called a
character translation table. This is a table in a word processor (or other type of
software) in which one can specify that certain screen symbols are to be
changed ("translated") to other values before being sent to the printer.
	If you now take care of both of these requirements, activation of the
download and translation of screen symbols before printing, then the symbols
turn up correctly on paper. The specifics of how this is done in various types of
programme are offered below.


26.1.		Word processors

36.1.0.	Download activation

Embedding of the necessary command for activating the download can be
achieved in a variety of ways. Some require that you are quite versatile at
patching programmes. These roundabout methods are ignored here as one
cannot assume that the knowledge necessary for this is present with the majority
of users of LinguaFont.
	The problem is solved most easily if your word processor allows you to
embed a printer command directly into the text (which is the case with
WordPerfect). All you do is call the particular function and enter ESC % 1 (=
"download on") without forgetting to turn it off (with ESC % 0 (= "download
off")) after the special symbols or else all the following text will be printed from
the download area, producing garbage where normal text is expected.
	There is a more elegant solution to the embedding problem if your word
processor allows the use of macros. In the case of WordPerfect this is so. For the
purposes of illustration two macros for "download on" and "download off"
(called 8alti.mac and 8alto.mac) are included with LinguaFont (on the Font
Diskette). All they do is to embed the necessary sequences without the user
having to call the specific function directly: you simply press <Alt-I> for
"download on" and <Alt-O> for "download off". If you check your text
subsequently with <Alt-F3> (= "reveal codes") then you see that the printer
commands are now contained in your text.
	But what if you are using word processing software which does not cater for
printer command embedding in this way? There is still a solution. It involves
patching the printer driver of the programme. What you must do in this case is
edit the printer driver (if you cannot do this with the software, throw it away).
Then decide on some formatting feature which you can do without (say,
strike-through or double underline) and enter the sequence for "download on"
(ESC % 1) and "download off" (ESC % 0) where the sequences for turning this
feature on and off stand. Note that various editors require that you enter this
sequence in decimal, others that you use hex notation; check what applies to
your word processor and enter the sequences accordingly; here they are in the
various forms:

		Download on:		ESC % 1 
		Hexadecimal:		IB 25 01 
		Decimal:			27 37 01 
	
		Download off:		ESC % 0 
		Hexadecimal:		IB 25 00 
		Decimal:			27 37 00 

After altering the printer driver in this way you will probably have to take a
further step to generate a new printer driver. With Microsoft Word you must
compile the printer driver text (which you can edit with Word and store without
formatting information) by means of the supplied utility 8makeprd.exe. Choose
the option "T" when for retrieving the text of a printer driver from the compiled
form and the option "P" when you wish to re-compile the altered text. For
further details, consult your programme documentation.
	Now return to editing a normal text. Mark the stretch of text which uses special
font symbols with the feature you have adapted for download activation (say,
double underline). This works just like the macros of WordPerfect. It's a little
clumsy but the effect is the same. With the present version of Microsoft Word
it is practically the only solution to download activation problem.


36.1.1.	Character translation

The next requirement, character translation, is dealt with by editing the printer
driver. Somewhere in the printer driver text there will be a table which acts as
screen input and printer output. Enter the printer download addresses correctly
at the points in the upper ASCII area where your special screen symbols lie.
Then the matter is settled. Here are a few fictitious examples:

	Screen values		Values sent to the printer
		.				.
		.				.
		$238		->		$101
		$239		->		$37
		$240		->		$68
		.				.

Exactly how you enter values into the table of your printer driver will depend on
the software you are using. The dollar signs in the above example merely
indicate that the values are decimal and not hexadecimal. Some printer drivers
require that hex notation be used for values in translation tables; others allow
you to use ASCII symbols (i.e. not numbers). Check this carefully!
	For more details about dealing with download fonts and software, consult
the relevant sections of part two of this book which offer more technical details.
	Character translation may not be necessary if you are using a dot
matrix printer with an upper ASCII area download. In this case you can locate
the download symbols (via DotEd) at the same addresses which you use for the
screen symbols. Then only download activation is required in your text.
	Character translation is usually necessary with laser printers also as
customised fonts should contain characters in the lower ASCII area to avoid
complications with your data processing software. You can access your
customised font by associating it with a certain font from within your word
processor.


26.2.	Database managers

You may very well have database management software with which you wish to
process data containing customised screen symbols, say you wish to build a
literature database for Russian. The two requirements for management of
special symbols remain: download activation and character translation must be
taken care of. For the purposes of illustration, I will discuss briefly the situation
with dBASE which can be taken to apply to other sophisticated database
managers such as Borland's Paradox.
	In order to embed printer download activation commands into a dBASE
database you must programme dBASE. The interactive mode makes no
provision for this. You direct all output to the printer with the two commands:

	Set device to printer
	Set print on

Then you issue a string with the help of the @ X,Y SAY ... command as follows:

	@ 0,0 SAY CHR(27) + "%" + CHR(1)

The row and column coordinates specified after the at-symbol would naturally
vary depending on where on the page you are actually printing. But in principle
it is irrelevant as the sequence is not printed but is merely a command for the
printer. Once this is issued all subsequent printing is done with characters from
the download area of the printer. To turn the download off include the
following line in your source code at the relevant position:

	@ 0,0 SAY CHR(27) + "%" + CHR(0)

Do not forget to turn off the printer when finished printing with the commands:

	Set device to console
	Set print off

This might seem like a very complicated way to activate the printer download.
However, if you are used to programming you will realise that you only have to
do this once. You can construct a procedure which turns the download on or off
(the direction being decided on by a parameter which is passed with one of two
values) and simply call the procedure anywhere in your source code where it is
needed.
	If you neither programme in dBASE nor are using a compiled application
which explicitly allows for downloading then you must be content with
processing customised screen fonts without printing them directly from within
dBASE. You could, however, export a database to your word processor and
print it from there.
	The question of character translation is easily solved with dBASE as it has a
conversion table in the form of an additional file (dbprint.ptb) which it consults
on printing a database. You can edit this file with a utility supplied with dBASE
and enter the printer download addresses at the relevant screen addresses in the
input column of the translation table.





17.	Supplementary programmes

Apart from the three character editors, the LinguaFont set contains a number of
utilities which are intended to carry out secondary functions which are necessary
during font management.

		1.1.		LoadDot
		1.2.		LoadNec
		1.3.		LoadLas
		2.1.		NewDot
		2.2.		NewLas
		3.1.		TranDot 
		3.2.		TranLas 
		4.1.		Upgrade
		4.2.		DotScr
		4.3.1.		Italic
		4.3.2.		Bold
		4.4.		Size
		5.1.		CtrlDot
		5.2.		MemDot
		5.3.		TestDot
		6.			Intro
		7.			Desktop
		8.			BatEd

Note that these programmes may be required by various options in the main
menu of the character editors but are not necessary if you simply want to
process (or create) a character set (for screen or printer). Their functions are
described briefly below.





37.1.1.	LoadDot

Syntax:	loaddot font_file [/t(2)]

The easiest way to load a download font file into your dot matrix printer is to
use the present programme with the file you wish to load given as the font_file
parameter. The programme carries out various checks, such as whether there is
a parallel port in the computer, if there is more than one you are asked to
choose one. LoadDot furthermore checks that the printer is on-line and only
then starts downloading the font file. A message is issued when the operation is
completed.
	By using the /t switch (which is optional) you can force LoadDot to also
print a table of the characters in the file you have just downloaded. For
documentation purposes it is useful as the character addresses within the
download file are immediately recognisable.
	Note.  The font file specified must be a valid dot matrix printer download
file generated with DotEd. If the font file has been produced in any other
manner then you must ensure that the file does not contain an ASCII $26
character anywhere as this is treated as an "end of file" signal by the printer and
thus any characters in the file after this point will simply be printed instead of
being stored as the bit patterns of downloaded characters.





37.1.2.	LoadNec

Syntax:	loadnec font_file /l,u,b [/t(2)]

This programme has been specifically designed for use with the NEC Pinwriter
Plus series of printers. A download capacity of 256 characters is to be found
with the latter. The area can be treated as (i) 2 separate areas of 128 characters
or (ii) one large area of 256 characters. By using a switch you can specify the
download mode and the area to be used for the downloaded characters. The
key to the switches is as follows:

	/l	=	128 character font to be loaded into lower ASCII area
	/u	=	128 character font to be loaded into upper ASCII area
	/b	=	256 character font to be loaded into a single area covering
			the entire ASCII set

The addressing of downloads with the Pinwriter Plus series is somewhat
different than with simply 24 dot matrix needle printers. There are two
additional commands encoded as so-called "form separator" sequences (i.e. they
begin not with ESC, $27, but with FS, $28). The first of these communicates to
the printer that either a single download area is desired (256 characters) or 2
blocks of 128 characters.

	FS W 1	($28 $87 $01)		256 character download
	FS W 0	($28 $87 $00)		128 character download (x 2)

If you choose the second sequence and load two 128 character download fonts
into the two halves of the download area (by means of LoadNec) then you can
later address these areas via the second of the special "form separator"
sequences for the NEC printers.

	FS X 1	($28 $88 $01)		Activate lower download area
	FS X 0	($28 $88 $00)		Activate upper download area

The above commands must be embedded into your data processing software
(e.g. word processor) so that the printer is sent the correct activation sequence
just before characters which are to be taken from the one download area or the
other are printed. For further details on these commands (including
programming examples), consult the technical documentation to your Pinwriter
Plus printer.
	The second switch with LoadNec is the same as that for the previous
programme (it prints a test table of the lower and possibly the upper ASCII
area, see above for details).





37.1.3.	LoadLas

Syntax:	loadlas font_file id_no [/t(2)]

This is the corresponding programme to the above, but for laser printers. An
extra parameter is necessary here as each font loaded via LoadLas is also
assigned a font identification number (see discussion of this in the section on
LaserEd). Basically the font identification number can be any digit in the range
0 through 32767. The number is specified as a plain number (no preceding slash
or dash as with other switches used for programmes called from the commmand
line).
	As you cannot print individual characters from within LaserEd (contrast
this with the situation within DotEd) this is the only way you can see the results
of your character editing on paper before you use a character set during word
processing.
	The table switch can be entered as /t or /t2 on the command line. The
latter specification forces LoadLas to print the upper ASCII area on a second
page; normally it only prints those symbols from the lower ASCII area on a
single page.
	The parameter font_file refers to a valid download file generated with
LaserEd or any soft font file which conforms to the Hewlett Packard format.
Various messages may be issued by LoadLas if you have more than one parallel
port in your computer or if your printer is not on-line or if the programme
cannot find the specified download font file.





37.2.1.	NewDot

Syntax:	newdot source_font target_font

For the user who wishes to starting creating his/her own fonts this is the most
important programme. With it he/she can import characters from one of the
download font files supplied with the LinguaFont set into a new file of his/her
own.
	The parameters 8target_font may be an existing download file but need
not be. If the file does not exist already it is created. Here you immediately
recognise the possibility of importing characters into an existing download font
file or creating one afresh.
	Assume for the description of the programme below that I am using the
supplied file old_eng.dl1 as source and wish to create a new target file new.dl1
with some of the characters of the source file. Consider the following screen
layout.

Ŀ
                                                                             
                                                                         
                                                                       
                                                           
                                   
                                                           
                                                           
                                                          
                                                           
                                      
                                               
                                                                          
                                                                          
                                                                             
ĳĳ
                                                                             
 Font Type:  Pica [10 CPI]              Font Type:    Pica [10 CPI]          
 Font Size:  93 Chars. [7268 Bytes]     Font Size:  5 Chars. [463 Bytes]     
                                                                             
 Current Character:  ]  93 5D           Current Character:  1  49 31         
                                                                             
 Source File: OLD_ENG.DL1               Target File: NEW.DL1                 
                                                                             


The screen is divided into two halves. On the left the first character of the
source file can be seen. By using <[Ctrl-]PageUp> or <[Ctrl-]PageDown> one
can page in this file or use <Alt-G> to go directly to a character. Note that the
left half of the bottom line of the screen is displayed in inverse to show that the
left half of the screen (source font) is active (this is visible on the screen but not
on the present printed page).
	Activating source or target font.  Use the <Tab> key to switch to the right
half of the screen (target font). By means of the same keystrokes as with the
source font (<[Ctrl-]PageUp> and <[Ctrl-]PageDown>) you can move in the
target file. To begin with, the file will be empty so that paging in the file just
leads to a counter in the bottom line of the screen increasing or decreasing.
	Importing characters.  To copy characters from source to target activate the
source (with the <Tab> key) and move to the character you wish to copy into
the target file. Press <F8>. The first thing you notice is that the right half of the
screen becomes active (check the inverse display in the bottom line of the
screen!). You can now move in the target file to the ASCII value to which you
want the source file character copied. Press <Return> when you have reached
this. The character from the left is duplicated on the right and the left half of
the screen becomes active again so that you can continue paging in the source
file. Repeat this procedure as many times as there are characters you wish to
import from the source into the target file.
	If you press <Shift-F8> then you are asked how many characters NewDot
is to transfer from left to right. By these means you can copy a series of
characters at one go. Note that may not page through the target font with this
keystroke.
	You can see how many characters you have in your target file in the status
box at the bottom of the right half of the screen. The byte number of the target
file is incremented when you copy characters from left to right in the screen.
However, for internal technical reasons the byte count may be off by a few
bytes; but the number of character is always accurate.
	Viewing entire font.  To have a compelete font (either source or target)
displayed, press <Shift-F10>. The screen changes and a graphic representation
of the entire current font is offered. Press any key to return to the previous
screen. Depending on which half of the screen is active (check to see which half
of the bottom line of the screen is displayed in inverse) either the source or the
target font will be shown.
	Online help. Pressing <F1> within NewDot leads to an online help text
being displayed.
	Saving new download font file. To exit NewDot and save the target file press
<F10>. The file is written to disk and you are returned to DOS. If you wish to
abandon the changes made, press <Escape>. To avoid accidental use of the
<Escape> key, you must explicitly confirm exiting without saving the target
file.





37.2.2.	NewLas

Syntax:	newlas

This is the equivalent programme for laser printers. It is similar to NewDot in
command structure and user interface. However it is somewhat more
comfortable inasmuch as it provides you with a directory listing from which to
choose the source and target font. Note in this connection the two special
commands which you have at your disposal on the file lister level of this
programme.

F4 Drive. Allows you to choose a new drive from the list of logical drives on
your computer system.

Sh-F4 File template. Permits the specification of a new file template. After you
do this the file listing is refreshed to show just those files which match the
template you entered. Note that if no files match then nothing is displayed.
Revert the file template to an earlier value or enter a new one by pressing
<Shift-F4> again.

Ŀ
                  F4 = New Drive    Shift-F4 = File Template                   
                                                                               
                                                                               
                 ͵ FileName Ext.   Size    Date    Time  ͸                 
                    BALKAN  .LPF    3178  01/04/93  10:10                    
                    BALTIC  .LPF    2497  01/03/93  17:44                    
                    CLASS_GR.LPF   12285  01/07/93  15:16                    
                    CZECH   .LPF    4460  01/04/93  08:13                    
                    EMPTY   .LPF    3599  01/07/93  13:25                    
                    EXT_CYR .LPF    5554  01/04/93  08:10                    
                    HEBREW  .LPF    3931  01/05/93  15:19                    
                    HIST_ENG.LPF    2688  12/18/92  12:34                    
                 ͵ Files:  32, Size:  323669 Bytes ;                 
                                                                              
                             -   Select Font 1   -                             
                                                                              
                     ---     D:\SRC\TC\AFONTS\LASER     ---                    
                                                                              


After you have chosen the source font, you are asked if you wish to start a new
font (press <F5>) or choose an existing one from a directory listing (press
<F10>). If you select a font as target then characters are added from the left
(source) to the right (target).

Ŀ
                                                                              
               Ŀ              
                                                                            
                 Font 1:  PHON_TMS.LPF                                      
                                                                            
                 For Font 2, press one of these keys:                       
                                                                            
                 F5: Start new font; F10: Load existing one                 
                                                                            
                             
                                                                              


If you are viewing a file with very large letters, the edges may not be shown on
the screen. However, enough of the symbols are to be seen for you to recognise
characters clearly.

Ŀ
Ŀ
                          
                                              
                                                              
                                                                 
                                                                  
                                                                  
                                                                 
                                                                 
                                                               
                                                             
                                                           
                                                                
                                                                 
                                                                 
                                                                   
                                                                   
                                     
                                  
                                                              
ĳĳ
 Font Size:  104 Chars. [13469 Bytes]   Font Size:  96 Chars. [15314 Bytes]  
 Current Character:  +  43 2B           Current Character:  L  76 4C         
 Source: PHON_TMS.LPF                 Target: RUSS_TMS.LPF               ٳ


Pay attention to the fact that the font header of the source file is grafted onto
the target font. If the target font already contains characters which are not of
the same point size as the source font then the new version of the target font
will be a corrupt laser printer font which will not upset LaserEd so much as your
laser printer which will probably ignore any commands to print characters from
this file when you want to print characters from this font with your data
processing software later on.


47.2.2.1.	Function key settings

	[Ctrl-]PgUp,PgDn	Navigate in either font
	Shift-F10			View font 1 or 2 graphically
	Tab					Switch from one font to the other
	F8					Copy character from font 1 to font 2
	Alt-G				Goto ASCII number to accept character
	Shift-F8			Copy a number of characters from left to right
	Ctrl-F7				Page through colour combinations
	F10					Save font 2 (on right of screen) to file
	F7,Alt-F4			Exit without saving additions to font 2





37.3.1.	TranDot

Syntax:	trandot font_file /10,12,p

If you have generated a download font in a certain pitch with DotEd and now
wish to have the same set of symbols in another pitch, then you do not have to
create a new font to do so. It is enough to run the download file through the
present programme to have its pitch changed.
	The parameter 8font_file must refer to a valid download file generated with
DotEd. The switch after the file name specifies whether you are translating a
Pica source to an Elite target (use the /10 switch) or an Elite source to a Pica
target (use the /12 switch) or a Pica source to a proprotional target (use the /p
switch).
	TranDot changes the formal features of a download file (file extension, font
header) but not the shapes of the characters it contains. It is up to the user to edit
the altered file with DotEd and expand or compress the symbols it contains
so that they resemble the new pitch in size.





37.3.2.	TranLas

Syntax:	tranlas source_file target_file

This performs a similar function to the previous programme. Note an essential
difference: TranLas does not change one and the same file but grafts
information from a source file to a target file both of which must be valid
download fonts generated with LaserEd.
	Although you have been warned on several occasions (see various sections
above) to ensure that the font header (the first 64 bytes of a laser printer
download file) matches the characters defined in a file, the purpose of the
present programme is to deliberately flout this maxim so that you can formally
translate one file type into another. Say, for example, you have a 10 point Times
Roman font with customised characters (a foreign language font of some sort,
for example). You wish to create a 14 point file to match (for headings and
titles, for instance). Obviously the new font is to include the same characters as
the source font. The first step is to copy the source font to a new name so that
you have a duplicate of it as in the following example:

		copy lang_10.lpf lang_14.lpf

This gives you a new version of the original file. Now take a 14 point file of
some sort (if you do not have one, then create an empty one with LaserEd) and
use it as the source file with TranLas as in:

		tranlas old_14.lpf lang_14.lpf

What this does is to graft the font header from the first file (which is a genuine
14 point file) onto the second file which up to this only referred to 14 point size
in its name but was internally a 10 point size file deriving from lang_10.lpf.
	With this move you have formally converted a file of one point size into
another. Of course the symbols in the new file are not automatically larger. This
has to be done manually by the user in a later work session with LaserEd.





37.4.1.	Upgrade

Syntax:	upgrade source_font target_font

Computer users who have a laser printer will in all probability have started out
with a dot matrix printer and so may have customised character sets for the
latter type of printer which they would like to transfer to a laser printer format.
The present programme permits just that.
	The source file for Upgrade is a dot matrix printer download font and the
target font is the laser printer font which is the output of the upgrading
operation. If the target file already exists on disk you must confirm overwriting
it.
	Once you have transferred a file you must edit it manually. The automatic
point size which Upgrade gives to the laser printer files it produces is 12 and the
typeface is Times Roman. Naturally dot matrix printer fonts will not be large
enough when transported to a laser printer environment (as the dot grid they
use for characters is coarser than that for laser printers). You notice this when
you load the resulting file with LaserEd. The characters must be expanded
somewhat. This can be achieved quite easily by pressing <F4> when in the edit
mode and then using either the vertical and/or horizontal arrow keys depending
on the direction in which you wish to expand a particular character. Note that
you must also thicken the stems of letters to achieve the correct proportions of a
true 12 point Times Roman font. For the purpose of comparison take a look at
one of the laser fonts supplied with LinguaFont. This should give you a good
idea of what the shapes of such a font are like. With LoadLas you can of course
print out a table to see the result on paper.
	The target font you create may not be formally what you want for your
laser printer. Say you would like a 10 Helvetica font instead of a 12 point Times
Roman. You achieve this very easily by taking the output file from Upgrade and
running it through TranLas which allows you to change the formal
characteristics of a laser font (i.e. alter the font descriptor at the beginning of
the font file) from one type to another. Remember that the characteristics
specified for the entire font in the font descriptor are those which are used on
printing when the laser printer receives a command to print characters from a
certain font unless your data processing software uses a font identification
number to activate a particular font, see the discussion in the section on
LaserEd for details.






37.4.2.	DotScr

Syntax:	dotscr input_file /d,s

In order to allow you to convert a dot matrix screen font to a screen font and
vice versa a new utility has been included in the LinguaFont set. The parameter
input_file in the command syntax stands for a character set file. If the switch /d
is used then the character set file must be a dot matrix font (produced with
DotEd) and a corresponding screen font is generated. If you specify the switch
/s then the character set file must be a screen font for either an EGA/VGA
video adapter or the Hercules Plus Graphics Card. The programme determines
internally which type of font the user specified.  	When generating a dot matrix
printer font from a screen font, a non-proportional Pica (10 CPI) font is the
result; if the source font is a printer font then the output font is an EGA font.
The latter can be converted to a Hercules Plus font with VideoEd if so desired.
The quality of the output fonts generated by DotScr varies. Printer fonts derived
from screen fonts are better than the opposite. In each case you must edit the
characters manually to attain an acceptable final result. The need to produce
fonts via DotScr should not be that great, however, as a number of screen and
printer fonts are supplied with LinguaFont anyway and you can mix and
combine these at will with either the respective characters themselves or (for
printer fonts) with the utility NewDot.





47.4.3.1.	Italic

Syntax:	italic font_file

The purpose of the present programme is to italicise a font. What it does is to
change an entire font in the manner in which you can alter an individual
character by pressing <Ctrl-F4> within LaserEd. The slant factor is slight to
avoid unduly distorting the characters of the font. No changes in the form of the
symbols in the font are made, i.e. letters are not cursivised.
	Note. The 8font_file parameter refers to the source and target of the
italicisation operation: no separate italic font file is created. Be careful that you
really want to italicise a font before running Italic. Use a copy if you are just
experimenting.






47.4.3.2.	Bold

Syntax:	bold input_file

The programnme Bold has been included in the LinguaFont package to allow
users to automatically create a bold version of any font which they have
designed for a laser beam printer. It functions in a similar fashion to the utility
Italic (see previous page). Note that you will in all probability have to edit
characters afterwards in order to fine-tune the shapes in the newly created bold
font.





37.4.4.	Size

Syntax:	size font_file /e,c /h0,1,2,3,45 /v0,1,2,3,4,5

Above all after using Upgrade, you will need to increase the size of the
characters of a font in order for them to be on a par with original laser fonts.
With the present programme you can do just that. It can also be used to convert,
say, a 10 point laser font to 14 point or whatever. Size furthermore works in two
directions: you can expand or compress the characters of a font.
	To improve the flexibility of the programme you are allowed to specify the
horizontal and vertical expansion/compression factors separately. They range
from 0 to 5 with the following effect (expansion or compression):

		0		(no alteration of factor)
		1		100%
		2		75%
		3		50%
		4		25%
		5		12.5%

Two important points should be borne in mind when using Size: (i) the
programme uses one and the same font as source and target of the operation, so
only work with a copy if you are not absolutely sure you want to alter a
particular font, (ii) expanding a font can lead to it increasing beyond the matrix
size as determined by the font descriptor, i.e. there may be characters in the
font which are higher or wider than the value for "cell height" and "cell width" in
the font header. This will not disturb LaserEd as much as your laser printer
when you try to use such a font afterwards. The remedy is to load the resulting
font with LaserEd and see if the characters are oversized or not. If so, alter the
header of the font file with TranLas accordingly  so that font header and
character size harmonize.






37.5.1.	CtrlDot

Syntax:	ctrldot

To allow the user to change the setting of the printer from within DotEd, this
programme is included in the LinguaFont set. It is only for dot matrix printers;
there is no equivalent for laser printers.
	No command line parameters are necessary for CtrlDot. When the
programme starts a window is opened on the right of the screen in which
various font types and attributes are listed. You can move the highlight bar with
the <UpArrow> and <DownArrow> keys and by pressing <Return> the
relevant printer command is sent through the parallel port to the printer.
Certain commands can be combined with others. For example it is possible to
combine "Italic type" with "Bold print" and a given "Pitch (CPI)". However,
pitches cannot be combined with each other as they are mutually exclusive. You
can only find out by trial and error what is possible with your particular printer.
	If the printer cannot be accessed an error message is issued and you choose to
either retry or abort the attempt. Press <Escape> to leave the programme.





37.5.2.	MemDot

Syntax:	memdot

This is a memory-resident version of the above programme which can be loaded
on the DOS level and called from within any subsequently loaded programme
which does not run in the graphics mode. The amount of memory used by
MemDot is not a consideration with a system running under 640K and a normal
application like a word processor or database management system.
	Press <Ctrl-LeftShift> to activate MemDot. You cannot alter the hot key
setting for calling the programme so be careful not to use any other
memory-resident programme (like SideKick) if it has the same hot key setting.
The programme remains resident until you reset your computer.
	MemDot can be useful in connection with some programme which does not
allow you to control the printer directly from the user level (e.g. a database
management system, like dBASE). Before printing from such a programme, you
might like to change the setting of the printer (choose a narrower pitch to print
long fields on a single line, for instance).





37.5.3.	TestDot

Syntax:	testdot

When you are experimenting with various features of your printer, you may be
in doubt as to whether they work or not. For example, when getting acquainted
with LinguaFont you might be in doubt as to whether the download of your
computer works or not. As the cause of some unexpected effect might lie with
your word processor (this is most often the case) I have included a test
programme for 24 needle dot matrix printers which runs independently of any
word processor (note that there is no equivalent for laser printers).
	The programme is started without any command line parameters by simply
entering atestdot and pressing <Return>. A screen appears in which a variety
of options are listed. To test any one of them press the letter of the alphabet in
front of the option you require. Make sure your printer is connected to the
computer, powered up and on-line.
	In order to test the download option, TestDot must have access to
8old_eng.dl1 as this is loaded into the printer before a sample text is printed.
	The options "K" and "L" are important to German users of LinguaFont.
When printing German text from your word processor your printer will need to
be set (via a DIP switch, see second section of this book for a discussion of
these) to the IBM character set and to the US language set, although the latter
may seem paradoxical. If you observe these settings then the second option
referred to here should lead to correct printing of the special symbols of the
German alphabet (Umlaute and ).
	Note.  To test the download feature of a dot matrix printer with TestDot the
font file russian.dl1 (part of the LinguaFont) must be present in the current
directory. Assuming it can find this file TestDot will attempt to print some
special symbols to illustrate this printer feature.





27.6.	Intro

Syntax:	intro

In addition to the above utilities there is a programme called intro.exe on the
programme disk of the LinguaFont set. It is a help file which offers the user
a brief introduction to the set of programmes so that he/she can orient him/herself
quickly with the group. By no means does Intro substitute the present book.





27.7.	Desktop

Syntax:	desktop

The present programme is intended to serve as a level from which the user can
control all the programmes of the LinguaFont-group. It is specially conceived
for the beginner who will naturally be unacquainted with the group and not
know the call syntax of many of the minor utilities.
	Desktop is called directly from DOS without any parameters being passed
from the command line. It presents a screen similar to the following to the user.

Ŀ
  Video   Laser   Matrix   Keyboard   Miscellaneous                       Help 
Ŀ
 Edit laser font      
 Combine two fonts    
 Send font to printer 
 Make font bold       
 Italicise font       
 Alter font size      
 Change parameters    
ٱ












D:\SRC\LINGFONT                          F1=Help S-F1,C-F1=DOS A-F4=Exit F9=Env
                  Use -,- for menus,  to choose option                      


The user can choose a particular menu with the horizontal arrow keys. Each menu
is dedicated to a sub-group of the package. Within a menu an option calls just one
programme. The description of each option should suggest what the particular
programme does.
	If an option for a programme is selected by the user which requires one or
more parameters from the DOS command line then a window appears in the
centre of the screen. The user is requested to type relevant information which
the programme in question requires for its operation. You can cancel a
command even at this late stage by simply pressing <Escape>.

Ŀ
  Video   Laser   Matrix   Keyboard   Miscellaneous                       Help 
Ŀ
 Edit dot matrix font   
 Combine two fonts      
 Send font to printer   
 Use 256-char. printer  
 Video <-> Printer font 
 Control matrix printer 
 Resident printer test  
 Printer test programme 
 Alter font parameters  
 Matrix -> Laser font   
ٱ

 Example: dotscr my_dot.dl1 /d Ŀ
                                                                      
            dotscr                                                    
                                                                      
 Required: fontfile /d (printer source), /s (screen source) ٱ




D:\SRC\LINGFONT                          F1=Help S-F1,C-F1=DOS A-F4=Exit F9=Env
              Enter additional information for programme call!                  


The amount of memory used by Desktop is very slight and should not disturb the
proper functioning of any of the programmes called.
	The programme conforms to the SAA (systems application architecture)
specification of IBM. This means that the user can either use a mouse to
activate an option of the <Alt>-key in connection with a highlighted letter for a
particular option. By pressing <Alt-F4> or <F7> the programme is unloaded
and you return to DOS.





27.8.	BatEd

Syntax:	bated

The aim of the present programme is to offer users a comfortable desktop from
which to choose, edit and then execute DOS batch files. The programme
consists of a directory lister from which one chooses a batch file (in the usual
manner for a file listing), deciding by keystroke whether to (i) edit the file or (ii)
execute it.

Ŀ
 BatEd       Batch file editor and dispatcher in one         526,224 bytes free 



 FileName Ext.    Size    Date    Time  
 CC      .BAT      244  01/03/91  08:44 
 CL      .BAT      224  07/15/91  09:47 
 CS      .BAT      219  01/03/91  08:45 
 CT      .BAT      224  07/12/91  09:26 
 DT      .BAT      249  06/08/92  20:37 
 LF      .BAT     6160  12/14/92  12:20 
 K1      .BAT       13  10/05/90  18:34 
 K2      .BAT       28  10/05/90  18:33 
 LOADVID .BAT      237  01/03/91  08:45 
 MK_KEY  .BAT      246  08/08/91  10:12 
 TEST    .BAT      277  12/15/92  21:05 
 VS      .BAT      251  08/08/91  09:44 
 [ Parent Directory                   ] 
 [ Subdir.:    BOOK                   ] 
 File:   7 of  12,  Size:    8372 Bytes 



D:\SRC\LINGFONT                                     <F4>=Drive, <S-F4>=Template 
  F1=Help  F7=Exit  Return=Edit File  Escape=New File  Ctrl-Return=Execute      



37.8.1.	Desktop commands

	F1  Offers a window of online help.
	F7  Exits BatEd to DOS.
	F4  Allows you to log in a new drive from a list of the logical drives on
your computer system.
	Shift-F4  Permits the specification of a file template for the directory
listing. Note that if you set this to 8*.* (the default is 8*.bat) then you can access
any file and edit it if you so wish.
	Return  Edit the currently highlighted file. Remember that editing is done
entirely in memory so that the file must be large enough to fit, i.e. under 400K in
size. This is of course of no relevance to batch files.
	Control-Return  Execute the currently highlighted file. Before execution
you are given the opportunity of entering any DOS command line parameters for
the batch file. If none are required, just press <Return> immediately. An
automatic return to BatEd is made once the batch file has been carried out.
	Escape  Start a new file (i.e. not one chosen from the directory listing).
When on the text editing level you can save this new file (which has the default
name noname.tmp) to disk under a name of your choice.


37.8.2.	Editing commands

Once you have chosen a batch file from the directory listing on the desktop the
screen changes and you enter the editing level. The contents of the chosen file
are shown or an empty screen is displayed (if you have chosen via <Escape> to
start a new file).

Ŀ
D:\SRC\LINGFONT\TEST.BAT                     Line: 2     Col: 1                 
[|||||||||]
                                                                                
rem First of all load a laser font:                                             
                                                                                
rem Make sure that the printer is both on and on-line!                          
                                                                                
pause                                                                           
                                                                                
loadlas my_laser.lpf 1                                                          
                                                                                
rem Now load the video font:                                                    
                                                                                
vidperm my_video.vga                                                            
                                                                                
rem Last but not least load a keyboard driver:                                  
                                                                                
my_keyb 2                                                                       
                                                                                
rem End of batch file                                                           
                                                                                
                                                                                
                                                                                
                                                                                



47.8.2.1.	Navigation keys

End  			End of current line.  
Home 	 		Beginning of current line.  
PageUp  		Top of current screen.  
PageDown 		Bottom of current screen.  
GreyPlus		Down half a screen.  
GreyMinus		Up half a screen.  

Ctrl-PgUp		Beginning of entire text.
Ctrl-PgDn  		End of entire text.
Ctrl-RightArrow	Move right a word.
Ctrl-LeftArrow	Move left a word.  

Up,Down,Left,Right Arrow	(Expected cursor movements)

Ctrl-Home Goto to line #.  In addition to the obvious cursor movements
just listed you can jump to a particular line with the present command.


47.8.2.2.	Deletion operations

Del  			Delete current character (no shift).  
Backspace		Delete character (shift to left).  
Ctrl-L			Delete current line.  
Ctrl-End		Delete from cursor to end of current line.  
Ctrl-R			Delete word to right of cursor.  


47.8.2.3.	Find and replace options

Ctrl-F		Find a string.
Ctrl-N		Next find.
Ctrl-E		Exchange strings.


47.8.2.4.	Miscellaneous commands

	Ins / Over  Insert or overwrite mode.  Note in addition to the above
commands that you can toggle input modes with the <Ins> key (from the Insert
to the Typeover mode and back again). 
	Ctrl-T  Set tab width.  The default number of spaces to which a tab
character is resolved is 8. You can change this value manually by pressing <Ctrl-T>
and entering a new value in the dialogue box which opens; the legal range of
values is from 2 to 12. If you wish to see the tab characters and the spaces which
derive from them then press <Ctrl-F3> (= Show formatting).
	Notes. The tab positions can also be seen in the ruler on the second line of
the screen in the main text area.
	When you have entered a value for the width of a tab you are asked if you wish
to resolve tabs to spaces on saving a text. Toggle this value with the <F5> key (the
current state is indicated before the text of the option). Note carefully that if you
save a text to disk with tabs resolved to spaces then the tabs are irrecoverably lost
as they are replaced by the number of spaces they are indicated by on screen.
	F3  Store/Retrieve Line.  This command stores the contents of the
current line; by pressing <F3> again you can copy the stored line into a new line.
	Before BatEd proceeds the user must specify whether he/she wishes to store
the line the cursor is currently resting on or to retrieve the contents of the line
buffer (assuming that something was copied into it earlier). Note that the tab ruler
in the second line of the screen is replaced by a special prompt.
	Use either the <LeftArrow>, <RightArrow> or the <Tab>, <ShiftTab> keys to
choose the desired action (as always, <Escape> aborts the action). If the line buffer
has already been filled then its contents are displayed on the second line of the
screen.

Ŀ
D:\SRC\LINGFONT\TEST.BAT                      Line: 2     Col: 1                
  Store  Retrieve   rem First of all load a laser font:                        
                                                                                
rem First of all load a laser font:                                             
                                                                                
rem Make sure that the printer is both on and on-line!                          
                                                                                

	Note.  <F3> causes the current line from the present cursor position to the
end of the line to be stored. If you wish to have the entire line copied then you
must move to the beginning by pressing the <Home> key.
	If you choose "Retrieve", the contents of the buffer are inserted into the
current line at the cursor position. The remainder of the line remains intact.
	Ctrl-F3  Show formatting.  This is a toggle which alternatively turns the
display of line ends and tabs on or off.
	The initial state is 'off'. Turning the formatting display on is especially
useful with files which make heavy use of tabs and where the latter may vary in
the number of spaces they resolve to. Note that line ends are indicated by the
symbol  while the spaces used to resolve tab characters are indicated by  and
the beginning of each new tab position is shown by the broke vertical bar, |;
normal spaces are displayed as small dots .
	Shift-F6  Copy previous line.  Assuming that the previous line has a
length greater than one, pressing the present key combination leads to the
previous line being copied into the present one. Note that only that section is
copied from the cursor position to the end of the previous line (to duplicate the
entire line, move the cursor to the beginning of the current line with
<Home>). The section is then inserted into the present line, i.e. if there is text
to the right of the cursor in the current line then this is shifted to the right by the
appropriate amount.
	Alt-F7  Exit to desktop. Exits from the text editing level and returns you
to the desktop from where you can execute the batch file you just edited, load
another batch file or just exit to DOS.
	F9  Show environment.  This commands offers you a windowful of
relevant information pertaining to the file you are editing and the environment
you are working in.

Ŀ
D:\SRC\LINGFONT\TEST.BAT                   Line: 2     Col: 1                   
[|||||||||]
                                                                                
rem First of all load a laser font:                                             
                                                                                
rem Make sure that the printer is both on and on-line!                          
             ͸             
pause                                                                         
                 Current File  :   TEST.BAT                                   
loadlas my_la    File Size     :   277 Bytes; 20 Lines                        
                 Archived      :   12/15/92; 21:05                            
rem Now load     Current Path  :   D:\SRC\TC\LINGFONT                         
                                                                              
vidperm my_vi    Memory Left   :   412848 Bytes                               
                                                                              
rem Last but     Current Time  :   21:06:06                                   
                 Current Date  :   12/15/1992                                 
my_keyb 2                                                                     
               Press any key  ;             
rem End of batch file                                                           
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                


	F10  Save text. For this option you must specify the name of the file you
want to be written to disk. By default BatEd takes the name of the file as loaded
from the desktop. You can change this at will. Should there already be a file of
the same name in the present directory or that specified in the full file path then
you must confirm overwriting it.





18.	The essentials of font management


LinguaFont is a software system for the generation and processing of
user-defined character sets (fonts). You can both create new fonts yourself and
adapt any of the fonts supplied with the programme package. A font can be
displayed on the screen. This is a video font. A font can be printed on paper.
This is a printer font. Both fonts are separate files but should be linked together
such that the numerical values of the special symbols in both the video and the
printer font are identical. Recall that video font are only visible on screen if you
are on the DOS level or in a programme which runs in the so-called character
mode. This applies to most word processors (such as WordPerfect and Microsoft
Word, as long as there are operating in the character mode). The video fonts of
the LinguaFont package cannot be seen within Microsoft Windows as this is a
graphical environment which uses its own fonts for screen display. Nonetheless
you can avail of LinguaFont printer fonts when outputting text, irrespective of
what programme is currently running on your computer.

Adapting fonts for screen and printer

Recall to begin with the steps involved in designing and then using a customised
font on your PC. You copy any screen font (such as 8IBM.VGA) to a name of
your choice and then alter the shape of those characters you do not need in the
upper ASCII area (above $128) to display the special symbols you require. Take
note of the ASCII numerical values of the characters whose shapes you
redefine. You then load the printer character editor for the type of printer you
have (either DotEd for dot matrix printers or LaserEd for laser printers). If you
are using a matrix printer take the font 8IBM_256.DL1 and redesign those
characters at the same number values as the screen characters you have
defined. This is the situation for matrix printers such as those of the NEC
Pinwriter series which supports a 256 character download font. When using a
laser printer, take any base font (e.g. the Letter Choice 12 cpi font called
8ASC_UPRT.LPF in the laser file directory) and change the symbols as just
described for matrix printers.
	Note.  The programmes which handle laser fonts all have the syllable LAS
in their name; those which deal with dot matrix printers have the syllable DOT.
	Bear in mind that a font which is loaded into your printer is discarded once
you turn off the printer for whatever reason, i.e. if only to remedy a paper jam.
The same applies to the computer itself: once turned off, a font is discarded and
will have to be loaded afresh when you turn on the computer again. For this
reason it is sensible to embed calls to the font management programmes of the
LinguaFont package into the startup batch file autoexec.bat which is executed
automatically when the computer is turned on.
	This is the simplest of all situations. You may advance later to designing
your own keyboard to enter the characters you have redefined in the upper
ASCII area directly from normal alphanumeric keys. Any existing font can be
altered swiftly by mixing fonts (either for screen or printer). You may convert
screen to printer fonts, italicise or bold printer fonts, etc.
	If you wish you can define proportionally spaced special fonts. However,
printing these with right justification is a tricky matter (you must convey the
width of each character to the printer driver of your word processor). I strongly
advise all users who do not know exactly how to fulfill such a task to use fixed
width special character sets.
	So far, so good. Now you come to the task of addressing and printing the
special characters from within your own software (in nearly all cases this will be
a word processor).
	To check on whether your word processor accepts your special characters,
load the file 8TEST_DL.TXT (if you are using Microsoft Word you must load it in
the character more by entering 8word /c from the command line, with
WordPerfect no special load mode is required). Remember to have loaded your
screen font with Video Permanent to ensure that your word processor does not
throw away your special font on starting! Furthermore make sure that you have
loaded your special printer font file with LoadLas or LoadDot beforehand!
	Now you should see the characters you have defined in the Upper ASCII
area, in the second table of the 8TEST_DL.TXT file. To print this choose the
most basic of all printer drivers available, most probably called "STANDARD",
with an extension typical of your word processor (e.g. ".DBS" in Microsoft Word
and ".PRS" in WordPerfect) and print the file. There should be a one-to-one
correspondence between the screen symbols in the file and the resulting
printout.

Difficulties

1)  You forgot to load the printer font file before starting your word processor
and printing the test file.

2)  The printer driver you chose initialised the printer before printing, thereby
de-selecting the special download font which had been loaded and selected by
LoadLas/LoadDot.

3)  The printer driver you chose blocked upper ASCII characters from being
sent to the printer, or it translated them to lower ASCII characters (stripping
the 8th. bit, as it is technically called).

To determine what has happened, you should exit your word processor and load
your font with LoadLas/LoadDot (again, if this has not already been done), this
time using the switch /t which will print out a table of the download font. If this
succeeds and you see the characters you defined, then the problems lie with the
printer driver used within your word processor. You may not find it very helpful
of me, but all I can recommend to you at this point is to contact your software
dealer and get him to sort the matter out.
                                   
Problems with older-type matrix printers

Dot matrix printers with only a 128 character download area suffer from a
serious drawback: all the characters which you define in the upper ASCII area
must be translated on printing to lower ASCII symbols as the half-sized
download area only contains addresses up to 128. As you need the normal
alphabet on the screen which is in the area up to 128, you have no choice but to
redefine characters in the upper ASCII area and then, by way of a printer
driver, translate these characters from their high values to lower values which
correspond to the addresses at which your printer stores download symbols.
	N.B. It is pointless defining a 256 character font with DotEd if your printer
does not support this (the printer will refuse to accept such a font).
	The above situation is compounded by the additional difficulty that when
you mix normal text and special characters in your word processor, you must
convey to the printer what characters are to be taken from the normal font in
the printer and what ones are to be fetched from the download area on printing.
	To solve these difficulties you must define a printer driver (or alter an
existing one). The details of this are given in Chapter 6 of the book "Using
character sets with data processing software".
	P.S. Users of LinguaFont must understand that it is impossible for me to
construe printer drivers in advance which will run with their software. For one
thing, I have no idea what programmes people will be using and for another, I
do not know (i) what screen characters users are going to re-define and (ii) what
values they are going to choose to store special characters for the printer at.

DIP switches and buffers in matrix printers

All dot matrix printers have one or more rows of small switches in some more
or less inaccessible part of the printer (usually under a cover at the side or back
of the printer). These are called DIP (from dual inline package) switches which
determine the settings from certain hardware parameters.
	The matter would be uninteresting were it not for the fact that many
printers use their internal memory for buffering characters to be printed rather
than for downloading fonts. This is a frequent cause of unsuccessful font
activation with dot matrix printers. If a font does not work then check the
settings of the relevant DIP switches to start with and consult your printer
documentation if necessary.

Keyboard management

This is the most unproblematic part of LinguaFont. You may assign characters
which you defined to keys on various planes of the keyboard by using the
programme SetKey which is specially designed to accomplish this task
comfortably. See the detailed description and the suggestions offered in the
relevant chapter above.

Batch files and LinguaFont

A batch file is an ASCII text file, i.e. one without any formatting information
such as page layout, typeface specifications, etc. which are normal in word
processor documents. It simply consists of commands for DOS, one per line.
The file is consulted by the operating system and the commands executed in the
order in which they occur in the batch file. Details concerning how batch files
are structured and their various uses can be found in any good documentation
on the operating system of the personal computer.
	In order to facilitate font management it is sensible to create batch files for
at least the following two steps.

1)   Loading a video font into the video adapter of your computer (mostly like
     a VGA adapter on a colour system).

2)   Loading a customised font into your printer (laser or dot matrix).

These two steps can be combined into one and executed on starting your
computer to ensure that the correct font for your processing requirements is
always available.





1II		Screens, Printers, Keyboards


11.		Screen fonts

21.0.	Preamble: Non-graphic and graphic video mode

The more basic of the two above modes is the non-graphic mode. It is also
termed the text or alphanumeric mode. When you are on the level of the
operating system (when you turn on your computer, for instance) you are in the
non-graphic mode. This means that all symbols you see on the screen (letters,
numbers, punctuation, etc.) are treated as unalterable blocks of video
representation which fit into the standard 8 x 14 matrix used by the PC screen.
The matrix is in fact 9 x 16 but the rightmost column and the bottom two for any
character block are empty so that characters do not run into each other. The
only exception to this are the block graphics characters (used for windows and
boxes in the non-graphic mode) between ASCII $176 and ASCII $223 as these
must produce unbroken lines and shadings. Note further that only those symbols
can be represented in the non-graphic mode which are available in the IBM
character set (see Appendix A).
	When you run a programme then one of the following two situations arises.
Either the programme uses the firmware IBM character set (present in a certain
chip on the video adapter of your system) or it uses one of its own. By the latter
is meant that the symbols for video representation are stored in a file which is
part of the programme and loaded into high memory when the programme is
first loaded; in this case the programme is running in the graphic mode. The
advantage of the graphic mode is that each dot on the screen can be addressed
individually and so new symbols, not available in the firmware IBM character
set, can be represented. Furthermore graphic figures can also be shown, such as
drawings, graphs, extra-large or extra-small letters, etc. The popular programme
Word, for instance, can be run in either the non-graphic or graphic mode. When
the second mode is chosen a small font appears on the screen and one can get
more words into a line and more lines on the page. Usually one has a screen of
80 columns and 25 rows; in the graphic mode of Word, however, one has up to
90 columns and up to 43 rows. Extra large letters are not usually available in the
graphics mode of a word processor or integrated software (such as the two items
just mentioned); an exception to this is Microsoft Windows which allows free
variation in character size with the integrated word processor. The reason why
this mode is not chosen by conventional programmes (i.e. those not run in a
graphics environment) largely concerns the printer.
	For the representation of extra large lettering on print-out the printer
normally has to resort to the graphic mode of printing. This has some
similarities with the graphic mode of screen display. Here the printer addresses
each needle of the print head individually and does not fetch the patterns of
letters from firmware (i.e. from a chip on the motherboard of the printer with
the required information encoded). This is exactly parallel to the graphic mode
for screen representation. Whenever the printer or the screen has to resort to
forming letters on a dot-by-dot basis and is not able to use the pre-fabricated
units in the firmware then the representation (on screen or printer, or both) is
slowed down considerably.
	From the point of view of the user interested in special language symbols
the disadvantage is that in the graphic mode one only has the standard
characters of the IBM set (usually in a smaller form, of course, to produce a
fuller screen).
	You may well ask where a programme gets its characters from in the
non-graphic mode if it uses a file in the graphic mode. The answer to this is
simple: from the character generator on the video card of the computer, the
so-called firmware character set. To understand this allow me to explain how
the video representation of the PC is organised.


21.1.	Types of video cards

In one of the expansion slots of the PC (to be seen towards the left and back of
the system unit if you open it) there is a card which is responsible for video
representation (you can recognise this as the cable leading to the monitor is
plugged into the back of the card and frequently the cable leading to the printer
is joined up to this card as well). Among the various chips on the card is one in
which, in encoded form, the characters of the IBM character set are contained.
This set has a fixed and definite shape and size; it consists of 256 characters which
are represented in an 8 x 14 matrix on the monitor of the computer. The
remaining chips on the video card determine which type of card it is. There are
basically four kinds listed below.


31.1.1.	Monochrome video card

If you buy a PC (386 or 486 machine or whatever) without any extras then there
will be at least a monochrome video card included. This is the most basic video
card. It does not represent graphics nor does it show any variations in colour,
i.e. your monitor remains green or amber or white even with those programmes
which allow colour configuration.
	With this card all programmes can only use the 256 characters in the
character generator chip. You might wonder why a programme which stores its
graphic font on a file cannot use this file to run in the graphic mode with a
monochrome video card. The answer to this is that there is more to running a
programme in the graphic mode than simply using a font file; in order to
address each point on the screen individually the video card must have at least
64K of memory to organise and store the screen representation. This leads one
to the next type of video card.


31.1.2.	Hercules graphics card

The monochrome video card is not a development of IBM. The monochrome
graphics video card is originally a development of the Californian firm Hercules,
although there are by now many other manufacturers of such graphics video
cards. It was developed essentially to allow individual addressing of each dot on
the monitor's screen with a fairly high resolution. This meant that programmes
were no longer bound to using blocks in the 8 x 14 matrix of the non-graphic
mode. Of course you can use non-graphic programmes with the Hercules card
as it also has a character generator chip which is functionally identical to that on
the non-graphic monochrome video card (see (i)).
	In summer 1986 a new version of the Hercules card was brought on the
market under the name Hercules Graphics Card Plus. Apart from the
improvement in speed, the major improvement over the previous card is that it
has the possibility of independently loading a font for video representation. By
"independent" is meant here that you can load a custom screen font before
running a programme. The font chosen remains resident until one loads another
or starts up the computer afresh. What one has in effect done here is to replace
the standard (IBM) character set by a custom character set. With the
LinguaFont set is supplied a programme (VideoEd) for designing custom fonts,
so that a user can design a font of his/her own choice and use this instead of the
normal IBM character set. A custom font can either have a different shape for
standard characters, or non-standard characters, or both.
	All the screen fonts shipped with the LinguaFont set have been designed
for use with the Hercules Graphics Card Plus, the EGA or the VGA adapter (see
below). This has the advantage that at any given time one can choose any of the
fonts supplied as your customised font and that this font will be available on the
screen in any programme which is run in the non-graphic mode. You load the
font into the video card of your system by means of the programme LoadVid,
for details of the latter see the first section of the present book. Furthermore
one can alter the fonts supplied by using the video font editor, VideoEd, thus if
one finds that a certain font, created by the present author, does not contain
some of the symbols which one would like oneself, then simply edit the font to
customise it to your own needs.


31.1.3.	Colour Graphics Adapter (CGA) card

For every byte which is held in the display memory of the computer an attribute
is also present. This latter byte contains information such as whether a character
is inverse video, for example, and also information about what colour it is
displayed in (certain attribute information is differently interpreted on
monochrome and colour systems, thus underlining on the former turns up as
blue lettering on the latter). With a monochrome video card this information
referring to colour is ignored. There are video cards, however, which use this.
Basically there are three types of colour cards: the older simple colour card with
an 8 x 8 matrix for screen characters on the one hand and the newer colour cards,
Enhanced Graphics Adapter and Video Graphics Array on the other, known
simply as an EGA and VGA card respectively, which have an 8 x 14 matrix as
do the monochrome cards (see previous two sections).
	The colour graphics card has a character generator on it but it cannot
accept a screen font in software form (i.e. from a file) as can the EGA card.
Furthermore the resolution of the colour graphics card is so low, that there
would be no point in considering the idea of loadable fonts. If you are already
using a colour graphics card I can only suggest that you get rid of it quickly. The
low resolution is very damaging to one's sight. In addition the colour graphics
card does not produce a very stable picture, i.e. the screen display flickers, and
you get a very unpleasant phenomenon known as "snow" when the screen is
refreshed.


31.1.4.	Enhanced Graphics Adapter (EGA) card

The EGA card is an original development of IBM. It allows addressing of
individual dots on the screen as with the monochrome graphics card and has a
display mode with up to 43 rows of text per screen (this is exploited by the file
manager File which is part of the Tools set of utilities by the present author). Its
resolution is 640 by 400 dots (or 350 dots if one subtracts the two empty lines at
the bottom of each character block which are only used for the block graphics
symbols, see remarks above) on a normal screen but there are by now many
improved versions of the EGA card with higher resolutions which provide
sharper screen display.
	The EGA card does not come with a font generator and loader in software
form as does the Hercules Graphics Card Plus. However, it is possible by means
of a specially written programme to load a font file which the EGA card then
uses instead of its firmware character generator. It is suprising that despite this
ability of the EGA card, practically no-one has presented a programme to
exploit this possibility. Just such a programme is, however, supplied with
LinguaFont. This is LoadVid which loads a disk font file into the EGA card
display memory and uses this as long as no further software replaces it or you
restart your computer. In effect this renders the EGA card an equal of the Hercules
Graphics Card Plus in terms of screen font management.


31.1.5.	Video Graphics Array (VGA) card

The latest development by IBM is the VGA (= "Video Graphics Array")
adapter which has a number of advantages in terms of display, e.g. it can
produce up to 64 shades of gray and has a better colour resolution than the
EGA card. It also has the ability to display a non-standard, customised font in
the non-graphic mode. Again LoadVid is the programme you require if you have
designed a font with VideoEd and wish to load into the VGA card in your
system.
	The VGA adapter is included in the present generation of personal
computers by IBM (PS/2 machines).


21.2.	Replacing parts of the character set

No single user needs all of the IBM character set all of the time. In fact the
undemanding user will not even use the entire subsection alphanumeric
characters represented on the keys of the keyboard. This means that one can do
without many of the characters of the IBM set. Interestingly it also means that
one could replace some of the unwanted characters with those which one might
need but which are not contained in the original IBM set.
	The next consideration is, how many of the characters can one maximally
replace? The answer to this lies not so much in the exigencies of video
representation but in the abilities of your printer. The reason for this is as
follows.
	Replacing symbols of the IBM character set is only sensible if the new
characters one gains on the screen can be produced as hardcopy on the printer.
The download area of 24 needle printers is in practice restricted to 93
user-defined symbols (some dot matrix printers can accomodate more than this
as can laser beam printers anyway). To redefine more than 94 symbols on the
screen (with VideoEd) would mean that some of these would not be capable of
being printed due to lack of space in the download area of the printer.
	Assuming that this limit of 94 is to be kept to, the question then arises,
what symbols of the IBM character set does one replace? One can in principle
do without some symbols in the following three areas of the character set: (i)
below $32, i.e. in the area of printer codes; (ii) immediately above $127, up to
$175 i.e. in the area of the foreign language symbols which are already available
in the IBM character set. (iii) above $223, up to $254, i.e. in the area which
contains Greek letters and scientific symbols. Remember, however, that if you
require Greek letters or if you need some of the foreign language symbols
already present in the IBM character set then these must not be touched when
redefining symbols. The two areas of the set which should not be tampered with
at all are (i) the large alphanumeric area from $32 to $126 and (ii) the block
graphics area from $176 to $223. It is obvious that the first of these areas, which
contains the (English) alphabet, is not to be interfered with; the block graphics
symbols should not be altered either as otherwise the screen display in some
programmes would look peculiar, showing the symbols you redefined with
VideoEd instead of bordering and shading in some cases. Incidentally changing
symbols below $32 should only be a last resort. The reason for this is twofold:
these symbols are used as printer codes and if you alter their form for screen
display then you must be careful to translate them to other characters before
they are sent to the printer (see section on printer drivers above); secondly
these symbols may have certain effects on the screen. For instance if you enter
$10 from the keyboard in some programmes (such as Word) then the result is
not the display of $10 but a line feed which is the function associated with the
numerical code of this character.


21.3.	How screen fonts work

In the non-graphics mode the screen display of your PC is made up of small
blocks all of equal size (8 x 14 for all practical purposes). There are 256 such
blocks available, see the comments on the ASCII character set in the
appendices below. These blocks are stored on the video card irrespective of
what type it is and when DOS is started they are used to form the display
memory of the CPU which occupies an area above that used for transient
programmes (i.e. the area into which your word processor is loaded, for
example). This is an area of memory which has an image of the screen display
stored in it (or rather screen display is derived from the characters to be found
in display memory). Changes in display are done in display memory and only
then transferred to the monitor. The actual physical location of display memory
is incidentally a fairly irrelevant matter. It is usually on the video card but
logically it is part of the 1MB main memory address space of the central
processing unit, just as the system memory you have is also part of the main
memory address space of the CPU although it may be physically distributed
between the mother board, with say 256K, and a peripheral card with another
384K for instance (on a PC). Of the main memory address space 128K is
reserved for display memory (the area from A0000 through BFFFF). Only a
fraction of this is actually used by the various video cards. The simple
monochrome and colour cards use 4K of display (in fact any card running in the
text mode requires only 4K for the contents of a screen). The start address of
video memory is different for monochrome and colour cards (B0000 for the
former and B8000 for the latter). These facts are, however, only of relevance
when one is writing programmes (such as VideoEd, DotEd or LaserEd, if I may
mention this here) which are intended to run on a variety of video adapter
cards. To help you visualise this distribution of memory a graphical
representation may be of benefit.

               ͻ
                  00 000 Ŀ
                          
                          
                          :
                          .   640K of system memory
                          .  (includes DOS and transiently
                          :   loaded programmes)
                          
                          
      1MB         A0 000 Ĵ
      main                :
      memory              :  128K memory of displays 
      address             :       of various kinds
      space       C0 000 Ĵ
      of                  :
      8088                :  Unoccupied memory
                          :  (intended for BIOS extensions)
                  F6 000 Ĵ
                          .  ROM Basic
                  FE 000 Ĵ
                          .  ROM BIOS
                  FF FFF 
               ͼ

For those interested a second diagramme is also given to present a more
detailed picture of the lower part of memory which is used by DOS and the
programmes you use.

      	Ŀ
      	         Interrupt vectors               
      	         BIOS data space                 
      	         DOS data space                   [approx.
      	         DOS system files                   32K]
      	        (IBMIO.COM, IBMDOS.COM           
      	         startup & resident part         
      	         of COMMAND.COM)                 
      	         DOS environment                 
      	Ĵ
      	                                         
      	         Application software            
      	      [ Transient program area ]         
      	                   .                     
      	                   :                     
      	                   :                      [approx.
      	                   :                        600K]
      	                   :                     
      	                   :                     
      	Ĵ
      	       COMMAND.COM (transient part)      
      	Ĵ
      	    A0 000 :  (Start of video memory)    
      	                   :                     
      	    B0 000 :  Start of monochrome buffer 
      	                   :                         
      	    B8 000 :  Start of colour buffer     
      	                   :                     
      	    FF FFF :  (End of address space)     
      	

Note in this connection that there is some free space between the end of the
display memory area, starting at hex C0000, and that reserved for the ROM
Basic of the IBM PC and the ROM BIOS, starting at hex F6000. It is this area
which is used as a tunnel through which one can access memory above 1MB
with special cards such as the Intel Above Board and so make at least some use
of the addressing capability of the 80286 and 80386 with version of DOS up to
4.0.
	The display memory should be kept distinct from the character generator
chip. The latter is the permanent storage location for the IBM character set.
The character set which is used for video display is read from this chip. The
character generator chip is visible on any video card. It is a 4K PROM and is
sometimes in the form of an erasable EPROM (called a 2732 in the trade) in
which case there is a sticker over the glass window on top of the chip. On the
EGA card the chip with the character set in it is either 16K or 32K in size (a
27128 or 27256 chip) as it contains two character sets and some programme
code (the so-called video BIOS). In most cases the character generator chip can
be removed from the video card and replaced by another without disturbing the
functioning of the card as a whole. This applies above all to the normal
Hercules adapter. With the EGA/VGA cards the matter is a little more
complicated as these cards have an internal test routine which does not allow
one to change the character generator chip without working out the so-called
check sum for the contents of a new chip. This is a hardware possibility which is
not to be recommended to the beginner as he/she is more likely to cause
damage to his/her machine than realise a different character set. Software
solutions to the problem of alternative screen character sets are to be preferred
and are the only type supported by LinguaFont. 	Assume for argument sake
that you have generated an alternative character set with VideoEd and loaded it
into your Hercules Graphics Card Plus or EGA/VGA card. Logically this font is
now located in the high region of the address space of the CPU and is accessed
when screen display is being constructed. Just exactly where this font is
positioned depends on the particular video card. The Hercules Graphics Card
Plus for example loads a customised (4K) font into an area starting at
B000:A000 (it is here that LoadVid deposits a user-specified font file after
reading it from disk). The net result is that different "blocks" of video display
turn up on the screen for unaltered ASCII numbers, i.e. certain numeric
character values have different forms than in the standard IBM character set
(depending on how you defined the former with VideoEd). Consider first of all
the matrix of a single such video block.

			IBM PC screen matrix (8 x 14 [9 x 16])

				ͻ
				     012345678 
				    Ķ
				  0  . . . . . . . .  
				  1  . . . . . . . .  
				  2  . . . . . . . .  
				  3  . . . . . . . .  
				  4  . . . . . . . .  
				  5  . . .   
				  6  . . . .  
				  7  . . . . .  
				  8  . . . .  
				  9  . . . .  
				 10  . . . .  
				 11  . . . .  
				 12  . . . . .  
				 13  . . . . . . . .  
				 14 [. . . . . . . .] 
				 15 [. . . . . . . .] 
				ͼ

This character does not exist in this form in the original character generator of
any video card. It has been defined by the present author in the screen font file
phonetic.fnt and is used throughout the following pages for the purposes of
illustration. It has the ASCII value $231 in the particular screen font for which it
was designed and is intended to represent a voiced velar fricative in the
International Phonetic Alphabet. The original symbol stored under ASCII $231
(a Greek gamma) looks somewhat different (it has a curve to the top left and no
descending loop). For DOS it is irrelevant what is actually stored at the location
for ASCII $231. DOS simply reads the contents of this address and uses it then
in display memory anytime it gets a signal to display ASCII $231. This is of
course very advantageous to the user of LinguaFont. He/she can redefine any of
the symbols of the IBM character set which he/she does not need and DOS will
display them without objecting.
	To understand how the redefinition of symbols is possible one must first
dwell for a moment on the manner in which the video blocks of the IBM
character set are stored in the character generator chip.
	The character set for any video adapter running in the non-graphic mode
contains 4K of information. This is divided into 256 units of 16. Each stretch of
16 bytes contains the information necessary to encode a particular symbol of the
character set. Because of the internal organisation of video cards the bytes may
be stored somewhat differently, for example the normal Hercules card has them
stored as 256 x 8 in the first 2K of the character generator, i.e. the first half of
each symbol, and 256 x 8 in the second 2K, i.e. the second half of each symbol;
this need be of no concern to the user as I am solely concerned here with
explaining how the system of character generation works. If you were burning
new EPROMs for a video card then the internal organisation, such as the
splitting of symbols, would have to be borne in mind, of course.
	If you consider the matrix given above then you see that it consists of 16
horizontal lines (numbered 0 through 15), each 8 spaces wide (numbered 0
through 7). There is in fact a ninth column (indicated by shading in the
diagramme above). This column in not used by normal characters and one
cannot define its contents. What happens with it is that those symbols from $176
to $223 automatically obtain a ninth column which is identical to the eighth
column of each symbol. The reason for this is to ensure that the block graphic
symbols have no spaces between them when they occur beside each other. If the
eighth column was not duplicated as a ninth column then there would be a
space between each graphic symbol just as there is a space between all other
characters (outside of the block graphics area) no matter how one defines them.
Bear this in mind when designing your own characters: it is not possible to
design screen characters which link up horizontally without spaces between
them.
	Note also that no characters use 16 bytes for their representation. This
means that row 14 and 15 in the above matrix are always empty (even for the
block graphics symbols). This explains a difference in size between Hercules
and EGA fonts which you may have noticed with VideoEd. With Hercules fonts,
bytes 14 and 15 (i.e. the 15th. and 16th. bytes) of each character are present
solely to arrive at 16 as the number of bytes in a character definition. This then
multiplied by 256 gives 4096 (= 4K) which again is a round number for the
computer. With EGA fonts this symmetry is abandoned and the character
definitions consists only of those bytes which can be actually used for screen
representation, i.e. 14 bytes. This number multiplied by 256 equals 3584 which is
the precise size of an EGA font. Because bytes 14 and 15 cannot be used in
screen representation, it is not possible to fill them with VideoEd even if you are
editing a Hercules font.
	The question now arises, how are the 16 rows for each symbol encoded in a
character set file? To understand how, consider the following diagramme.

			IBM PC screen matrix in binary form
	
				ͻ
				     012345678 
				    Ķ
				  0  0 0 0 0 0 0 0 0  
				  1  0 0 0 0 0 0 0 0  
				  2  0 0 0 0 0 0 0 0  
				  3  0 0 0 0 0 0 0 0  
				  4  0 0 0 0 0 0 0 0  
				  5  1 1 0 0 0 1 1 1  
				  6  0 1 1 0 1 1 0 0  
				  7  0 0 1 1 1 0 0 0  
				  8  0 1 1 0 1 1 0 0  
				  9  1 1 0 0 0 1 1 0  
				 10  1 1 0 0 0 1 1 0  
				 11  0 1 1 0 1 1 0 0  
				 12  0 0 1 1 1 0 0 0  
				 13  0 0 0 0 0 0 0 0  
				 14 [0 0 0 0 0 0 0 0] 
				 15 [0 0 0 0 0 0 0 0] 
				ͼ

Each row of the matrix is now represented as a series of 8 digits with one of two
values, 0 or 1, i.e. a series of bits. For the video card a "1" is a signal to display a
pixel on the screen, a "0" is a signal to leave a pixel free (a pixel is a single dot of
video representation on the screen). The 14 rows of "1s" and "0s" contain all the
information the video card needs to build a block of screen representation in
the non-graphic video mode.
	But what are these rows? Nothing more than the binary form of a number
of bytes. This can be seen when one translates the rows of bits into the
corresponding bytes.

				Bits			Bytes

			 0 0 0 0 0 0 0 0     =     00
			 0 0 0 0 0 0 0 0     =     00
			 0 0 0 0 0 0 0 0     =     00
			 0 0 0 0 0 0 0 0     =     00
			 0 0 0 0 0 0 0 0     =     00
			 1 1 0 0 0 1 1 1     =     C7
			 0 1 1 0 1 1 0 0     =     6C
			 0 0 1 1 1 0 0 0     =     38
			 0 1 1 0 1 1 0 0     =     6C
			 1 1 0 0 0 1 1 0     =     C6
			 1 1 0 0 0 1 1 0     =     C6
			 0 1 1 0 1 1 0 0     =     6C
			 0 0 1 1 1 0 0 0     =     38
			 0 0 0 0 0 0 0 0     =     00
			[ 0 0 0 0 0 0 0 0    =     00 ]
			[ 0 0 0 0 0 0 0 0    =     00 ]

The information needed to represent the voiced velar fricative is thus stored in
the character set file as "00 00 00 00 00 C7 6C 38 6C C6 C6 6C 38 00 00 00"
(note that the symbols are encoded from "top to bottom"). Its beginning address
in the file is arrived at by multiplying 16 x 231 = 3696 (this is the beginning
address as the first symbol in the character is 0; if the character set began at 1
then 3696 would be the end address).
	These remarks apply to the character generator file produced with
VideoEd. It has its correspondence in the hardware of the video card as well. If
one were to take the character generator chip (on a normal Hercules card for
arguments sake) and read its contents with a so-called EPROM writer card
(which reads the contents of a chip and creates a file from them and conversely
takes a file and burns it into a blank chip) one would get a 4K long file. When
one jumps to position 3696 in this file one finds the byte sequence needed to
encode the normal symbol (a Greek gamma) with the ASCII value $231 in the
IBM character set. This is "00 00 00 00 3B 6E 0C 0C 0C 0C 0C 00 00 00 00 00".
(Bear in mind that this is not quite true as the symbols in the normal Hercules
card are stored in halves, but for the purpose of explanation one can accept this
presentation).
	If you have loaded the phonetic.fnt font file (into your video adapter card)
and enter 231 via the numeric keypad (with the <Alt> key depressed) a symbol
appears on the screen which has the shape of the voiced velar fricative, i.e. the
shape of the symbol which was defined in the font file produced with VideoEd.
Extending this principle, one can replace as many symbols as one likes, for
example, to gain an entire alternative alphabet alongside the English (or
German) one which one uses normally. To do this one takes the ibm.fnt (or
ibm.ega font file, whichever applies in your case) and changes what characters
one wishes as outlined in the section devoted to VideoEd in the first part of this
book.


21.4.	Fonts for the Hercules Graphics Card Plus

There is no necessary reason for the computer to read the character set for
video display from a chip; it can equally read the contents of a file and use them
as long as the file contains the correct information and as long as the video card
is organised in such as way as to allow this procedure. The Hercules Graphics
Card Plus offers just such a facility. There is a programme (called "RamFont")
which is delivered with the card and which offers one the possibility of loading a
customised character set into the video card which is then in its turn loaded into
the display memory, which is part of the address space of the CPU, and
subsequently used for all screen representation in the non-graphic mode until
another character set is loaded with the Ramfont programme or until the
computer is reset (warm or cold start). The LinguaFont utility LoadVid can also
be used to load a soft font into the Hercules Graphics Card Plus.
	The software fonts of the Hercules Graphics Card Plus are arranged
somewhat differently from the firmware font on this card or that on the
conventional Hercules card inasmuch as information is stored in complete blocks
of 16 bytes, i.e. not split into two halves. Again this fact is entirely irrelevant to the
use of the fonts.
	All the screen fonts of the LinguaFont set are available as loadable
software fonts for the Hercules Graphics Card Plus. The fonts can be adapted by
the user at will, he/she may add symbols or substract symbols as he/she
chooses.
	The fonts for the Hercules Graphics Card Plus work with a further system
with is marketed by the Japanese firm EIZO under the designation "Monoset"
and which consists of a high resolution, flickerfree monochrome monitor
together with a video adapter which is hardware-compatible with the Hercules
Graphics Card Plus and so capable of accepting fonts generated with VideoEd
and loaded via LoadVid.


21.5.	Fonts for the EGA adapter

Much less documented but equally interesting is the ability of the EGA card
(Enhanced Graphics Adapter) to accept character sets in the form of a file. For
the user of VideoEd the distinction between Hercules Graphics Card Plus and
EGA card is only minor. It solely concerns the choice of file when editing a
character font. Users of the Hercules Graphics Card Plus will already have the
Ramfont programme for this card; users of an EGA card can load their font
files with the LoadVid. Remember with the latter that you should use screen
font files with the extension .EGA and not .FNT as the latter are for the
Hercules Graphics Card Plus only (there is also a difference in size between the
two types of files, 3584 as opposed to 4096 bytes); bear in mind as well that you
load EGA fonts with the /e switch set (see details of the programme in the first
section of the present book).
	There is a plethora of EGA cards now available on the market which are
distinguished mostly by degree of resolution (starting at 640 x 400 and extending
upwards) or by some additional feature such as a printer port which may be
included on the card. Those users who are bent on high resolution must bear in
mind that the EGA screen font files which can be generated with VideoEd may
only work in the normal EGA mode of their video adapter depending on how
this reacts to a loaded font file. At worst you will have to run your card in the
simple EGA mode when you wish to have a customised character set at your
disposal; at best you can have such a character set in the VGA mode as well.
	Bear in mind furthermore that a customised character set, once loaded,
remains as the active character set as long as the software you are using does
not tamper with this or use its own character set instead. This applies above all
to graphic programmes, such as the graphic environment Windows by Microsoft.
None of the EGA character sets work here as Windows uses it own character
sets for video display. Under extreme circumstances some non-graphic
programmes may throw away your loaded font file. The solution to this is to
load the font via a DOS command from within the offending programme. If a
programme removes your customised font file, then this happens when the
programme is loaded as part of the initialisation. By loading the font file from
within the programme you can activate a customised file after the programme
has gone through its initialisation procedures. The only way to find out what
happens with a particular programme is by trial and error. Word processors are
relatively safe in this respect. WordPerfect does not alter a loaded font file, nor
does Microsoft Word when loaded in the non-graphic mode (with the switch /c
on the command line, see the programme documentation for details). Database
management systems such as dBASE (in the various versions available) and
spreadsheet programmes are entirely unproblematic.


21.6.	Fonts for the VGA adapter

The position for the VGA card is essentially the same as that for the EGA card.
There is a slight difference with regard to the text mode of the two cards,
however: when the VGA card is in its default mode (after you power up the
computer) then the character matrix is 16 lines high and not 14 like the EGA;
for this reason you must load a font with the extension .fnt into the VGA card
using the /v switch with LoadVid; otherwise the operation of both cards in the
text mode is identical.





12.		Printer Fonts

22.0.	Preamble: Kinds of printers

A computer without a printer is only half a computer. For the layman this is
plainly obvious. Indeed the layman is always interested in seeing a print-out of
what he enters from the keyboard as soon as possible. He is basically right in
doing this as only the print-out offers hardcopy of one's work. Nothing is more
frustrating and dismaying than being forced to recognise how transistory data on
a computer is by accidentally destroying precious work only available in file
form.
	The question as to how to get one's files from disk to paper is usually
answered by the word processor. The printing function of a word processor is
central; it may vary in certain features from programme to programme, but a
hard core of functions is always present. It is at this point that the question
arises, just what types of printers exist and how do they differ from each other?
The answer to this question is important as the behaviour of the printing aspect
of your word processor depends on this. For what it is worth, here is a review of
the main types of printer.


32.0.1.	Daisy wheel (solid font) printers

You know from your typewriter that one of the main advances was from a
typewriter with spokes to the golf-ball typewriter with the symbols distributed
over the surface of a small ball which was rotated so that the symbol about to be
typed faced towards the carbon ribbon.
	The second advance in impact technique on typewriters was the invention
of the daisy wheel. Basically it operates as follows: a wheel with spokes is
attached to an axle in front of the carbon ribbon of the typewriter. At the end of
each spoke is a letter, cast out of metal. The wheel rotates at high speed when
the typewriter is on. When the key for a particular letter is pressed, a small
hammer behind the spokes of the daisy wheel strikes the spoke with the given
letter when it passes the highest point on the circumference of the daisy wheel;
the letter on the spoke strikes the carbon ribbon and the letter is typed on
paper. It is a very simple principle which works efficiently given precision
mechanics with the daisy wheel, the hammer and the hub motor which rotates
the axle on which the wheel sits. Nowadays almost all typewriters of the daisy
wheel type. Many typewriters can double up as printers (provided the
appropriate printer interface is present). Daisy wheel machines are also
available solely as printers, i.e. as output devices only to be used together with a
computer.
	The advantage of daisy wheel printers is that they give a very good quality
printout; you have no dots as the letters are available in their full form on the
spokes of the daisy wheel. The disadvantage is that only those letters on the
daisy wheel are at your disposal (certain limited effects such as underlining and
overprinting can be achieved with a single wheel). You can of course change the
wheel for italics, a different language, etc. Usually the printer driver of the word
processor you are using has the possibility of stopping before every change in
font, made while editing the text, to allow you to change the daisy wheel.
However, the limitations of such a procedure are obvious to the user who
requires many different types of symbols in a given text; in addition he/she may
well find that for many of the symbols he/she requires no daisy wheel even
exists. For presentation quality print-out, e.g. important letters, contracts, etc.
daisy wheel printers still hold the field.


32.0.2.	Inkjet (non-impact) printers

Non-impact printers have been around for quite some time. Most of them are of
the inkjet type. The principle here is as follows: where the daisy wheel sits on a
printer of the last-mentioned type a small head is to be found. On its front side
it has a number of tiny holes (either 9 or 24) out of which ink of a special kind is
shot in a pre-determined pattern to give a symbol on the paper which lies on the
carriage in front of the jet holes.
	Inkjet printers can be considered as being the same as the following type
from the point of view of their scope in the field of available fonts. Their chief
advantage is their quietness. As there is no impact there is no mechanical sound
of a needle hitting paper; for sensitive ears, inkjet printers can be
recommended. The latest generation of inkjet printers from the leading
manufacturer of printers and the establisher of printer standards, Epson, have
been technically improved so that the smudging of ink on paper which was part
and parcel of life with an inkjet printer in bygone days is now a thing of the past.
The same applies to the inkjet printer by Hewlett Packard.


32.0.3.	Dot matrix printers

The most widely spread type of printer is the dot matrix printer. It was invented
in the mid sixties and has been steadily developed since. It is used not only with
personal computers but in many other spheres of daily life where quick
print-out is required, e.g. for bank statements, with cash registers, etc. The firm
responsible for establishing a standard in this sphere is Epson; they have
produced printers conforming to the so-called Epson ESC P standard which sets
out a definite number of commands for controlling matrix printers. This
standardisation has helped to ease the situation on the printer market which up
to the early eighties was characterised by a free-for-all in printer command
language.
	The principle with dot matrix printers is as follows: a printer head in front
of the paper on the printer carriage contains a series of tiny needles (9 or 24,
the latter arranged as two slightly displaced series of 12) which shoot out of the
holes in which they lie when they are activated by the computer on printing, hit
the carbon ribbon between them and the paper; the result is a collection of dots
which one recognises as a printed symbol, typically a letter of the alphabet.
Note the essential difference between the printer types here and in the last
paragraph and the following one vis  vis daisy wheel printers: the printed
symbols are not available to the printer in a pre-fabricated, cast form. Rather
the structure of each symbol is to be found in codified form in a series of chips
within the printer. By sending certain codes to the printer the computer can
cause the printer to take the encoded pattern of a symbol in a chip, transfer it
into instructions for the needles of the print head, the result being the printed
form of the letter whose numerical code was sent by the computer to the
printer.
	Well what are the advantages and disadvantages to this particular method?
The main disadvantage is that you can see the dots of which the printed symbols
are composed. The extent to which you can see the dots basically depends on
how many needles your printer has, i.e. is it a 9 or a 24 needle printer? With 9
needle printers there may be the possibility of printing in what is called "letter
quality". During this type of printing the printer head makes smaller horizontal
movements to bring the dots closer together, it may also print a line twice
(so-called "doublepass"). However, download symbols are never available in
"letter quality" on a 9 needle printer.
	On a 24 needle printer the question of letter quality does not arise to the
same extent as with 9 needle printers as the large number of needles gives a
higher resolution without resorting to doublepasses, smaller horizontal
increments, etc. For the user of LinguaFont interested in downloading special
symbols (sending his own symbols to the printer for later printing) the 24 needle
printer is the most suitable as the general high-quality resolution holds for
user-defined symbols as well as for typefaces like italics. For LinguaFont I have
taken the decision not to produce any fonts for 9 needle printers as the quality is
too poor. I hope that those users who already have a 9 needle printer (such as
an Epson FX 80 or FX 85) will not be too disappointed by this decision. One
must realise that the design of download fonts is very time-consuming and thus
can only be done for one type of dot matrix printer, obviously for that with the
best quality print-out.
	At this point I should say that in one respect the 9 needle printers have the
edge over 24 needle printers: they can accomodate twice as many download
symbols as the 24 needle printers, i.e. 256. You might well ask why this is the
case, seeing that the 24 needle printers are a later development of the original 9
needle ones. The answer has to do with the amount of memory needed by the
computer to store user-defined symbols. A user-defined symbol for a 9 needle
printer only requires a fraction of the memory needed for a symbol with the 24
needle type. Thus for a 24 needle printer to have an intake of 128 user-defined
symbols it requires considerably more memory than does a 9 needle printer to
have double the intake. It would, of course, still have been possible for the
designers of 24 needle printers to include a RAM area large enough to
accomodate 2 x 128 user-defined symbols. The fact that they did not is a
reflection of the relative disinterest of the manufacturers of computer
equipment in facilities which are needed by science and the humanities more
than by industry and commerce. There are a few exceptions to this, represented
by the Japanese firms Toshiba, Fujitsu and NEC, which have a series of 24
needle printers which have double the download capacity of those printers built
around the Epson standard for 24 needle printers. These remain rather unique
cases, however.
	Note that the Epson ESC P command language for printers applies to 9
needle and 24 needle printers with slight modifications for the latter resulting
from the larger number of needles.
	The advantage of dot matrix printers over daisy wheel printers is clear: you
can define any symbols you like and with those already available in the printer's
firmware you do not have to stop the printer to switch from one type to another.
The technicalities of defining and loading user-defined symbols is discussed in
detail below.


32.0.4.	Laser beam printers

The future of printing belongs quite definitely to laser printers (also referred to
explicitly as laser beam printers) and not to dot matrix printers. These are
printers of the non-impact type which have a very high resolution (usually 300
by 300 dots per inch in text mode) so that one cannot distinguish the single dots
any more. Furthermore they are fast (typically producing between 5 and 10
pages per minute in the text mode), can accomodate a very much larger number
of internal fonts than even the best dot matrix printers and have astounding
graphic capabilities. Additionally they can perform formatting tasks, which one
normally only associates with the typesetting machines of publishers, such as
centering a text after putting it into proportional form, or allowing precise
starting points for various columns in tables when proportional spacing is used.
	The equivalent to the Epson ESC P standard with dot matrix printers is the
command language used for the Hewlett Packard generation of laser printers
(known as Laserjet printers, various models). This quasi-standard is by now so
widespread that other marketers of laser printers (such as Epson themselves)
allow for the emulation of Hewlett Packard with their own machines. By this is
meant that a laser printer can (via the control panel or by means of software) be
made to behave as if it were a Hewlett Packard laser printer, i.e. it can process
data in the Hewlett Packard format.
	The character editor LaserEd supplied with the LinguaFont set can create
and process fonts in the Hewlett Packard standard. Because of the feature of
emulation with many other printers, this means that a whole group of other
laser printers can process the soft fonts generated with LaserEd.
	Vis  vis dot matrix printers, the laser printer has the advantage for the
user of fonts that it can store many of these at once (contrast the situation with
the dot matrix printers where only one download is provided for). Indeed it is
common practice for all printing to be achieved by using soft fonts (downloaded
fonts as opposed to firmware fonts in chip form within the printer). The Series
II Laserjet printer can accomodate 32 soft fonts at once which means that you
can define one or more foreign language fonts, for example, have these in
various point sizes, store several regular fonts alongside these and still have
memory left over. In order to achieve this laser printers contain 512K or 1MB of
RAM memory.


22.1.	Additional printer issues

32.1.1.	Paper feed

With all of the above types of printer, except laser printers, a matter arises
which the beginner computer user should devote some thought to. This is the
matter of what manner of paper feed one chooses. Paper feed is a general term
referring to the mechanism which is employed by the computer for ensuring
that there is a continuous flow of paper for printing. The reason one should
consider this matter carefully is that you usually cannot position paper in the
printer manually (at least not without disturbing the printer and its settings).
Anyone who changes from a typewriter to a computer should bear this fact in
mind. Invariably paper feed poses problems for the beginner: the paper is not
transported correctly, the printer distributes the text of one screen page over
two pages on print out, the printer swallows (or appears to swallow) lines of text
unaccountably. What form of paper feed you are using may be decisive for such
procedures as printing a text from some point other than the beginning, printing
a page or more out of a longer text, etc. If you encounter difficulties then do not
come to the conclusion either that your form of paper feed does not work or
that the application programme you are using cannot deal with the paper feed
properly. In the vast majority of cases the problem rests with incorrect user
operation. This of course covers a multitude of sins and very often the proper
use of a form of paper feed (in particular of cut sheet feeders) is not well
explained in the documentation which comes with the device. You can rest
assured, however, that your software (e.g. WordPerfect, Microsoft Word or
whatever) is in principle capable of handling the paper feed mechanism
correctly as the people who write printer drivers which support such devices
know the ins and outs of paper feed mechanisms.




32.1.2.	Commands relating to paper feed

There are three mains types of paper feed, two of which involve a device being
added to the printer. Before beginning a discussion of what these types are, you
should be clear about the use of a number of terms which are necessary for an
explanation of paper feed mechanisms.

1)	Top-of-form

This is the absolute top margin of a sheet of paper. It may not be identical for
the printer and the programme you are using, however. This situation occurs
when the printer transports paper further than the actual top margin of the page
when positioning paper before printing begins. For the programme which is
controlling the printer, the position which the printer stops at after loading a
new page is the top-of-form.

2)	Form feed

This is a command which has the ASCII code value $12 (abbreviated as "FF" [=
form feed]) and which causes the printer to move to the top-of-form of the next
page. Note that with fanfold paper the paper is simply transported the necessary
number of lines, with a cut sheet feeder a new page is drawn into the printer.

3)	Page eject

Page eject is not an ASCII code. It is a function of a programme which has the
same effect as is achieved by form feed. Normally a programme simply sends a
form feed to the printer when the operation "page eject" is to be carried out (in
dBASE, for example).

4)	Line feed

This is a command which has the ASCII code value $10 (abbreviated as "LF" [=
line feed]) and which causes the printer to move the platen forward by an
amount which corresponds to one line, i.e. to 1/6 of an inch when you have set
line spacing (via your word processor, for instance) to 6 lines per inch. Note that
the line feed is a movement of the platen. If paper is in the printer then the
sheet of paper will be moved forward by a single line. For an application
programme controlling the printer it is irrelevant whether there is a sheet of
paper in the printer or not. The line feeds it sends to the printer is a command
for the motor driving the platen.

5)	Carriage return

This is a command which has the ASCII code value $13 (abbreviated as "CR"
[= carriage return]) and which causes the printer to move the print head from
its current position back to the lefthand margin of the page. It is essential to
grasp here that a carriage return does not necessarily involve a line feed and
vice versa. Contrast this with a typewriter where the platen always moves the
sheet of paper forward a set amount (that which corresponds to the line spacing
chosen) when a carriage return is executed.


32.1.3.	Printer settings

Control panel. On one side or in front of the printer is a panel with three or four
buttons and lights activated by these. They serve the function of issuing a line
feed or a form feed manually, of turning the printer off-line (on which one of
the lights of the panel is normally turned off), of choosing an internal printer
font (usually in connection with a display which shows the number of the font),
etc. Other functions, such as choosing pitch, may be possible with the control
panel. By holding down two buttons simultaneously one can, on power-up, make
the printer perform a self-test which is a print-out of all the internal fonts in the
printer. This merely serves the function of proving that the printer is in working
order. Note two peculiarities of the control panel: (i) you cannot issue a line
feed or a form feed to the printer while it is on-line, you must switch it to
off-line to do so; (ii) if you choose a font by means of the control panel but
demand a different font via your word processor then the latter has precedence.
This is a general feature of computer devices: where a parameter can be set via
hardware or software the latter can override the former.
	DIP switches. Every printer has a set of very small switches in some more or less
inaccessible part of the printer; you normally have to open the printer or take
off a lid somewhere to get at them. These are called DIP switches (the
abbreviation DIP comes from dual-inline-package which is meaningless today).
It is common to have more than one set. They are furthermore numbered, so
that one can have SW1, SW2, SW3, etc. referring to different banks of DIP
switches.
	The function of DIP switches is to set parameters which one does not alter
that often (as opposed to those on the control panel). Among these are the
following: (i) the type of transmission one uses (serial or parallel), (ii) the type
of font one wishes as default (draft or letter quality mode), (ii) the language one
is printing in (there are usually 8 to choose from, English and 7 further
European languages; some printers have 2 sets of characters for Danish), (iii)
the use of the IBM character set or the doubling of the lower ASCII set in italic
form in the upper area, (iv) the setting of the eighth bit to 0 or 1 (note that
setting it to 1 means that everything in the upper ASCII area will be printed in
italics on the Epson FX85, for instance), etc.
	Paper feed and length of page. Another parameter set by DIP switches is
type of paper feed. As a rule one can choose between continuous paper and cut
sheet feed. Be careful to set the appropriate DIP switch to the type of paper
feed you are using. Note that if you intend to operate the printer manually (i.e.
use individual sheets of paper without a cut sheet feeder) you still must set the
appropriate DIP switch to "cut sheet feeder" for reasons which are explained
below under "manual operation").
	Some printers (such as the NEC Pinwriter series) furthermore allow one to
determine how carriage returns and line feeds are to be carried out. To avoid
complications set these to their simple values, i.e. a carriage return should be
nothing more than that and a line feed should not involve a carriage return
either.
	There may also be a DIP switch for the length of sheets of paper used for
printing. Usually only two values are possible: 11 inch (= A4 size) or 12 inch
long sheets. For Europeans the second size is hardly available anyway so that
one does not have to decide what size one wishes to use. Note that the page
length may be given as a number of lines. An 11 inch long page has 66 lines and
a 12 inch long one has 72 lines at 6 lines per inch (normal spacing). This refers
to the absolute number of lines on the page and not to the amount of text you
choose to print on each page (this is determined by the user on the software
level).


32.1.4.	Types of paper feed

1) Manual operation. This is the simplest type. It means that you must place
every page individually into the printer. You cannot (or at least you should not)
use the roller knob to transport the paper into the printer. This is done by the
printer itself. There is a button which automatically draws the sheet of paper
into the printer, shifts the print head to the centre of the platen and positions it
such that the top margin is moved up to just in front of the print head. This
action is that described under top-of-form above. Some printers perform
top-of-form by means of a lever (called the release lever) which is frequently
coaxial with the roller knob. This lever retracts a bar (called a roller shaft),
which normally holds the paper in position against the platen, and the platen
starts to rotate until the paper is drawn in just the amount necessary for the top
margin to be positioned in front of the print head.
	For each page of paper you wish to print you must repeat the procedure:
place a sheet behind the platen, trigger a top-of-form, either by the control
panel or using the release lever. When the release lever is left go of, the printer
usually starts to continue printing of its own accord. If top-of-form is arrived at
by depressing a button on the control panel one usually has to depress another
button to put the print back on-line, i.e. to make it continue printing.
	2) Continuous paper (with tractor feed). One of the distinctive signs of
computer print-out is a ragged edge to the pages. This is due to the use of
fanfold paper which is a type of continuous paper perforated at regular intervals
(corresponding to either 11 (A4) or 12 inch pages). In order for the computer to
be able to transport the paper it must have a left and right margin with holes at
regular intervals, these holes fitting over the teeth of two cog wheels one at each
end of the platen. These wheels are coaxial with the platen and transport the
paper when the platen rotates. The cog wheels prevent the paper from slipping.
With some printers this tractor mechanism is part of the printer; with others it
must be purchased as an accessory. The paper is normally placed in a stack
behind the printer and a form separator keeps the paper being drawn into the
printer (for printing) separate from that which is transported out of it (after
printing).
	When one is finished printing a text one must tear off the sheets of paper
which have being printed much as with a roll of kitchen paper. The left and
right margins with the holes punched in them can be torn off as there is a
perforation between the side margins and the paper which is printed.
	Determining the top-of-form with fanfold paper is done by aligning the
print head with the top margin of the paper via the line feed button on the
control panel. One must take care that after each page the printer leaves
enough blank lines to transport the paper past the horizontal perforation which
marks the end of the page. There is usually a function called "perforation skip"
which is activated when one chooses continuous paper feed with the
appropriate DIP switch. If the printer fails to begin printing each new page at
the required distance from the perforation then one should check the DIP
switch setting and one's software to see if a perforation skip is sent to the
printer by the computer or some other command if the printer is overshooting
the top-of-form of the next page.
	3) Cut sheet feeder (single and multiple bin). In order to print on single
sheets of paper without placing them manually in the printer a device called a
cut sheet feeder has been developed for most printers. It consists of an
attachment placed on top of the printer, linked up to the platen by two cog
wheels. A cut sheet feeder can have one or more bins, by which is meant that
one can have one or more stacks of paper in the feeder (or a stack of paper and
one of envelopes, for instance).
	Cut sheet feeders are either mechanical or electrical. The former type does
not involve being connected to the printer via a cable, while the latter does. The
effect of both is the same, but the management of them is not. The basic
difference between mechanical and electrical feeders is that the former
normally require a printer command to transport a fresh sheet of paper. In the
Epson LQ 1500 standard the command ESC EM R (hex: 1B 19 52) is necessary
to ensure that a fresh sheet of paper is transported correctly (i.e. that a
top-of-form is carried out). This command must be included in the printer
driver of your software (word processor); if it is missing, then the printer will
usually swallow two line feeds and so displace printed text by two lines for every
page which is printed. Sometimes it suffices to specify in a printer driver menu
that one has a cut sheet feeder, sometimes the above command must be added
explicitly. The printer definition utility of WordPerfect, for example, contains an
entry for top-of-form with cut sheet feeders. Note that the command is ASCII
terms is $27$25$82, that is the letters "EM" stand for the ASCII code $25 which
has the name "End-of-Medium" and is abbreviated to "EM" (compare the
abbreviations for carriage return, form feed and line feed above).
	If you are using a multiple bin cut sheet feeder then one must also bear in
mind that to select a bin a certain command is necessary which must be
included in the printer driver of your software.


32.1.5.	Lines to be printed per page

The length of a page is an absolute parameter which is determined by the
longitudinal size of the paper you use when printing. This is separate from the
question of how many lines are to be printed per page which is determined by
one's software. The manuals for word processors explain what it is necessary to
consider when calculating the amount of text which will appear on a page. At
this point I would just like to sketch briefly what factors are involved and
mention a couple of peculiarities of programmes which must be borne in mind
in this connection.
	The text of a single page in a word processor can consist of (i) a header, (ii)
a footer and (iii) text, with possible footnotes. If you have a footnote on a page
then the word processor automatically deducts the number of lines in the
footnote from the body of your text. Note in this connection that the term
'footer' does not refer to footnotes. A footer is a piece of text which is printed at
the bottom of every page; examples of footers are page numbering, chapter
titles, etc.
	Managing headers and footers is a little more complicated than footnotes.
Consider the following diagramme of a page to be printed. It is based on the
layout for a former version of the present documentation which was printed on
a dot matrix printer. The information presented here and the discussion offered
apply in principle to laser printers as well.

LinguaFont  Reference  Manual

CR
CR
(LF)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                                   .
                                   .
                                   .
                                   .
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(LF)
CR
CR
                                - 56 -

The first line of the header consists of the title of the present book; the second
line consists of a separator; the third and fourth lines of the header are blank.
Note that the header is four lines long; it could have been shorter or longer if
desired. As the third and fourth lines are empty they turn up as two blank lines
on printing. This is realised by the word processor sending the printer two
carriage returns without any text (symbolised by the two occurrences of "CR" on
successive lines above). The text of the page is represented by lines of "x'es".
One point deserves attention here: the word processor (here: WordPerfect)
inserts a line feed of its own accord (symbolised by "LF" in parentheses above)
between the header and the text and between the text and the footer. This
means that there are three empty lines between header and text on the one
hand and text and footer on the other hand. This does not have to be borne in
mind during processing on screen. When editing text the word processor checks
to see if a header and/or footer is present, substracts the number of lines
occupied by them from the total number of lines of text which were specified for
printing, the remainder being the number of lines which are to be found
between two page breaks on the screen. To illustrate this consider the values for
the version of the present handbook being discussed.

	Page length         =    66 lines
	Lines per page      =    62 lines       62
	Header              =     4 lines Ŀ
	Footer              =     3 lines >  -7
	Number of lines                         --
	of text             =    55 lines       55

As the book was originally printed on A4 paper and then reduced in size to A5,
1 line spacing was chosen which in turn reduced the number of lines of text per
page to 2/3 of the above value.
	When printing on the dot matrix printer the ESC EM R command was
issued after every page thus insuring that the print head was properly aligned at
the top margin of each sheet of paper before printing.
	The difference above between the page length and the lines per page is 4.
In the appropriate menu of WordPerfect the top margin was set to 2 lines which
meant that WordPerfect started printing 1 line in from the top-of-form position
of the printer. Why 1 one may ask? Remember that one line (a line feed) is
added between a header and text and between text and a footer by the word
processor without its being instructed to do so. This line feed (see diagramme
above) is subtracted from the top margin set in the page format menu of
WordPerfect so that the end result is that the printer carries out one line feed at
the beginning of each page, the number of lines between the top of the header
and the bottom of the footer is then 64 and one line feed is issued at the end,
followed by ESC EM R which causes the printer to align the print head with the
top margin of a fresh sheet of paper. Note here that the line feeds between
header and text and between text and footer are only added when headers and
footers are present. If one simply has text then a top margin of 2 lines in the
page format menu of WordPerfect leads to 2 line feeds being issued before the
printer starts printing text on the current sheet of paper.
	From this example users will hopefully develop an awareness of the factors
which one must consider when one wishes to achieve accurate aligning of text
on paper during printing. Should the printer driver supplied with your word
processor not do the job satisfactorily for you to begin with then you have to
take the technical documentation of your printer in one hand and the reference
manual of your word processor in the other and, in a spirit of patience and
endurance, experiment until the results are precisely what you want.




22.2.	Internal details: What's inside your printer

It is obvious that what you see on the screen should appear unaltered on paper
when printing. This is normally what happens when you print a text in one of the
major European languages (but not any of the Slavic languages) on the PC
(assuming your PC is configured correctly). All printers have a character set
stored internally in the form of firmware much as a video card has a character
set for the screen stored in the character generator chip. In fact good printers
have not one but several character sets. The symbols of each set are basically
the same. They usually contain the lower ASCII set unaltered and, with those
printers capable of printing the entire IBM character set (such as the NEC
Pinwriter series or various Epson printers), the upper area as well. The various
sets are different not in what the symbols they contain represent but in the
actual shape the symbols take. Thus in a proportional character set the letter "g"
is likely to have a descending closed loop while in a non-proportional character
set like Pica 10 this is not necessarily the case. Furthermore the symbols in a
proportional character set are more highly seriffed with more rounded forms. In
a draft character set the symbols are plainer in their shape than those of a Pica
10 letter quality set, etc. In each of these cases, however, the symbols are
basically the same, i.e. a "g" is recognisable as a "g" irrespective of whether it is
printed in proportional, Pica 10 or draft quality. The various character sets of a
printer contain different character shapes but essentially the same character set.
	In the following the questions arising from the difficulty of linking screen
and printer and that of defining customised characters are illustrated with
examples which refer to 24 needle dot matrix printers. Towards the end of the
chapter a special section is devoted to a consideration of laser printers, how
download fonts are generated for them and managed via software.


22.3.	Screen and printer fonts

The fact that the character sets are the same on most printers (bar shape) might
lead one to think that this situation does not allow of any variation. However,
the fact that an "A" on the screen always comes out as an "A" on printing does
not mean that there is an unalterable relationship between screen symbol and
printed symbol. The relationship can be determined by the user. This fact can
be exploited to achieve new user-specific effects on the PC.


32.3.1.	Linking screen and printer

Normally a given ASCII symbol which is shown on the screen is sent to the
printer with its screen value and causes a symbol to be printed which we
intuitively recognise as identical to the screen symbol. One can alter this
situation in one of two ways, very often by linking up the two manners of
alteration.
	The first of these is to define a symbol for the printer (see next section) and
to assign it a code value which is identical with a certain screen symbol. For
instance, say one defines a symbol for the printer, the letter ja in Russian. This
is shaped like a reversed capital "R". For mnemonic reasons one can assign this
symbol the ASCII value $82 which is the same as that for capital "R". Now if you
use the necessary printer command before and after the Russian letter then you
will have linked capital "R" with this user-defined symbol in the printer.
However, with the PC you can go a stage further and redefine the symbol for
the screen as well. In this particular case you will find the letter in the Russian
language font supplied with the LinguaFont set.
	The second case where screen and printer symbol may not coincide comes
about if one filters the symbol of the screen before sending it to the printer;
consider how this functions.
	The letters displayed on the screen are stored by a programme, say a word
processor. When one wishes to print a file created by a word processor then the
printing facility of this programme is used. With sophisticated programmes the
printing facility offers one the possibility of filtering symbols in a so-called
character translation table. What this does is to determine what characters are
to be outputted to the printer when certain characters are inputted by the word
processor's text file. To take an example, say you have a symbol "." which you do
not want printed as a full stop (dot) but as a somewhat larger square then you
could filter it out and replace it by "" on printing, i.e. replace ASCII $46 by
ASCII $254 in the character translation table. The original purpose of character
translation tables was to enable one to produce foreign language symbols by
printing one character and a backspace followed by a diacritic, e.g. to produce
German "" one could print "u", backspace and the inverted commas ". The
result was approximately the same; this was the only way of printing Umlaute
on printers which only had the lower ASCII set at their disposal. In advanced
data processing one can put character translation tables to much more
sophisticated use, particularly when one is using a programme (like WordPerfect,
Word, etc.) which allows one to translate single characters into whole strings.
	For the user of LinguaFont the advantage of character translation tables is
that they permit him to determine what ASCII code is to be printed for a
certain ASCII code of the foreign language screen font which he is using
(generated via VideoEd). With all the screen fonts of LinguaFont the special
symbols are to be found in the upper ASCII area which must be substituted by
code values in the lower ASCII area before being sent to dot matrix printers for
reasons which will become clear when one considers how download fonts
function (see next section). With laser printers and with dot matrix printers
capable of handling more than 128 download symbols (such as the printers of
the NEC Pinwriter Plus series) a character table may not be necessary
depending on how many symbols one redefines for the screen with VideoEd (or
which are redefined in a supplied font of the LinguaFont set) and where these
screen symbols lie in the upper ASCII area.


22.4.	What is a download font?

To put it simply a download font is a font which is sent from the computer to
the printer (the term "download" means to send something away from the
computer to a peripheral device; the opposite of this is to "upload", both terms
are used in a similar sense in networking and telecommunications). It is a font
which the user has defined him/herself (or someone else has defined for
him/her) and which is not available among the firmware character sets of the
printer. You can look at it this way: among the 4 or 5 character sets which the
printer has one is empty and can be determined by the user when loading
his/her own character set into this empty area.
	The font which the user loads into the printer must be in a certain form for
it to be accepted by the printer in the first place. Normally if you design
download fonts yourself you have an editor which ensures that the symbols
which you draw within the editor are stored in the form in which the printer
requires them for downloading. To understand just what this form is, allow me
to sketch the basics of encoding printer downloads.
	The principle of encoding information about character shapes explained
for the screen above applies in general to any type of output device which must
store information on character sets, be it a monitor or a printer. Thus one
should bear in mind that a given download font will consist of series of bytes
which when viewed in binary form offer patterns of dots or blanks which will be
realised by the print head on printing. To take a very simple case, the byte 3C
had the binary form 00111100 which means that in a download this would result
in two blank dot spaces followed by 4 filled dot spaces and closed by two blank
dot spaces. Having explained the principle one can now proceed to an actual
case.
	For the definition of customised fonts one can choose one of four font
types with those printers which conform with the original Epson LQ1500
standard.

	1)    Draft		10 characters per inch (cpi)
	2)    Pica			10 characters per inch (cpi)
	3)    Elite		12 characters per inch (cpi)
	4)    Proportional	(variable character pitch)

The first type is that used for fast printing and has a relatively low resolution. As
it is nowadays considered unacceptable for quality printing, printer fonts cannot
be defined with this low resolution with DotEd. The types under 2) and 3) are
so-called letter quality types as the printer prints more slowly with a far greater
number of dots per character so that the individual dots are scarcely visible. The
fourth type is proportional, a type with different widths for each symbol,
depending on actual character width; thus the letter "i" takes up less space than
the letter "w", etc. Be careful to distinguish between letter-quality printing and
proportional printing. The former does not imply the latter (consider types 2)
and 3) above which both have a standard width for all characters) while the
latter (proportional) is always printed in letter-quality (proportional draft would
be pretty senseless).
	When defining download fonts with DotEd one must choose one of the
latter three types listed above. Note that there are three possible pitches here:
10 cpi, 12 cpi and variable pitch (for proportional spacing). The remaining pitch
types of the printer can be applied to the download symbols without redefining
them for a particular further pitch. Thus one can print Pica 10 in enlarged mode
(all symbols appear twice as wide) or in condensed mode (all symbols appear
nearly half as wide). With printers which support double vertical and triple
horizontal spacing (for example the NEC Pinwriter series) download symbols
can be printed in these pitches, again without redefining them for these pitches.
Note, however, that if you define a download font for Pica 10 cpi (or use one
designed for this pitch) it will not be printed in Elite 12 cpi simply by issuing the
command for Elite to the printer. In this case one must redefine the download.
This has meant that the present author has had to make a decision about what
pitch to choose as standard pitch for the download fonts supplied with
LinguaFont. As 10 cpi is the normal pitch for dot matrix printers it was the
natural choice. Elite download fonts must be defined separately. However, to
do this you can use TranDot to convert a Pica 10 cpi file formally and edit this
subsequently. All you need to do is to narrow the symbols somewhat (the
vertical shape of symbols is identical for all pitches). Bear in mind that the
characters of an Elite (12 cpi) font are 20% narrower than the corresponding
ones of a Pica (10 cpi) font.
	Proportional fonts are not included with LinguaFont as symbols with
varying width pose great difficulties with tables, diagrammes or indeed any type
of text where one requires a flush righthand margin apart from the standard one
at the left of the text. Of course proportional, block justified text remains the
aim of every serious user of a PC for word processing, but at the moment it is
hardly realisable unless one has a printer which is intelligent enough to
calculate flush margins (or centering) after determining the widths of symbols.
The only kinds of printer which do this satisfactorily are laser-beam printers
which produce print out like a typeset book. As DotEd is geared towards 24
needle dot matrix printers, no proportional download fonts are offered, but if
you design a proportional font and then save it to disk, a text file is
automatically generated which contains the widths of the characters defined in
the font file. You can use this to alter the width table contained in your word
processor and thus use such proportional files satisfactorily with right
justification. The beginner should not start with proportional files as they are
troublesome. Try a fixed pitch font to start with (Pica or Elite) and see that you
get that to work to begin with.
	Taking the example of Pica 10, the question now arises, just how does the
printer require customised symbols to be encoded before they are downloaded
into the printer. The answer to this lies in the matrix for these symbols. This is
24 dots high and a maximum of 36 dots wide. Now how could one encode a dot
pattern for such a matrix using bytes? The answer is to distribute the vertical or
horizontal series of dots over several bytes. The exact method used by printers
which conform to the Epson LQ 1500 standard (and later derivatives of this) is
as follows.
	Each symbol of the download file begins with a specification of what
address the symbol is to be stored at (the addresses from ASCII $0 to $127 are
available but as the first 32 of these may be used by the printer as commands
only the values from ASCII $33 to $126 should be used). Then there follow
three bytes which contain the following information: 1) the number of free
spaces to the left of the symbol, 2) the number of dots occupied by the
particular download symbol and 3) the number of free spaces to the right of the
symbol. This can be illustrated neatly by considering a specific case.

			Printer matrix in binary form

			ͻ
			    012345678901234567890123456789012345
			    Ķ
			  0 ..0000000000000000000000000000000...  MSB
			  1 ..0000000000000000000000000000000... 
			  2 ..0000000000000000000000000000000...      
			  3 ..0000000000000000000000000000000...  1st.
			  4 ..0000000000000000000000000000000...  Byte
			  5 ..1111111110000000000000111111111... 
			  6 ..1111111110000000000000111111111... 
			  7 ..0000111110000000000000111111000...  LSB
			  8 ..0000011111000000000001111100000...  MSB
			  9 ..0000001111100000000011111000000... 
			 10 ..0000000111110000000111110000000... 
			 11 ..0000000011111000001111100000000...  2nd.
			 12 ..0000000001111100011111000000000...  Byte
			 13 ..0000000000111111111110000000000... 
			 14 ..0000000000011111111100000000000... 
			 15 ..0000000000001111111000000000000...  LSB
			 16 ..0000000000111111111110000000000...  MSB
			 17 ..0000000011111100011111100000000... 
			 18 ..0000000111110000000111110000000... 
			 19 ..0000001111100000000011111000000...  3rd.
			 20 ..0000000111111000001111110000000...  Byte
			 21 ..0000000001111111111111000000000... 
			 22 ..0000000000011111111100000000000... 
			 23 ..0000000000000000000000000000000...  LSB
			ͼ
			      ٳ 
			                    1F                
			             (width of symbol)       
			      02                               03
			(dots left of symbol)             (dots right of symbol)

		N.B.: MSB = most significant bit; LSB = least significant bit

The above matrix shows the information needed to store a download symbol in
the RAM of a 24 needle dot matrix printer. At the bottom one sees "02" which is
the number of dots to the left of the symbol, then comes "1F" (= 31 in decimal)
which is the width of the symbol in dots, followed by "03" which is the number of
dots to the right of the symbol. In the download file there now follow a series of
bytes which is exactly three times the width of the customised symbol, i.e. 93
bytes. The reason for this can be seen from the above diagramme: Each vertical
column in the symbol is 24 dots high (0 through 23), 24 divided by 8 is 3. As a
byte is an 8 place binary digit one needs three bytes to store the dot pattern of a
single vertical column. The number of columns which the symbols contains
multiplied by three is thus the number of bytes which are necessary to encode
the bit pattern of the entire customised symbol. The download file now
continues with the bytes necessary to specify the address and the shape of the
next download symbol and so on until the entire download font is defined.
	The beginning of a download font contains a number of bytes which are not
part of the definition of symbols but which convey to the printer that a
download file is being sent and that it should be stored in RAM (the sequence
for this is ESC & 0 [hex: IB 26 00]); this sequence is immediately followed by
the start address and the end address of the download file. Then come the byte
sequences which define the shape of each download symbol. Note that each set
of three bytes which makes up the information for a vertical column is ordered
a certain way. The bytes are resolved into binary form and stringed together; the
leftwardmost digit is then the bit for the first position on the top of the column
and the rightwardmost bit of the three bytes is the last position on the bottom of
the column (see the diagramme above, the term most significant bit refers to
the position furtherst to the left of a byte in binary form, the term least
significant bit to the position furtherst to the right).
	The binary information contained in the customised symbol diagramme
above produces the following pattern when printed on a printer compatible with
the original LQ 1500 standard by Epson.

			Printer matrix in zoomed printed form

			ͻ
			    012345678901234567890123456789012345
			    Ķ
			  0 ....................................
			  1 ....................................
			  2 ....................................
			  3 ....................................
			  4 ....................................
			  5 ..................
			  6 ..................
			  7 .........................
			  8 ..........................
			  9 ..........................
			 10 ..........................
			 11 ..........................
			 12 ..........................
			 13 .........................
			 14 ...........................
			 15 .............................
			 16 .........................
			 17 ........................
			 18 ..........................
			 19 ..........................
			 20 ........................
			 21 .......................
			 22 ...........................
			 23 ....................................
			ͼ

If one compares this resolution with that of the screen symbol discussed above
then one sees that the matrix is much finer on the printer than on the screen.
This accounts for the fact that while many of the symbols in the screen fonts of
LinguaFont are somewhat stylised forms of actual letters, the printed forms are
more acceptable. The principle behind the screen fonts is simple: the symbols
must be as easily recognisable as possible. One has to do one's best with the 8 x
14 matrix which the PC offers for screen symbols in the non-graphic mode.
Using a larger matrix would mean resorting to bit-mapped graphics with all the
disadvantages that entails in terms of software restrictions and processing speed.
	Note that there is an additional command for Epson printers and
compatibles which can be used to copy a duplicate of the normal character set
into the RAM area and subsequently replace these by download symbols. This
procedure is useful if one is redefining one or two symbols and does not want to
have to send a printer command from the word processor for download
activation. What one then does is to include this command (ESC : 0, hex: 1B 3A
00) at the beginning of the download file and then follow it with the bytes
defining the shape of the customised symbols. When printing a text, one
activates the download at the beginning and stays in the download as all the
normal symbols which one requires have been copied into the RAM area at the
beginning of the download file.


32.4.1.	Dealing with downloads

The user of download files with a printer must bear a few facts in mind to
ensure that the results he/she expects actually appear on print out. These
concern the printer on the one hand and the software you are using on the
other.
	The first most important fact about downloads is that they are transitory.
As you can load a new download at will into the printer, the files are stored in a
temporary form, i.e. in the RAM area of the printer. This means that if you turn
off the printer the download is cleared from RAM.
	There are other situations in which the download can be lost, however,
notably when the printer is reset for some reason or other, for example when
you make a warm start (by pressing <Ctrl-Alt+Del>). You know that a printer
reset has occurred as the print head make an abrupt movement to the right and
left again and, if you have a cut sheet feeder, a page eject is sometimes issued.
	Once the print head makes the twitching movement typical of a reset the
download is lost and must be re-loaded. If you have to turn the printer off
because of paper jam, remember to load the download again before continuing
printing.
	The software you are using needs to be operated in a special way if you are
working with downloads. Basically what one must remember is to send the
printer command for "download on" (ESC % 1, hex: 1B 27 01 in the Epson ESC
P standard) before the actual download symbol and to send the corresponding
command for "download off" (ESC % 0, hex: 1B 27 00 in the Epson ESC P
standard) after the symbol. When the text contains a series of download symbols
in direct succession then it suffices to have the "download on" command at the
beginning of the series and the "download off" command at the end. If you
forget to turn the download off then all subsequent characters will be taken
from the download and the print out will look chaotic.
	With word processors (or with the word processing facility of integrated
software) one can use one of the screen attributes, such as bold (high video) or
underlined in connection with download symbols. The printer driver must then
be patched in such a way that the position, where the normal command for the
printer attribute corresponding to the screen attribute is to be found, now
contains the download on command and download off is to be found where this
attribute is switched off again. For example if one replaces "bold" by "download"
in the printer driver then with all printers in the Epson ESC P standard this
means substituting ESC E (bold on) with ESC % 1 (download on) and ESC F
(bold off) with ESC % 0 (download out).
	With WordPerfect one can embed printer commands directly and on the
diskette of LinguaFont two macros are to be found, one which turns the
download on (Alt-I for "download in") and one which turns the download off
(Alt-O for "download out"). This means that one does not have to sacrifice a
screen attribute in the printer driver for the download on/off commands. When
processing a text, one then presses <Alt-I>, types the download symbol or
symbols and then <Alt-O>. If one checks on embedded codes in WordPerfect
(press <Alt-F3>, "Reveal Codes") then one sees that the download symbol or
symbols are preceded by the "download on" command and followed by the
"download off" command and these commands furthermore do not disturb one
by appearing on the screen with normal display, i.e. without formatting data
shown.
	The snag with the above method of switching on and off the download is
that you always have to remember to turn it on and off. There is a further
means of activating the download which has one disadvantage which is,
however, frequently outweighed by the advantages.
	In the character translation tables of sophisticated word processors
(including Word 3.0 and later, WordPerfect 4.1 and later) it is possible to replace
one character in a text file with a string on printing. What one can do here is to
replace a download symbol x by a string consisting of ESC % 1 x ESC % 0. This
string, when sent to the printer, activates the download, prints the symbol x
from the download area and deactivates the download again, i.e. returns to one
of the standard firmware character sets. The advantage to this is that one does
not have to remember to embed the "download on" and "download off"
commands when processing a text, or to mark the download symbols with a
certain screen attribute which contains the on/off commands in the printer
driver.
	There is one precondition for using this type of download control. This is
that the download symbols not be on the same screen addresses as normal
non-download symbols, otherwise it would be impossible to print the latter as
the download would always be turned on before them. One could get around
this by defining download symbols as belonging to another character font
(internally for the word processor) but this would involve just the sort of
switching during processing which one wants to avoid. With the screen fonts of
LinguaFont the stipulation that the download symbols not be identical in any
case with the code values of normal alphanumeric characters below 128 is
fulfilled anyway as all the special symbols are at or above 128, i.e. in the upper
ASCII area.
	Well what is the disadvantage of this method which I alluded to above? It is
that printing is slowed down by this means if you print large stretches of
download symbols consecutively. Say you want to print a whole text in a
download font and control the switching of the download via a specially adapted
character translation table (input a character, output a string with translated
character and download commands). The printer needs a pause of about 5 or 6
seconds before it prints each line. The reason for this is that the printer prints
blocks of text delimited by carriage returns, i.e. it prints in lines. In each line of
text, however, it receives for each character the command "download on" and
"download off". The delay is then due to the enormous number of on/off
commands which the printer must process.
	If one is not printing entirely in a special download font, for example, if one
is using a phonetic download font with only some phonetic symbols here and
there in one's text then the method of managing downloads just described is
ideal. Printing is not slowed down measurably and one can forget embedding
download commands during text processing.
	Finally a hint on trouble-shooting if you have difficulties printing when
using downloads. It is possible with printers built around the Epson ESC P
standard to obtain a so-called hex dump of the incoming data from the
computer. This is usually done by pressing one or more buttons on the control
panel before turning the printer on (see your printer manual for details). When
the printer is to produce a hex dump then every byte of incoming data, including
printer commands, is printed as a hex figure. The advantage of this is that one
can see whether certain commands, such as "download on" or "download off",
are actually received by the printer. If they are not then one can check the other
parts of the system, such as the printer driver of the software being used, to
determine the reason for the desired effect not resulting on print-out.


32.4.2.	Using master style commands

When one is editing a text one frequently wishes to use extra large lettering or
to print a paragraph in condensed or the text of footnotes in slightly smaller
pitch than the body of a text. This can be achieved by using the different
commands for Pica, Elite, condensed, enlarged mode, etc. However, one can
simplify the matter considerably by the use of so-called master style commands.
These are formed from a type of printer command contained in the Epson ESC
P standard which allows one to use one and only one escape sequence with a
number at the end which carries all the information about pitch and/or such
aspects as whether the characters are to printed as italics or underlined. My
experience is that beginner users do not usually grasp the gain in simplicity of
printer pitch control which implementing the master style command entails so a
brief explanation of the details of it is called for.
	The basic principle behind the master style command is that one uses just
one escape sequence and by combining numeric values, which stand for pitches
and attributes, attains variations and combinations which would require several
commands otherwise. Consider to begin with the following table.

	Master style parameters

	Print style				Decimal value	Bit number

	Pica  10				0 				0
	Elite 12				1				0
	Proportional pitch		2				1
	Condensed mode			4				2
	Enhanced				8				3
	Double-strike			16				4
	Enlarged mode			32				5
	Italic					64				6
	Underlined				128				7

The master style command consists of two ASCII codes ESC ! (hex: 1B 21)
followed by a number from 0 to 128; this is referred to as ESC ! n where n is a
numeric value. The number has one of the decimal values of the rows listed
above. But the real advantage of the master style command is that you can
combine pitches and attributes. Say for example you want to print text in Pica
10, Italic and Double-strike then you send the command ESC ! 80 to the printer.
How does one arrive at the figure 80? Simply by adding decimal values as
follows:

		Pica 10			0
		Italic			64
		Double-strike		16
						---
				n 	=	80

Three printer commands have now been reduced to one. Furthermore if one
wants to return to, say, Elite after having printed in Pica, Italic and
Double-strike then one simply sends the command ESC ! 1 to the printer, i.e.
you do not need two additional commands, one to turn off Italic and one to turn
off Double-strike.
	Master style commands are very useful when dealing with character types
in word processors. When a word processor offers the possibility of having
several character types then one can activate all of these by using the single
ESC ! command followed by a number for the particular type (pitch and/or
attribute); again returning to a standard pitch is done with just one command,
e.g. ESC ! 0 for Pica 10 irrespective of what pitch and/or attribute is active. The
compactness of master style commands is often welcome when the entry in the
printer driver of some piece of software can only be of a limited length, for
instance only four bytes long.


22.5.	Laser beam printers

Although the means by which printing is achieved is radically different with
laser printers compared to dot matrix printers, the encoding of download fonts
is essentially similar. Indeed any device connected to a computer which is
intended to represent characters in a matrix will do so by taking information
encoded in bytes and translate these into a bit pattern where the value 1 in such
a pattern stands for a dot and the value 0 for a space (i.e. no dot).
	Given this principle which was seen to apply to screen representation and
to dot matrix printers above, one can now look at the details of download
encoding on laser printers. Before examining any individual characters one must
consider two groups of information which are present with laser printer fonts
but not (at least to the same extent) with fonts for dot matrix printers.


32.5.1.	Font descriptor

To begin with each download font has a header at the beginning of the file
which is termed a "font descriptor". This contains information which applies to
the font as a whole, i.e. to each character which may be defined in the file. For
Hewlett Packard soft fonts there is a 64 byte header at the beginning of each
font. Some of this information is now irrelevant for present-day laser printers.
Only that of relevance for designing fonts (with LaserEd) is commented on here.
For more details, see the programme description for LaserEd in the first part of
the present book.
	Font type. This specifies whether a font is 7-bit (up to $127) or 8 bit (up to
$255).
	Baseline distance. Here the distance from the top of a character cell to the
baseline is specified.
	Cell width. This is the entire width of a character cell.
	Cell height. This is the entire height of a character cell.
	Orientation. Two values are possible here: 0 stands for portrait and 1 for
landscape orientation.
	Spacing. Again two possible values exist here: 0 for fixed spacing of
characters and 1 for proportional spacing.
	Symbol set. By this is meant the symbols which are actually printed for
certain ASCII values. As you might expect the lower ASCII area is the same for
all symbol sets (i.e. ASCII $65 for example will always result in a capital "A"
being printed). However the upper ASCII area can be occupied by a variety of
shapes and symbols depending on which set is chosen. How to choose what set
is outlined in the description of LaserEd in the first section of this book.
	Pitch. Pitch is the number of horizontal increments per character. A font in
10 pitch would require the printer to move 30 dots per character as the
resolution in text mode with Hewlett Packard printers is 300 dots per inch which
divided by 10 equals 30.
	Font height. This is not the height of the character cell but the height of the
cell plus a number of vertical dot spaces which will determine how much room
there is vertically between two characters printed on consecutive lines (this can
be affected by line spacing, of course, which can lead to additional space being
added which in not contained in the font height parameter).
	Style. Two values can be found here: 0 for upright printing and 1 for italic.
	Stroke weight. Assuming a value of 0 for normal printing, one can then vary
this to give a darker print (bolding) by increasing the value, say, to +3 or on the
other hand lighten the print-out by using a negative value, say -3. This features
has no equivalent with dot matrix printers which only have a feature "bold print"
which cannot be varied.
	Typeface. By this is meant the shape of individual letters. Take the letter
"R" for example. It can be printed with no embellishments at the extremeties of
the letter (technically known as serifs) to give a sans serif type of print
(Helvetica is a popular sans serif typeface). Or by contrast it may contain such
additions as tiny horizontal strokes at the lower ends of the letter and a tiny
dash to the left at the top of the stem of the letter. This is characteristic of a
Times Roman typeface.
	Underline distance. Not a feature one is likely to concern oneself with
unduly. It simply specifies the distance between the baseline of a letter and the
top row of a printed underscore.
	Font name. This is purely documentary and is included at the end of the
descriptor. It may be used occasionally by the printer, e.g. when printing a test
table of a download font.


32.5.2.	Character descriptor

At the beginning of each character there is also a descriptor, this time specifying
parameters which only hold for the character being defined. The character
descriptor contains the following information:
	Orientation. This is the same as the corresponding parameter in the font
descriptor. Its inclusion here is due the possibility of specifying orientation
separately for each character.
	Left offset. This is the number of dots from the reference point (the left
handside of a character determined by the character width specified in the font
descriptor) to the first column of dots in the specific character.
	Top offset. By this is meant the number of dots a character extends above
the baseline. If the character is sitting on the baseline (as do capital letters, for
instance) then this value is automatically the height of the character plus one for
the baseline itself. If not, it is the character height minus the descender of a
character (e.g. with lowercase "g", "y", etc.)
	Character width. This refers to the precise number of columns which the
defined character occupies. Sometimes called the "ink width" to emphasise the
fact that it is the width of the character itself without possible left and right
margins.
	Character Height. This is the entire height of a character, i.e. the top offset
plus a descender if the defined character contains one.
	Delta-X. In the Hewlett Packard command language for laser printer soft
fonts there is no parameter called right offset. Instead the term Delta-X is used
to refer to the total width of a character, i.e. the left offset, the ink width of a
character and a number of further dots (which one would term "right offset").
	The Delta-X parameter is often referred to as the distance travelled by the
printer cursor after printing a character. This is another way of looking at it.
You can imagine that a printer has a cursor (the current location of the printer's
laser beam). When a character is printed, the beam moves to the right a number
of dot spaces (the left margin), then it prints the character (i.e. moves to the
right by the ink width of the character) and subsequently moves to the right
another few dots. The total distance travelled is the Delta-X value for the
particular character. In LaserEd the term right offset is used as this is intuitively
understandable given the existence of a parameter "left offset" anyway. The
Delta-X parameter is then calculated by the programme.
	After the character descriptor a sequence of bytes follows in a font file
which specifies how long the actual character definition is (the printer and
indeed LaserEd must know this is order to read the correct number of bytes for
the definition of the current character). There then follows a series of bytes
which must be resolved to a series of bit patterns to give the matrix for the
character defined in much the same way as with dot matrix printer download
files. While the technicalities of calculating the bytes necessary for encoding a
symbol are different between the two printers, the principle is the same. To see
how a laser printer achieves this task, consider the following matrix.

Symbol definition for laser printer in 40 x 60 matrix

ͻ
  0123456789 123456789 123456789 123456789 123456789 123456789
  Ķ
 0........................
 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........................................................ۺ
ͼ

The first point to be noted here is that the size of the matrix is flexible. In this
particular case it is 40 rows by 60 columns (this corresponds roughly to a 14
point capital letter character). The left offset (and the right one for that matter)
do not have to be left free within the bitmap matrix on the editor screen but are
specified in a table of character parameters (for the details of this, see the
description of LaserEd). There is no baseline in the matrix either. This is
calculated by substracting the top offset from the character height. If these are
identical then the symbol is sitting on the baseline, i.e. has no descender. In the
case of the above symbol (which represents the Russian shch letter) the
horizontal line of the character is on the baseline and the tail to the lower right
forms a descender. As neither the left offset nor the baseline is included in the
bit map matrix with laser printer characters, all the symbols of a download font
are flush with the left and upper margins of the screen matrix (you will most
likely have noticed this with LaserEd).
	What remains is the conversion of a screen matrix characters into a series
of bytes which form the character definition data in the corresponding
download file. This is achieved as follows (see matrix diagramme below). The
bit pattern of each row is converted into the corresponding bytes. As a byte has
8 bits the result is a multiple of 8. But what if the number of columns in not such
a multiple? This is in fact the case with the sample character above which
occupies 60 columns, 4 less than the next multiple of 8, 64. Here the notion of
byte boundary padding, as it is called, comes in. Starting at the leftmost column
the bit pattern is translated into bytes. 7 bytes can be so translated with the
above character. The remaining four bits (i.e. columns 56 to 59 of the screen
matrix which starts at column 0) are taken to be the four most significant bits of
an 8th. byte and the remaining four righthand bits (least significant ones) are set
to 0. 8 bytes for each row with 40 rows results in 320 bytes being needed to
include the definition of this character in a download file. Not all characters in a
file will be as wide as the one shown above. Slender characters like "i" or "l" will
require fewer bytes to be encoded. Nonetheless, one arrives at a considerable
size for such a download font. A 14 point download file with 256 characters
would take up around 50K. As you can see one is dealing with files of quite
different dimensions from those of dot matrix download files. Point sizes usually
range from 10 to 18 in a text with some headlining and some footnotes. To print
a text using soft fonts usually involves loading anything up to a few hundred
kilobytes of download files to have an appreciable range of point sizes at one's
disposal.

	Key to encoding of character's bit pattern:

	boundary padding = 4 bits (4 empty columns to right of character)
	0 - 59 = 60 columns + 4 = 64  8 = 8 bytes per row (0 - 7)
	0 - 39 = 40 rows, 8(bytes) x 40(rows) = 320 bytes of definition data

ͻ
  0123456789 123456789 123456789 123456789 123456789 123456789 123
  Ķ
 01111111111110000000001111111111110000000001111111111110000000000
 11111111111110000000001111111111110000000001111111111110000000000
 20001111110000000000000001111110000000000000001111110000000000000
 30000111100000000000000000111100000000000000000111100000000000000
 40000111100000000000000000111100000000000000000111100000000000000
 50000111100000000000000000111100000000000000000111100000000000000
 60000111100000000000000000111100000000000000000111100000000000000
 70000111100000000000000000111100000000000000000111100000000000000
 80000111100000000000000000111100000000000000000111100000000000000
 90000111100000000000000000111100000000000000000111100000000000000
100000111100000000000000000111100000000000000000111100000000000000
110000111100000000000000000111100000000000000000111100000000000000
120000111100000000000000000111100000000000000000111100000000000000
130000111100000000000000000111100000000000000000111100000000000000
140000111100000000000000000111100000000000000000111100000000000000
150000111100000000000000000111100000000000000000111100000000000000
160000111100000000000000000111100000000000000000111100000000000000
170000111100000000000000000111100000000000000000111100000000000000
180000111100000000000000000111100000000000000000111100000000000000
190000111100000000000000000111100000000000000000111100000000000000
200000111100000000000000000111100000000000000000111100000000000000
210000111100000000000000000111100000000000000000111100000000000000
220000111100000000000000000111100000000000000000111100000000000000
230000111100000000000000000111100000000000000000111100000000000000
240000111100000000000000000111100000000000000000111100000000000000
250000111100000000000000000111100000000000000000111100000000000000
260000111100000000000000000111100000000000000000111100000000000000
270000111100000000000000000111100000000000000000111100000000000000
280000111100000000000000000111100000000000000000111100000000000000
290000111100000000000000000111100000000000000000111100000000000000
300000111100000000000000000111100000000000000000111100000000000000
310000111100000000000000000111100000000000000000111100000000000000
320001111110000000000000001111110000000000000001111110000000000000
331111111111111111111111111111111111111111111111111111111110000000
341111111111111111111111111111111111111111111111111111111110000000
350000000000000000000000000000000000000000000000000000011111100000
360000000000000000000000000000000000000000000000000000001111100000
370000000000000000000000000000000000000000000000000000000111110000
380000000000000000000000000000000000000000000000000000000011110000
390000000000000000000000000000000000000000000000000000000011110000
ͼ
    
Bytes:  0      1       2       3       4       5       6       7  




13.		Keyboard drivers

23.0.	Preamble: A word about keyboards

For the English speaking user of a PC the keyboard is something which he/she
does not have to think about. This is because the values assigned to the keys
correspond to those which the computer assumes when turned on, if not
instructed otherwise. For the foreigner the use of a PC in a major European
language entails the loading of a so-called keyboard driver. This normally takes
the form of a kind of character table which corresponds to the alphabet of the
language he writes in and the character table furthermore corresponds to the
symbols printed on the keys of the keyboard delivered with his PC in his own
country. Thus for a German the keyboard of the PC contains "Umlaute" and 
instead of the different kinds of bracketing to be seen on the keys to the right of
the American-English keyboard. The keyboard driver keybgr.com is loaded on
power-up and assigns the keys of the keyboard the German values which are
printed on them. If your printer can only process 7-bit wide characters or if it is
a daisy wheel printer it needs to be switched to German via a so-called "escape
sequence". Note then that the symbol which appears on the screen when you
press a keyboard key may not have the same numerical value (i.e. ASCII code)
as the same symbol which appears on your printer if the latter operates in the
so-called 7-bit mode. For the operation of the keyboard, however, it is
irrelevant what happens at the printing stage.


23.1.	How the keyboard works

The keyboard of the PC, like other peripheral elements of the computer, is
controlled by a chip of its own. This is the 8048 in the PC and the 8042 in the AT.
These chips have the function of monitoring the keyboard to see (i) if a key is
pressed and (ii) for how long it is pressed. As nearly all of the keys of the
keyboard are repeat keys (ii) is an important function: any key which is held down
for more than half a second (or whatever the value for the repeat function is)
causes the controller chip to send the code of that key repeatedly to the computer
until the key is released. The controller chip passes the keystrokes to the CPU
which via a ROM BIOS interrupt (INT 9h) stores them in a so-called queue where
they await processing. About 15 keystrokes can be held in the queue if the
computer is not able to process each keystroke as it comes. Note that some
programmes enlarge this buffer by a technique of their own and others clear it.
Clearing the keyboard buffer is necessary for smooth cursor control. Say, for
example, you are moving the cursor horizontally down the screen and you wish to
move 16 lines, for argument's sake. You must hold the <ArrowDown> key
depressed for a second or two to do so. However because their is a delay in
response between keystroke and the desired action on the screen the cursor will
normally wait for a fraction of a second before beginning to move. If you now hold
the cursor depressed until it shifts 16 lines downwards and then let it go, you find
that it shoots beyond where you wanted it to stop. This can be very irritating because it means you have to reposition the cursor again. Some programmes, such
as Word and WordPerfect clear the keyboard buffer regularly (so and so
many times a second) so that when you release the cursor it freezes on the spot.


23.2.	Scan codes

It is essential to grasp that when a key is pressed on the keyboard a certain
letter is not sent to the computer. Instead the keyboard sends a so-called scan
code which in its turn is translated either by the ROM BIOS of the computer
and/or by a resident keyboard driver if one is present. This latter situation
arises when (i) the computer is used to write in any foreign language for which
there is provision (French, German, etc.) or (ii) when a custom keyboard driver
(such as that supplied with LinguaFont) is encountered.
	There are 83 or 84 scan codes (for the PC and the AT respectively) and
101/102 (for the newer PS/2 machines by IBM) they are associated
permanently with certain keys. The following diagrams show the layout of the
current PC keyboard shipped by IBM (i.e. the 101/102 key version) and the
scan codes associated with its keys.
	Note that there is no difference in scan codes between the different
language versions of various keyboard drivers; the redirection of
language-specific characters is achieved under DOS by the particular national
keyboard driver, e.g. keybgr.com, which is loaded residently and filters keyboard
input before this is further processed.

				IBM PC keyboard

		Ŀ Ŀ Ŀ Ŀ
		Esc F1F2F3F4F5F6F7F8F9F10F11F12 PSSLSR   [Lights] 
		   
		Ŀ Ŀ Ŀ
		 ` 1 2 3 4 5 6 7 8 9 0 - = Back In  PU NL / *  
		Ĵ Ĵ Ĵ
		Tab Q W E R T Y U I O P [ ]     DeEdPD Hm PU  
		Ĵ    Ĵ +
		Caps A S D F G H J K L ; ' \ <ٳ            <    >  
		Ĵ    Ŀ    Ĵ
		Sht \ Z X C V B N M , . / Shift          Ed PD  
		Ĵ Ŀ Ĵ 
		CtrlAlt         Space            AltCtrl <   > Ins Del<ٳ
		  

Abbreviations

1) Esc = Escape; 2) NL = NumLock; 3) SL = ScrollLock; 4) SR =
System Reset; 5) Tab = Tabulator; 6) Ctrl = Control; 7) Sht =
Shift; 8) Hm = Home; 9) Ed = End; 10) PU = PageUp; 11) PD =
PageDown; 12) PS = PrintScreen. The remaining abbreviations are those
used on the keys themselves, namely 1) Alt = Alternate; 2) Caps =
Capitals; 3) Ins = Insert; 4) Del = Delete.

				Scan codes of keys

		Ŀ Ŀ  Ŀ
		 1  59606162636465666768133134  PS46SR
		   
		Ŀ Ŀ Ŀ
		41 2 3 4 5 6 7 8 910111213 14   827173 69535574
		Ĵ Ĵ Ĵ
		 151617181920212223242526 27    837981 717273  
		Ĵ 28  Ĵ78
		 29 303132333435363738394041               757677  
		Ĵ    Ŀ    Ĵ
		 424344454647484950515253   54      72    798081  
		Ĵ Ŀ Ĵ28
		 29  56           57              58 29  758077  82  83  
		  

Not only does the keyboard generate a certain scan code when a key is pressed
it also generates one when the key is released. The number of the release scan
code is obtained by adding 128 to the input scan code, i.e. by setting the eighth
bit. This fact is, however, irrelevant even when using the keyboard routines of
LinguaFont as the release scan code is generated automatically irrespective of
what the input scan code is.


23.3.	Shift state

You will probably have noticed in the above diagrammes that scan codes are
only given for lower-case letters and digits. What about the upper-case letters
and the diacritics on the numeric keys? These are taken care of very simply. The
controller chip for the keyboard monitors what key is depressed and what status
flag goes with it. By this is meant whether another key is pressed simultaneously
which would affect the interpretation of the keystroke for the BIOS and DOS
resident keyboard driver. This "other key" is one of the following: (i) <Shift>
key; (ii) <Control> key; (iii) <Alt> key. When one of these (or in some cases
a combination of them) is pressed and an alphanumeric key is pressed as well
one obtains a different shift state as it is called; this state is maintained as long
as the particular key is held down. Thus if you keep the <Shift> key depressed
all the other keystrokes you make (from a through z) are interpreted as
upper-case letters until the <Shift> key is released; this is possible because the
controller only sends the release scan code of the <Shift> key when this is
actually released by the user.
	In addition to this the BIOS checks to see whether the <CapsLock> key is
also active in which case it substracts 32 from the characters between 97 and
122, i.e. it changes lower-case letters into upper-case ones, and whether the
<NumLock> key is on in which case the cursor pad scan codes are interpreted
as numbers and not as cursor control commands, such as <ArrowDown>,
<PageUp>, <Home>, etc. Note that these two keys are toggles, that is they
reverse a given state (turn "on" to "off" and vice versa); using the <Shift> key
with the <CapsLock> key active leads to lower-case letters being displayed.
Some programmes when loaded turn the <CapsLock> key to "on" (this is
achieved by setting bit 6 of the first keyboard status byte). Normally the reason
for this is that keyboard input for the particular programme (most frequently a
programming language) is not case-sensitive and thus automatically entered as
upper-case.
	The various status changes can be easily recognised by representing the
so-called keyboard mask byte diagrammatically. The byte consists of 8 bits
which can be combined in various manners to renders combinations of shift
states (e.g. <Control+Shift>, <Alt+LeftShift>, etc.).

		Keyboard status mask

	Ŀ
	  7    6     5      4      3    2      1      0   
	Ĵ
	 Ins  Caps  Num   Scroll  Alt  Ctrl  Left   Right 
	      Lock  Lock  Lock               Shift  Shift 
	

The BIOS of the computer furthermore monitors input to see whether certain
critical combinations of keys have been sent from the keyboard. Such
combinations are, for example, <Ctrl-Alt+Del> which triggers a warm start,
<Ctrl+Break>/ <Ctrl-C> which causes a programme to suspend action
(unless the particular programme has reset the relevant interrupt (INT 23h)
internally for itself, in which case it does something else) or <Ctrl+PrtSc>
which causes a dump of the current screen display (taken from the screen
memory buffer) to be sent to the printer.
	When information from the keyboard is conveyed to the computer as scan
codes not one but a set of two bytes are sent which are termed the main byte
and the auxiliary byte respectively; seen from the point of view of the
programmer, the keyboard input is an integer which is divided into two bytes,
the standard size of an integer in C++ (on a PC). This is the way keyboard
input is interpreted in the programmes of the LinguaFont set.
	In all cases where a simple alphanumeric key, or an alphanumeric key in
combination with the <Shift> or <Control> key or an ASCII code via the
<Alt> key and numeric keypad (see below) is entered the ASCII value is
stored as the main byte with the auxiliary byte containing the scan code.
Consider a few examples:

           [Hex Number Id]  Ŀ        Main Byte
                                   
        CARR_RETURN           0x 1c 0d
        BACKSPACE             0x 0e 08
        CTRL_U                0x 16 15
        CTRL_D                0x 20 04
                                 Ŀ 
                                    Auxiliary Byte

The notation above is that used in the C preprocessor definitions of keys used in
LaserEd and DotEd, for instance. In the left column are the names of keys on
the keyboard (or key combinations) and in the right are two byte integers which
are quoted as hex values (labelled with a preceding "0x"). The first two digits
(e.g. "1c") indicate the auxiliary byte and the second two (e.g. "0d") show the
main byte. You can see that the auxiliary byte is identical with the scan codes
for the particular keys as indicated in the keyboard diagramme above (note that
the latter are quoted in decimal form for ease of recognition).
	Alongside normal keys there are also a number of special keys and key
combinations which are transmitted to the computer with the main byte set to
zero while retaining the scan code as the value for the auxiliary byte. Consider
the following.

	PAGE_UP                  0x 49 00
	PAGE_DOWN                0x 51 00
	CTRL_PAGE_UP             0x 84 00
	CTRL_PAGE_DOWN           0x 76 00

The above applies to the function keys, to combinations of the <Shift> key, the
<Control> key or the <Alt> key with either a function key or an
alphanumeric key (though the combination of <Control> key and
alphanumeric key renders a normal integer with an ASCII value as main byte as
these combinations actually exist under ASCII $32). Furthermore all the keys of
the numeric keypad (when it is not numerically active!) send scan codes which
are translated as values for the auxiliary byte with the main byte set to zero.
Such keystrokes are those which are typically used to activate commands in
programmes as opposed to those used for entering data.


23.4.	Entering codes directly

Apart from using the alphanumeric keys of the keyboard one can enter ASCII
codes directly by depressing the <Alt> key and typing the number of the ASCII
code on the numeric keypad to the right of the keyboard. This is obviously
superfluous with codes which are available on the alphanumeric keys anyway
but is very useful for accessing codes which are not present on the keyboard. By
this means one can access the entire IBM character set above 128 and below 32
(programme permitting!). A practical example of where this can be sensible
would be the following. Say you are writing an English text and would like to
quote something in French, Spanish, German or whatever. The letters of these
languages which are not in the English alphabet but somewhere in the IBM
character set can only be accessed by holding down the <Alt> key and typing
the number of the letter you are looking for on the numeric keypad. Thus while
writing English you can have access to special letters like , , , , , , , etc.
The numbers required for these letters are $130, $132, $134, $135, $140, $145,
$149. For a complete list of the foreign language letters available as standard,
see the appendix to this handbook. Note that if you have a good printer which
reproduces the entire IBM character set (such as the NEC Pinwriter series) and
you do not tamper with the character translation table of your software (word
processor or whatever) then these foreign language letters appear in just their
right form on the printer.
	The direct method of entering ASCII codes just described is of significance
for the user of LinguaFont as he can access the special symbols of the screen
font he has loaded by typing the number of the particular symbol on the
numeric keypad while holding down the <Alt> key. Just what symbols have
what ASCII values in the re-defined screen fonts depends on what ASCII values
you assigned to the symbols you defined within VideoEd.
	The easiest way, however, to enter the special symbols of a screen font from
LinguaFont is to adapt the keyboard driver which is shipped with the
programme set to your own needs. How this is achieved is described below.


23.5.	Using special keyboard drivers

For all screen fonts of LinguaFont, or fonts users may produce themselves,
corresponding keyboard drivers can be generated with the help of the
programme SetKey which enables one to set custom ASCII values on the keys of
the PC. This then serves the function of facilitating the entry of the special
symbols of the screen fonts. In each case the keyboard driver generated is a
DOS-executable programme which is loaded (residently) and remains at one's
disposal until replaced by another keyboard driver or until the computer is reset
(warm or cold start). Like any other DOS programme a keyboard driver is
loaded by simply typing its name, the letters in front of the extension .COM. To
ease identification all the keyboard drivers should begin with the element
KEY..., for instance the Greek keyboard driver which happens to be supplied
with LinguaFont for illustration purposes, for example, is named keygreek.com
and it is loaded by entering keygreek at the DOS prompt. Note that nothing
appears to happen when you do this, that is the screen display does not change
in any particular way, but by the fact that DOS does not echo the error message
"Bad command or file name" one knows that the programme has been executed
without any problems.
	A keyboard driver puts two possible keyboard layouts at your disposal.
Every alphanumeric key can have two possible values assigned to it
(independent of the state of the status byte, see previous section). When
switching between one layout and another the entire group of keyboard settings
changes.
	When you load a keyboard driver, the default layout is that of the language
you normally write in (in practice either English or German as these are the two
languages LinguaFont is available for). To switch from the default keyboard to
the custom one (that which is indicated by the name of the particular keyboard
driver) you press the following combination of keys:

			<Ctrl-Alt> + <F2>

By this is meant that you hold down the <Alt> key and the <Control> key
together and while doing so press the <F2> key once. If you check the
keyboard layout by pressing a few alphanumeric keys then you find that the
special symbols of the language contained in the name of the keyboard driver
appear on the screen (assuming you have loaded the corresponding screen font
file beforehand). German users of LinguaFont should note that with the
German keyboard drivers, the entire set of English (i.e. American) characters
are available, even though the default layout is German (with Umlaute and ),
that is the square and curly brackets ([]{}) as well as the backslash (\), the
broken vertical bar (|) and the tilde ~ are nonetheless available as these are
necessary in many programmes and of course of benefit to the user no matter
what language he/she is working with.
	To switch back to the default layout of the keyboard you perform the
following keystrokes:

			<Ctrl-Alt> + <F1>

This restores the normal values to the keys until the next time you perform the
keystokes <Ctrl-Alt> + <F2>. You can switch between layouts as often as you
wish and from whatever level you like.
	Note. Some word processors use their own keyboard driver internally. In
such cases the LinguaFont keyboard driver, should one be loaded, is disabled.
There is nothing you can do to prevent this; the only solution is to define the
internal keyboard of the particular programme to suit your needs.
	Remember that if you edit a text with symbols from one of the fonts from
LinguaFont, save the file and retrieve it at a later work session then you must
load the necessary screen font to see the correct symbols on the screen; to edit
the text you should load the necessary keyboard driver, although to enter one or
two symbols one could use the <Alt> key + numeric keypad to access the
special symbols as long as you remember what ASCII values they have in a
particular screen font. Do not forget to load the necessary download font before
printing as otherwise you will not obtain the symbols from the screen on
print-out.





1Appendix A

A closer look at the IBM character set

It is obvious from a glance at the keyboard of a PC that the IBM character set
contains the letters of the English alphabet, in lower- and uppercase, the
numbers 0-9 and a set of diacritics (largely punctuation). However, what one
sees on the keys is only a small part of the IBM character set, to be precise it
only 95 of the 256 characters contained in the set (there are 47 keys, multiplied
by two gives 94; the space bar also corresponds to a character [ASCII $32 =
space!], this giving a total of 95). The beginner may well ask, how can one reach
them? The answer is by depressing the <Alt> key on the lower left-hand side
of the keyboard and typing a number, on the numeric pad to the right of the
keyboard, which corresponds to the ASCII value of the character one wishes to
access, e.g. $235 to access the symbol which looks like Greek delta, .
	There is another way of accessing a character not shown on the keys of the
keyboard. Take for instance the character  which is number 235 in the IBM
character set. As the characters which appear on the screen on depressing a
given key on the keyboard are not unalterable one can write a keyboard routine
(with the programme SetKey supplied with LinguaFont, see description above)
which places the characters one wishes to access via the keyboard on the letter
keys. This then renders unnecessary the use of the <Alt> key together with the
numeric value of a character. Such keyboard routines are an integral part of the
startup batch file autoexec.bat when using the PC to write in a foreign language
(one of the major European languages such as Swedish or German or French,
etc.).
	Bearing in mind that the keys of the keyboard correspond to well less than
half the characters of the IBM set, it would seem appropriate to consider how
the character set is arranged as a whole.


ASCII, extended ASCII and the IBM character set

First half, Lower ASCII

The set opens with 0 (i.e. not 1!) which is blank. There are 256 symbols in all,
i.e. 0 to 255.

$1 - $31

Printer control codes, with a few characters, such as $3 (= <Control-C>,
programme abort), $7 (=<Control-G>, bell), $26 (= <Control-Z>,
end-of-file), which are used by programmes and by the operating system as
signals of one kind or another. They are frequently referred to by specifying the
<Control> key and an alphanumeric character from @ and (upper-case) A
through Z which cover the characters ASCII $1 to $26. By pressing the
<Control> key with one of these characters one can access them on the PC. It
is of course possible to do the same by using the <Alt> key and the
corresponding ASCII number on the numeric keypad (with the exception of $0
which cannot be accessed via the numeric keypad). The codes from $27 to $31
can be accessed by using the <Control> key and one of the bracketing symbols
[, \, ], {, |, }, ~. The names which are used for the codes under $32, such as
"End-of-medium", "Device control", "Cancel", "Acknowledge", etc. (see
appendix), derive from usage in telecommunications which was established in
the early days of the ASCII code.

$32 - $127

The subset of alphanumeric characters. This consists of the following in
ascending order: (i) space, diacritics (punctuation) [$32-$47], (ii) the digits 0 - 9
[$48-$57], (iii) diacritics (some more punctuation) [$58-$64], (iv) the uppercase
letters A-Z [$65-$90], (v) diacritics (bracketing and punctuation) [$91-$96], (vi)
the lowercase letters a - z [$97-$122], (vii) diacritics (bracketing) [$123-$126].
	When a foreign language is used on the PC additional symbols replace
some of the above characters for 7-bit processing, thus the "Umlaute" and  of
German are to be found instead of the characters $91-$93 and $123-$126. For
8-bit processing (what you usually have on a PC and the software designed for
it) foreign language symbols such as Umlaute are to be found in the area
immediately above $128 (see below).
	The first half of the character set ends with a small triangular character,
$127, known as "delete".

Second half, Upper ASCII

$128 - $173

This section contains symbols not present in the alphabet of English but
nonetheless needed in the major European languages (Romance and Germanic
languages, but not Icelandic or the Slavic languages, for example) such as
vowels with various kinds of accents over them, ligatures like , the palatal
nasal of Spanish , etc. This group is sometimes referred to as the World Trade
Character Set.

$174 - $223

If you look at a table of the IBM character set then you see that this section of
the set contains peculiar angular shapes and shadings. This section is known as
the block graphics area. When these characters are stringed together they are
used to draw boxes of various shapes and offer backgrounds of different
shadings on the screen of the PC. Programmes which makes liberal use of
windows, such as many of those in the LinguaFont set, rely heavily on these
symbols to represent the compartments into which the screen is divided during
the operation of a programme.

$224 - $239

This section contains a selection of letters from the Greek alphabet.

$240 - $254

This section contains some mathematical symbols and is intended together with
the previous section to be used in scientific applications.
	The character set closes with $255 which is blank.

Note. In the following section the numbers of the IBM character set will be
referred to by writing a dollar sign and a number after it, e.g. $65 refers to
ASCII character number 65 which is displayed on the screen and your printer as
uppercase A. I will use this accepted convention for referring to characters. In
order to follow this you will need to consult the table of the IBM character set
found in the next appendix. Note that in other literature characters are often
alluded to by using hex notation (with base 16) which can be confusing for the
novice when a particular number does not contain a letter (a value from 10 to
16 in the hex system). For instance, one must be careful if one sees a figure like
"20" when an author is quoting in hex, this is decimal "32", decimal "20" being
hex "14".


Bytes, hexadecimal numbers and the 256 limit

The above character set is ultimately derived from the so-called ASCII set
(American Standard Code for Information Interchange) which originally
contained only 128 characters. The first 128 of the IBM character set is the
same as the original ASCII set (although the actual shapes of the characters $1
to $31 have been invented by IBM).
	The second 128 (the upper half) is peculiar to IBM. It is common practice,
however, to simply talk of lower and upper (or extended) ASCII by which is
meant the first 128 and the second 128 respectively.
	The two parts of the IBM character set can also be referred to as 7-bit
ASCII and 8-bit ASCII respectively. The reason for this is as follows. The
symbols of the IBM set are encoded as bytes (a unit which consists of eight
binary places or digits). Each binary digit is termed a bit. The numerically most
significant bit is the leftwardmost one. This can be seen from the following
comparison. Before starting this discussion, however, you should be warned that
all counting systems start at 0 and not 1 as we do when we count as laymen so to
speak. Thus the decimals in the following appear to be "off by one" which they
are not as they begin at 0, not 1.
	The decimal number "7" corresponds to the binary number "1000", the
decimal number "9" corresponds to the binary number "10000". In the latter case
the "1" is one place more to the left. As the most significant bit always lies to the
left, this binary number is greater that the first one where the "1" is one place
less to the left ("10000" vs. "1000"). Now in binary terms the decimal number
"127" is "1111111", and the decimal number "255" is "11111111", i.e. "255" has
one more "1" to the left than does "127", it is 8 bits long whereas "127" is only 7
bits long. To talk of some piece of computer equipment as being "8-bit" means
in effect that it has the capability of processing information which is encoded in
binary digits which are "eight places wide".
	Note furthermore that if one uses a byte to encode a 7-bit long binary digit
then the leftwardmost byte is necessarily zero, i.e. to represent decimal "127" as
a byte one writes "7F" which in binary terms is "01111111". The eighth bit of this
byte is zero. Frequently in computer programming and printer control one talks
of setting the eighth bit. By this is meant that the leftwardmost bit of a byte is
changed from zero to one, without altering any other bit. The result is a value
which has been increased by 128, for example setting the eighth bit of (hex) 5A
(= [binary] 01011010) results in (hex) DA (= [binary] 11011010). With printers
which operate according to the Epson ESC P standard, setting the eighth bit of
incoming data causes it to be printed in italics. There are three printer
commands which are associated with the eighth bit of incoming data: ESC >
causes the eighth bit to be set; ESC = causes it to be deleted (i.e. set to zero);
ESC # retracts printer control of the eighth bit. The ultimate and the
penultimate command are not the same, as the one forces the eighth bit to be
zero in every case while the other simply leaves the eighth bit of incoming data
untouched.
	From the above remarks one can now understand why the number of
characters in the IBM character set cannot be greater than 256: when a binary
number has a maximum of eight places then the largest number it can represent
is (decimal) 255 (= binary 11111111, or hexadecimal FF). To represent a larger
number it would have either to include an extra place, e.g. be 9-bit or upward,
or use two bytes to encode a single number. But as the IBM PC (but by no
means every computer!) is built on the principle of eight-bit wide data
processing (i.e. is based on the byte) the upper ceiling of 256 cannot be
exceeded in encoding characters with single bytes.






1Appendix B

Problems: Causes and remedies

The purpose of the present section is to offer users a few tips with problems
which they might encounter with LinguaFont, not so much with the handling of
the programmes themselves (check the various sections of the manuals if you
have difficulties here) but with the hardware devices which are controlled by
programmes of the LinguaFont set. These can be grouped into three broad
areas.

1)	Video adapters

Remember that the screen fonts which you generate with VideoEd can be used
in connection with the following adapter types:

	1)	Hercules Graphics Card Plus
	2)	Enhanced Graphics Adapter (EGA)
	3)	Video Graphics Array (VGA)

If your system has anything else, e.g. a normal Hercules card, then you cannot
load a customised screen font.

Problem 1:  Font is discarded by an application programme

Some data processing software resets the video adapter when it is loaded. This
means that if you load a screen font with LoadVid (and have seen on the ASCII
chart the latter displays that the font is correctly installed) you will not have the
customised symbols at your disposal within this programme or afterwards for
that matter. There is a way around this: load your screen font from within the
offending programme by running a DOS command with LoadVid and its
switches as parameters. This will usually do the trick as the resetting of
hardware is something which, if done at all, only occurs when a programme is
loaded.

Problem 2:  Font is lost on loading an application programme

This is a similar problem to the above but can have a different cause, namely
loading a graphics programme. All the screen fonts of LinguaFont only apply to
the so-called alphanumeric mode or text mode. They cannot be used when the
video subsystem is in the graphics mode. Normally you recognise the graphics
mode as large and unusual shapes or graphics are available within a certain
programme. Users of word processors should also note that Microsoft Word
loads automatically into the graphics mode (although this is not immediately
obvious) so that if you wish to use a customised screen font you must use it with
the /c parameter, i.e. enter word /c from the DOS command line.

2)	Keyboards

This is the least problematical area of hardware devices controlled by
LinguaFont. Recall that you copy the supplied keyboard akeyb.exe and edit it to
suit your needs (with SetKey) and then load it from the DOS level. You switch
between the default layout (English or German) and your customised layout by
pressing <Ctrl-Alt+F1> or <Ctrl-Alt+F2>.

Problem 1:  Application programme has its own keyboard driver

The above method should work; if it does not there is only one reason for this:
the programme you are using has its own keyboard driver (this is the case with
Euroscript for example). Such programmes normally offer you the possibility of
editing the keyboard so that you can achieve the same effect as with the
LinguaFont keyboard driver.

Problem 2:  Conflict with keyboard enhancers 

Should there already be a non-DOS keyboard programme loaded residently
before you call your customised keyboard driver, difficulties could conceivably
arise. The only solution is to remove the conflicting programme (usually a
so-called keyboard enhancer). You can include a call to a customised keyboard
driver in the startup file autoexec.bat to ensure it is always loaded.


3)	Printers

Download symbols are not printed
	
This is obviously the most common difficulty with the LinguaFont set as a whole
and can have a variety of reasons. To exclude software causes to begin with, you
should load your download font with either LoadDot or LoadLas with the /t
switch set to get a table print out of the download characters. For the discussion
below I assume that the symbols are not even printed with this method.

Dot Matrix Printers

DIP switches wrongly set. All dot matrix printers have a set of so-called DIP
switches which allow for permanent hardware settings in your printer. This is
the first place to look if a download font (via LoadDot does not work). There
may a switch which turns off the download, correct it and try again.
	Among cheap dot matrix printers it is common to use the 8K memory of
the printer either as an input buffer or a download area. Such machines always
have the former as a default setting. Again check the DIP switch responsible for
this and set it to "download".
	As you are at it make sure that your dot matrix printer is set to the IBM
character set. There will be a DIP switch which selects between this and Italic
print for upper ASCII characters. Check the national character set settings also.
If your printer can print the entire IBM character set then you do not need to
set this switch to the language you are using (leave it set to American).

Laser Printers

As the handling of laser printers is fairly tricky there is a special section on
troubleshooting with laser printer fonts included at the end of the section on
LaserEd.
	To recap here: remember that any font which is not correctly defined or
activated is simply ignored by the laser printer. To visualise the position here,
think of the RAM memory of the laser printer as a pool in which you can store
a large number of fonts. To locate a particular font in the pool during printing
the laser printer can use one of two means:

	1)	The font identification number
	2)	The font characteristics as determined by the font header

The first method is the easiest as you only need to specify one parameter,
namely the number of the font you wish to address. The latter method is based
on the idea of next best match. You send the laser printer a sequence which
more or less accurately describes the font you wish to address. Assuming that
the font is present in the printer's memory and that there is no other font with
the same characteristics in memory as well, this method should also work.
	The laser printer might refuse to print characters from a font for a variety
of reasons apart from incorrect activation. A font may be adulterated by
containing over-sized letters. By this is meant that you defined letters too big for
the cell height and width as specified in the font header. Within LaserEd this is
only possible if you deliberately disable matrix size limiting. Another cause of
adulteration could be using a baseline which is greater than the cell height less
one. These problems are most likely to arise if you create a font from scratch. If
in doubt use the supplied fonts as these have been tried and tested or just go
back over your own work.


Printer font management

In the body of the present book several references (with examples) have been
made to the methods to be used to manage fonts from within your data processing
software. Recall at this point that you must pay attention to two particular aspects:

	1)	character translation
	2)	download activation

Character translation is a procedure whereby the bytes contained in a file (and
displayed on the screen) are translated from the ASCII value they have to a
different value on printing. This will be necessary with the LinguaFont sets. You
will probably define screen symbols in the upper ASCII area with VideoEd and
have printer download symbols with values in the lower ASCII area. Your
software will then have to translate these upper ASCII values to lower ones on
sending them to the printer. Incorrect translation will obviously produce
garbage.
	Download activation is the second step necessary from within your data
processing software to produce the right results on printing. As the custom font
you use will not be the same as the normal font used for printing (irrespective of
whether you are dealing with a dot matrix or a laser printer) you will need to
switch from your standard font to your special font when you want to print
characters from it. Within a word processor switching can be achieved quickly
and easily via a macro for changing to the special font and one for changing
back again. As laser printers do not distinguish between special character fonts
and normal fonts (of various types and sizes) the means of addressing the two is
essentially the same: you use a font identification number preferably; failing this
use the font characteristics method as indicated above. Again remember to
steer clear of symbols below $32 and above $128 if you suspect that your
software does not support them for printing.
	You should avoid defining symbols with the ASCII values $0, $3, $7, $9,
$10, $12, $13, $26, $27, $28, $127 or $255 for any printer.


Character width tables
	
It stands to reason that if you define a font containing characters of differing
widths that the latter must be conveyed to your data processing software if it is
to print right-justified text containing characters from your customised font. You
will have gathered from the descriptions of DotEd and LaserEd above that an
ASCII file with the relative widths of the characters from a proportionally
spaced file is written to disk when you save such a file. 	It is now up to you the
user to enter these character widths into the character width table of the printer
driver of your data processing software (e.g. word processor). Naturally it is not
possible for the present author to do this as I do not know what characters you
are going to define and what software you are going to be using.
	If the idea of creating a character width table for your software is too
daunting then define your character font (within DotEd or LaserEd) as a fixed
spacing font. For example you can define a font as a Courier 10 cpi font with
LaserEd and use it with other (possibly proportionally spaced) fonts within your
data processing software and rest assured that the printed result is always right
justified.

Note.  The character widths in the table file generated by LaserEd should be just
what you need to create a character width table in your data processing software
(in this case it is the Delta-X of each character divided by 4). But check the
technical documentation on your software to be on the safe side.





1Appendix C


C how they run

The Borland C++ compiler (version 3.1) has been used to produce the
LinguaFont font manager because of its speed, comfort and excellent interface
to the operating system via inbuilt system calls. Various parts of programmes
have been realised by coding in assembler; in each case the Borland Assembler
was used, again for similar reasons.
	The source code for all programmes of the LinguaFont set and the
accompanying book were written entirely by the present author without the
support or assistance of any further party.

About the author. Raymond Hickey was born in 1954 in Ireland; he received his
school education in Waterford and his university education at Trinity College,
Dublin where he took an M.A. in German and Italian. He did his PhD in
general linguistics (syntax) in Kiel, West Germany in 1980 and his "Habilitation"
on Irish English phonology in Bonn where he was an "Assistent" from 1980 to
1985, a "Privatdozent" from 1985 to 1987 and professor from 1987 to 1991; from
1991-1993 he was professor for linguistics at the English department of the
University of Munich, then at the Universtiy of Bayreuth and since 1994 holds
the chair of English linguistics at the University of Essen.





1III	Glossary of Terms


7-bit This term refers to the size of the basic unit of data organisation in a
generation of personal computers which was popular up to the beginning of the
eighties. With the advent of computers based on the 8088 processor by Intel, 8
bit data structures became the rule. This meant that 256 characters could be
processed by specifying one byte. 7 bit systems, such as the Apple II, could only
process 128 characters, i.e. the lower ASCII set.

8-bit A term referring to the fact that 256 characters can be processed by a
computer by using a single byte. This means that the character set of an 8-bit
data system, such as the PC, contains both lower and upper ASCII symbols. This
term is not to be confused with 8-bit bus structure (see the entries for 8088 and
80286 elsewhere in the glossary).

8 x 14 The screen matrix for the IBM character set when the character
generator on the video card is used (i.e. when a programme is running in the
non-graphic mode). The actual screen matrix is 9 x 14, but the 9th. vertical
column is only occupied when a symbol lies in the area of the block graphic
symbols (from $176 to $223). What happens then is that the pixel structure for
the 8th. column on the right is repeated for a 9th. column. This means that when
block graphic symbols are used for screen design they can form continuous
shapes; normally there would be at least one free vertical column between them
(namely the 9th. column to the right of every symbol). Note that if one redefines
characters between $176 and $223 (with VideoEd) then they will be nine
columns wide, the 9th. being the same as the 8th.; furthermore, redefining
symbols in this region can lead to peculiar screens with programmes which use
all or nearly all of the block graphic characters.

1  line spacing A type of vertical spacing of lines, the name of which derives
from typewriting where it is possible to have half-size vertical increments. In
printer terminology, 1  spacing is 4 lines per inch, the normal vertical spacing
being 6 lines per inch.

9 or 24 needles This refers directly to the number of needles contained in the
print head of a dot matrix printer. For the user it is a way of referring to the dot
density of print-out. While 9 needle printers may have a letter-quality printing
mode, the resolution they produce cannot exceed a certain level given the low
number of needles. 24 needle printers have a much higher resolution which is
available in all modes of printing, not just in letter-quality, i.e. for italics,
download symbols, etc.

alphanumeric key One of keys in the large centre block on the keyboard of
the PC. The designation alphanumeric is meant to imply that the keys are used
for entering characters from the alphabet, numbers or diacritics such as
punctuation, bracketing, etc. These keys are to be distinguished from the
functions keys in a block on the left and the numeric key pad in a block on the
right of the keyboard.

Alt-key One of the auxiliary keys on the keyboard of the PC. It is normally
positioned on the left below the alphanumeric keys. It has no function of its
own, but is used in combination with other keys to trigger some effect, typically
to activate a command in an application programme or to run a macro.

ANSI 8 The name of a symbol set commonly found with laser printers.

ASCII text file A file which contains no formatting information and thus can
be read by any text editor. Most word processors have a mode for reading and
writing ASCII text files, i.e. for suppressing the formatting information, page
layout, screen attributes, etc. which they normally include in the text files they
create.

ascender If one takes a letter like (lowercase) "x" or "o" as a starting point an
ascender is then any part of a letter which extends over the highest point of
these reference letters. The opposite is a descender (see relevant entry).

Autoexec.bat The name of a special kind of batch file which is processed on
power-up after the computer has completed it's self-test and DOS has been
loaded. It contains the commands of programmes which are to be run before
one starts working with the computer, for example a keyboard driver for
German which enables one to write with the special letters of German or the
setting of a path of access for the hard disk.

backup Refers to a file which is the last version processed and kept for
security purposes; a copy of an original diskette.

baseline An imaginary line on which every character of a symbol set rests. If
part of a letter such as (lowercase) "g" or "y" extends below this, it is termed a
descender.

BASIC A programming language which has enjoyed immense popularity and
which is supplied with almost every microcomputer. For serious work, however,
Basic is unsuitable as it is unstructured and tends to result in sloppy
programming; in this respect Pascal and C are infinitely superior. Basic is an
acronym for "beginner's all-purpose symbolic instruction code".

batch file A specific type of file which contains a series of DOS commands
(including the names of executable programmes) and which is processed when
its name is entered from the operating system level.

baud rate A unit for measuring the speed of data transmission along a serial
line (to a printer or between computers which are in a network, for example).
An acceptable value for a printer is 9600; serial transmission programmes can
reach much higher rates while acoustic couplers are considerably slower.

binary The adjective referring to the numerical system based on units of 2 as
opposed to the decimal system, based on 10, or the hexadecimal system, based
on 16. The only two permissible values are 0 and 1 which physically correlate
with some electrical state such as current flow versus no current flow or
(frequently) high voltage versus low voltage.

bit A single data item which can have one of two values, 0 or 1, corresponding
to voltage charges of plus or minus or a voltage difference where a threshhold is
set above which the value 1 is assigned to a bit, below it 0. The abbreviation for
binary digit.

bitmap A term to refer to a representation of a character in memory (and from
there on the screen of the PC) which can be edited (for instance with VideoEd,
DotEd or LaserEd) and which is only later translated into a series of bytes to be
stored in a file which is then processed by a peripheral device such as the video
adapter (Hercules, EGA or VGA card in the case of VideoEd) or printer (in the
case of both DotEd and LaserEd).

bit-mapped graphics A method of screen representation whereby each pixel
is mapped individually as opposed to mapping on the level of whole characters.
The advantage is that everything on the screen is treated as graphics and thus
different character sizes can be represented, i.e. one is not restricted to the 8 x
14 matrix of the character generator of the video adapter. The disadvantage is
that screen functions like scrolling are relatively slow. For bit-mapping the video
card must have a RAM area of its own, e.g. the Hercules graphics card has 64K
divided into so-called pages determined by the method of managing memory.

bit rate A term referring to the speed with which data is conveyed along a line
of communication or an internal bus in a computer (see baud rate as well).

block graphics The subset of the IBM character set between $176 and $223.
These are used for screen display and obviate the need for programmes to
resort to bit-mapping for widowing, screen splitting, pop-up menus, shading, etc.

bold A term which refers to an increase in stroke weight in printing. Dot matrix
printers achieve bolding by either doublestrike or slight displacement of a
character on printing it a second time. Laser printers usually have separate fonts
for boldface type which is what one is used to from books and newspapers, for
instance.

boot The act of self-starting which the computer performs on power up. It is an
abbreviation of bootstrap loading. There are in fact two types of boot  (i) a cold
start which necessitates that power be off before the computer is started, (ii) a
warm start (or soft reset) which simply resets the state of the CPU to zero and
thus triggers the initiating routines of booting, though usually without the system
memory test which is carried out with a cold start. To activate a warm start you
must carry out a pre-defined set of keystrokes, normally ones which you are
unlikely to do accidentally, i.e. by requiring the use of both hands. With the PC
this set of keystrokes is <Ctrl-Alt> + <Del>. Sometimes when the system
hangs a warm start is not enough to get it to function again.

buffer An area of memory set aside to accomodate data which cannot be
processed immediately such as keyboard entries which cannot be passed on the
CPU at once, or a RAM area in a printer which allows it to store incoming data
until it is ready to print it.

byte A series of eight bits joined together to give an ordered sequence which
represents a number, thus the leftwardmost bit in a byte is the most significant
bit, the rightwardmost one the least significant bit in a numerical sense. It is the
basic unit of organisation in the PC. Nearly all operations on the PC refer to
entire bytes; occasionally one can access individual bits. An example of a byte is
the "at"-symbol @ which has the hex value "40" (decimal = "64") and the binary
representation "01000000".

C A systems programming language which was conceived as the language for
the operating environment Unix (in which parts of the latter are also written)
and which has been widely used for the development of software for the PC as it
produces very efficient code and allows one to make reference to hardware
features of the computer for which a programme is being written while retaining
a large degree of portability (the ability to run on a different machine from that
on which a programme was developed). Since the mid 1980's a much expanded
version of the original C language has been available in an implementation for
the PC, C++. All the programmes of the LinguaFont set are written in C++.

carriage return A printer command (ASCII code value $13) which causes the
print head to move back to the left-hand margin of a page. How far the print
head moves depends on the margin set in the programme which is controlling
the printer.

cartridge font An addition to a printer which is pushed into a slot intended for
it at the bottom of the front of the printer and which contains, in firmware form,
the encoded information for a particular font. It has the advantage that the
particular font does not then have to be loaded into the printer by downloading
and is not lost on resetting the printer or turning it off.

cell A term referring to the matrix in which a character is contained. For the
printer it is defined by maximum values for a character width and height. On
the screen it appears as a matrix in which the character in placed (in LaserEd
for example).

character size A term referring to the number of pixels used to display a
character on the screen. There are two basic situations here: either the 8 x 14
matrix of the character generator is kept to or it is not. When the latter is the
case bit-mapped graphics are being used with the consequences for portability
and processing speed which that entails. When one is dealing with printers,
character size is normally specified in points which is a unit of vertical
measurement.

character descriptor A series of bytes in a download font file for a laser
printer which contains information on a character which is defined at that point
in the file. With laser printers character descriptors contain information
regarding the offsets around a character, its width, height, etc.

character generator The name for a PROM on the video card of the PC
which contains in encoded form (as firmware) the information necessary to
display the symbols of the character set on the screen. The information is
encoded as a series of bytes which are to be viewed in binary form  the "ones"
and "zeros" of these bytes are interpreted as a pixel set or a pixel not set in a
matrix for each character of the screen. Fourteen bytes are used for each
character; as a byte is 8 places wide in binary form this means that one can
encode characters in a 8 x 14 matrix (where 16 bytes are used, the last two are
always empty, still giving 8 x 14, the normal screen matrix of the IBM character
set). The character generator PROM is 3584 bytes (14 x 256) or 4096 bytes (16 x
256) in size. On the EGA card the PROM containing the character generation
information is larger as it contains two character sets (one in an 8 x 14 matrix
and one in an 8 x 8 matrix, i.e. in the old colour mode) and machine code as
well.

character (i) A term used to refer to a symbol used for screen display or
print-out or both. There are 256 characters in the IBM set used on the PC. (ii)
A term used to designate a data type, for example in a database management
system or programming language. The data type "character" thus refers to any
symbols which are treated just as a screen display symbol and not as a symbol
with arithmetical or logical value.

characters per inch A means of referring to how many characters are printed
in a horizontal inch with a fixed width font. At least three typical values should
be noted: Pica (10 cpi), Elite (12 cpi) and condensed/compressed (15 cpi) on
dot matrix printers. Laser printers have 10 cpi and 16.6 cpi pitches for internal
fonts. The vertical size of fonts is measured in points.

character translation table A table in the printer driver of a word processor
(sometimes to be found in other programme types as well) which determines
what symbols of the text to be printed are to be altered to other values.
Basically character translation tables can be of two types  (i) one character can
be replaced by another or when by two then with an automatic backspace
between them; this type of table is used to produce letters with accents in print
by printing a letter, going back one space and printing a diacritic over the letter.
(ii) one character can be replaced by a string; here there is no (immediate) limit
to the number of characters which can be sent to the printer for one character
in the text file. Needless to say, the latter type is infinitely more flexible than the
first and can be used, for example to replace single characters in the text file
with a stretch of text on print-out.

com1, com2 The abbreviations for the two serial communications ports in the
PC.

communication protocol A set of values for a number of parameters which
are specified for transmitting data along lines between computers or between a
computer and a peripheral device such as a printer. Associated with serial
transmission where a number of protocols are available.

compatible computer A computer which in its design is very close to that of
the IBM PC or AT (i.e. the CPU is either an 8088 or an 80286). Compatability
is rarely complete. For most users, however, this seldomly becomes a problem.
If one places high demands on one's computer, particularly if you wish to use
BIOS routines or tamper with the hardware, then problems may arise as the
BIOS of compatibles is not the same as that of IBM, for obvious copyright
reasons.

condensed mode A method of printing in which the letters are printed
particularly close together; a value of 15 characters per inch is typical; some
printers have 17 cpi or even 20 cpi pitches as well.

configuration (i) A constellation of hardware elements, and perhaps software,
to form a computer system. Due to the openness of the PC it can be assembled
to give various configurations, for example a certain size of system memory, a
particular type of video card and monitor, a particular keyboard, etc. (ii) In
general a term referring to a variety of settings in a system which has a group of
variable parameters.

Control-key A key to the left of the alphanumeric block in the centre of the
keyboard of the PC. It is an auxiliary key which has no function of its own.
Together with one of the alphanumberic keys it can be used to trigger some
programme function. On the level of the operating system many of the
combinations of <Control> key and a letter have a definite function, such as
aborting a programme, suspending it, etc.

control panel A small panel on the bottom right-hand side of a printer which
contains a series of buttons which are used for at least the following four
functions (i) to switch the printer on-line/off-line, (ii) to select an internal
printer font, (iii) to trigger a line feed, (iv) to trigger a form feed. Some
combination of the buttons for the above functions also causes the printer to
undergo a self-test when they are held down while the printer is switched on.

Courier The name of a typeface which is usually contained in a laser printer as
a permanent (firmware) font. It is easily recognisable as it is the normal
typeface of golf ball typewriters by IBM.

cursive A term referring to a typeface which resembles handwriting (script) by
having letters which join up with each other, or almost do, and have special
shapes for certain letters, such as "b" which has an ascending loop as opposed to
an ascending line in other typefaces. Not to be confused with "italic" which
refers to the slant a letter may have but does not say anything about their form.

cut sheet feeder A type of paper feed consisting of one or more bins placed
on top of the printer and connected via two cog wheels with the platen. The bin
contains a stack of sheets of paper, e.g. of A4 paper, the individual sheets being
drawn into the printer for printing.

daisy wheel A type of solid-font printer in which the individual characters are
available in non-alterable form on the spokes of a wheel which rotates at high
speed and is hit by a hammer when the appropriate letter passes it, resulting in
this then being printed.

database management system A programme (an item of application or
development software) which is dedicated to producing and managing
databases. It may contain a variety of features which are not strictly necessary
for this task, such as a programming language and-or word processing facilities,
but which render it more flexible in the constellation of application software as
a whole. Certain minimal features are present in all programmes of this type
such as (i) the organisation of data into records and of records into fields, (ii)
the ability to search and sort the records of databases and, in so-called
relational systems, to set a relation between two databases such that their
record pointers move in some specified relation to each other.

database An ordered table-like sequence of data divided into records and
fields. This arrangement of data is chosen when one wishes to perform some
operation on the data, such as searching through it or sorting it in a specified
order or setting it into relation with a similarly organised set of data. For the
computer a database is basically a file on a disk in which the information it
contains has been stored according to certain principles. With a word processor
information is stored on the basis of lines of variable length. With a database
the information is contained in sections with delimiters which correspond to
fields in screen representation. The storing of information in slots has the
advantage that on retrieval the slots and their contents can be manipulated at
the will of the user. This principle is used by spreadsheets as well with the
difference that the latter type of programme normally stores numerical data.

default A term which refers to the value a parameter takes when the user does
not explicitly specify a different value.

Delta-X With laser printers in the Hewlett Packard format, a term referring to
the distance the printer cursor moves after printing a character. It is calculated
by adding up the left offset, the ink width of the character and a number of dots
to the right of the character.

descender A term referring to the printing of letters whereby certain letters of
the alphabet, such as (lowercase) "g", "j", "y" are actually continued downwards
below the level required for letters such as "a", "e", "n", i.e below the baseline.
Early printers were not always capable of producing descenders.

display Refers to screen representation as opposed to, say, representation as
print-out.

DOS Abbreviation for "disk operating system". In the PC universe refers to
either PC-DOS or MS-DOS.

DOS prompt When you power up a PC you land in the operating system
(unless you specify in the autoexec.bat file that a programme should be loaded)
and the cursor lies immediately to the right of an arrowhead with a letter before
it. This is the so-called DOS prompt. The letter stands for the drive which is
presently logged in. You can now enter a command. The appearence of the
prompt can be customised, for example by entering prompt $p $q$g you are
shown the subdirectory of the drive before the arrowhead. This is useful for
locating your position when using a hard disk with many subdirectories.

dot matrix printer A type of printer which creates letters by printing a series of
dots on paper which imitate the form of the letters. This type of printer is
enormously flexible compared with solid-font ones such as daisy wheel printers.
If it has 24 needles then the resolution is so high that the individual dots which
go up to make a letter are not recognisable at a casual glance.

double pass A method of achieving high quality print. Each line is printed
twice, each time the dots are slightly displaced so that spaces between dots on
the first pass can be filled out on the second. This technique is normally
confined to 9 needle printers to help produce letter-quality print-out despite the
relatively small number of needles.

double underline A type of underlining in which two lines are drawn under
each letter. Not all printers can produce double underlining and the two lines
are not always distinguishible. Printers in the Epson ESC P standard do not
have a special command for double underlining so this must be achieved by
using a graphics command.

download symbol A symbol which has been designed by the user and loaded
into the RAM area of the printer; it is activated by a special printer command.
Usually grouped together to a download file via software such as DotEd or
LaserEd.

downloading A technique for loading user-defined symbols into the printer.
Note that these symbols are stored in RAM which means that when the printer
is turned off (or reset by the computer) they are no longer present. In more
general terms downloading means sending information on a transmission line
away from the computer; uploading is information flow into the computer.

draft mode A method of printing in which letters are printed with fewer dots
and thus very much quicker than in letter-quality mode.

dual-in-line package Usually abbreviated to DIP. It now refers to one or more
small blocks of switches which are used to fix settings for a printer, the
computer motherboard (with a PC), peripheral cards, etc. With printers DIP
switches are used to fix certain parameters which are not altered frequently,
such as paper length, type of interface, language used for printing etc. Care
should be taken, especially with printers, to insure that the DIP switch settings
are correct as otherwise certain effects cannot be achieved or certain others
cannot be turned off.

EGA card A graphics card introduced by IBM in late 1984. It replaces the old
colour card which had a very poor resolution. The EGA card has the same
resolution as the monochrome card or the Hercules card when in non-graphic
mode, i.e. 640 x 400. It cannot reach the 720 x 348 pixel resolution of the
Hercules card in graphic mode and thus usually has no 90 or 130 column screen
display. It furthermore requires a special type of monitor. There are a large
number of models of EGA card now (1988) on the market which are
distinguished by higher resolution than with the original EGA card by IBM. All
EGA cards have the ability to accept a customised character set in file form.
Within the LinguaFont set loading such a font is achieved with the programme
LoadVid.

eighth bit The leftwardmost bit in a byte. If a system can only process 7-bit data
then this bit is 0 (or not present). The PC can of course process 8 bit data so
that each byte can encode any of 256 characters (the IBM character set
consequently contains 256 symbols). There is a common function for printers
and for programmes which sets or deletes the eighth bit (i.e. sets the value of
the leftwardmost bit in a byte to 1 or 0) should it be desired that a certain input
results in an identical output but with the value for the eighth bit reversed.

Elite The name of a pitch of 12 cpi. The typeface of characters in Elite is
identical to that of Pica, the letters being slightly thinner due to the higher
density per inch.

enlarged mode Another term for headline mode, i.e. the printing of characters
in doubly wide pitch (common on dot matrix printers).

EPROM An abbreviation for "Erasable programmable read-only memory".
Refers to chips of the same kind as ROMs with the difference that the contents
can be erased by exposing the silicon wafer in the chip through a little window
on the top of the chip to a certain kind of ultraviolet light. With the help of a
special device one can fill the chip with new information which remains in it
until it is erased again by the method just described. With the help of an
EPROM burner one can transfer the contents of a file (software) to an
EPROM (firmware).

Epson ESC P standard A command language for printers which, due to the
world-wide standing of Epson (a Japanese firm which invented the dot matrix
printer), has become a standard for printers. It covers such commands as
attributes (italics on-off, boldface on-off), layout features (number of lines per
page, spacing, etc.), fonts (Pica, Elite, Headline mode, etc.).

escape sequence A series of bytes beginning with ASCII $27 (= ESC,
Escape) which serve as a command for the printer and are not printed. A
stretch of text which you send to the printer from your word processor will, if it
contains formatting information (bold type, double line spacing, etc.), have such
escape sequences contained in it to cause the printer to output the text with the
formatting you specified when processing it. In some cases escape sequences
begin with the next ASCII character, $28 (= FS, Form Separator). Such
sequences for laser printers tend to be quite long and have a distinct internal
structure which can be divided into control groups and value fields. If an escape
sequence is parameterised it is additionally followed by binary data (typically
character definition data in a download font file) the amount of which is
specified in the sequence.

factory settings The settings which hold (usually for DIP switches in a printer)
for a piece of computer periphery as delivered by the manufacturer. Users
should always check these as one cannot assume that the factory settings are
those one wants oneself. A notorious example is to be seen with printers from
Japan which have a factory setting for the American English character set even
with those printers sold in various European countries.

fanfold Paper for a computer printer in the form of one continuous sheet which
is perforated at intervals corresponding to A4 pages in length, and which are
folded like the letter Z so that it lies in a stack.

firmware Information which is encoded in ROM chips, e.g. the standard fonts
of a printer. The term is intended to suggest an intermediate stage between
software and hardware.

font A set of symbols, in either firmware or software form, which contains the
letters of the alphabet, the digits 0 through 9, various items of punctuation and
usually a series of diacritics, all in a particular unifying design of shape.
Examples of fonts are Times Roman, Helvetica, Courier.

font descriptor A header contained at the beginning of a font file which
specifies certain items of information pertaining to the font as a whole (contrast
character descriptor).

font file (i) Information which a printer can process concerning letters and
symbols of a character set which is stored in the form of a disk file and which
can be loaded into the printer with a copy command. (ii) The term also refers to
a file which can be loaded into the video adapter card to offer the user a
customised screen character set.

font ID With Hewlett Packard laser printers, a number which uniquely
identifies a particular download and which can be used by software (typically
word processors) to address this font.

formatting information Additional information contained in a text created
with a word processor which refers to features of page layout, typeface, etc. The
formatting information must be translated into printer commands when actually
printing text. The advantage of formatting a text by the internal means of a
word processor is that it can then be printed on a variety of printers by choosing
different printer drivers when outputting text.

form feed A printer command (ASCII code value $12) which causes paper in
the printer to be advanced to the top margin of the next sheet, irrespective of
the position of the print head vis  vis the current page.

form separator A flat piece of transparent plastic which separates the
incoming from the outgoing paper during continuous paper feed.

function key One of the ten (or twelve) keys to the extreme left of the PC or
AT keyboard; in recent keyboard versions (including the latest by IBM) the
function keys may be spread in a line across the top of the keyboard. These keys
are non-alphanumeric keys and are assigned command values in programmes.
Precisely what values they have depend on what programme one is using. There
is little or no standardisation in this area.

Gothic See Letter Gothic.

graphic An adjective which characterises some software as involving the use of
bit-mapping for screen display and not the character generator on the video
card.

graphics card A type of video card which is capable of bit-mapping screen
representation. There are basically two types of graphics card, a monochrome
one (the Hercules card) and a colour one (nowadays the EGA or VGA card).

graphic printing A printing mode in which each of the needles of the print
head is individually addressed. This mode is used for printing graphs, charts,
tables and also by some programmes such as Windows (a graphics environment
programme) and T3 (a scientific word processor) to print non-standard
character sizes. It has not been referred to in the present handbook as the
download area cannot be used in the graphic printing mode.

graphics tableau A flat, board-like device with a type of light pen attached.
One can draw on the surface of the board and the movements one makes are
digitalised and reflected on the monitor screen when the tableau is used with
the necessary software.

grid Another term for matrix either for the screen or the printer.

hairline The thinnest part of a letter. With typeset quality print out the strokes
of letters vary in thickness.

hardware Any physically present part of a computer, e.g. the screen, keyboard,
cards in expansion slots, etc. Used in deliberate contrast to software
(programmes).

headline mode A printing mode in which all letters are printed twice as wide
as normal.

Helvetica A popular typeface in which all letters are printed without serifs.
This typeface is easier to read when one is using very small characters.

Hercules mode A video mode in which more than the normal number of
columns and rows are present on the screen. The Hercules mode usually has a
90 column wide display and 29 or 43 lines (in Microsoft Word for example). The
Hercules mode can also refer to the representation of attributes such as italics
and boldface as just that and may lastly also refer to the use of bit-mapped
graphics for the maximum amount of screen display manipulation. Note that the
43 line per screen display is also possible with the EGA card (if the controlling
software allows this).

hex(adecimal) notation A means of representing numbers or characters (such
as those of the IBM character set) as hexadecimal digits. Thus the ASCII code
"27" (= ESC) is written "1B" in hexadecimal notation. Conversion tables for
hexadecimal to decimal and back are often included as appendices to printer or
computer manuals and should be consulted when the specification of codes,
such as printer commands, are given in hexadecimal notation. Memory
addresses and assembler source code are always given in hex notation, for
example.

hexadecimal The numbering system which uses 16 as its base. The digits are
labelled 0 through 9 and A through F. In a hexadecimal system 256 numbers
can be characterised using two digits, i.e. from 00 (= decimal 0) to FF (=
decimal 255).

highlighting A means of making a choice in menu-driven command structure.
Of the series of options to choose from one will be displayed in inverse video, in
the highlighted mode. By the using the cursor keys one can move the "highlight
bar" up and down the list of choices and press the <Enter> key when it is
positioned on the choice one wants to make. Used extensively in the
programmes of the LinguaFont set.

high resolution Refers either to high quality screen display (individual pixels
can hardly be recognised with the naked eye) or high quality print-out on dot
matrix printers (usually 24 needle printers, laser printers have only high
resolution anyway).

horizontal motion index A parameter of printer horizontal movement which
is used to specify a shift in the print-head position from left to right. Each
printer has a minimum horizontal movement increment such as 1/300 of an
inch. The horizontal motion index is consequently a multiple of this. Frequently
abbreviated to HMI. See vertical motion index as well.

IBM character set A set of 256 characters which is to be found in the character
generator on the video card of a PC. Good printers can reproduce at least
numbers 32 to 254 of this set. Only a fraction of the set is alphanumeric. For
more details, see relevant appendix.

inkjet A type of printer which has a series of tiny jets in its print head, these
shooting out a tiny amount of ink in a specified order to compose the letters of
the text being printed. They are almost completely silent as they are non-impact
printers.

interface The common boundary between two devices, systems, subsystems, or
the user and a system. The term also refers to an instrument which arranges for
the transfer of data from one device to another, e.g. between the computer and
a certain kind of printer.

italic The degree of slanting which the letters of a character set show. With dot
matrix printers, all typefaces can be italicised (right-slanted) by issuing a certain
printer command (escape sequence). With laser printers, special italic fonts are
available which have a varying degree of slanting and possibly combine this with
cursiveness. Left-slanting fonts are practically unknown or only available as a
gimmick with certain font software.

justification The procedure whereby a flush margin is produced with text either
on the screen or on printing. Left justification is (nearly) always present, so that
the question of justification refers to the availability of right justification which
is also called block justification.

kerning A procedure whereby certain letters are brought very close together on
printing (in proportional pitch) so that there are practically linked. For example
when uppercase "A" is followed by "W" kerning would leading to the left edge of
the "W" overlapping with the right edge of the "A". Another example is the
combining of lowercase "f" with following vowels notably "i" where the dot of the
"i" is covered by the end of the upper loop of the "f".

keyboard layout There are various keyboard layouts available for PCs. At the
beginning there was one for the original PC; another layout was then used by
IBM for the AT. In 1986 they introduced yet another layout for their latest
versions of the various types of PC. Other manufacturers sometimes use
different layouts for special keyboards. The scan codes generated by the keys
must however be the same even though the keys are physically located
differently on the keyboard or may be different in size compared with IBM
keyboards.

keyboard The flat, detachable board with 83 keys on it which are used to type
in commands and text and which is connected to the computer via a cable with a
DIN jack at the end of it. There are various types of keyboards, varying in size
and distribution of keys and also in the ability for the keys to be programmed or
not.

keyboard driver A small programme at the DOS level which is loaded
residently (usually on power-up) and is responsible for being able to access
foreign language characters on the alphanumeric keys which are not present in
the English alphabet. landscape A term referring to the orientation of print
out. With this type, characters are printed parallel to the longer edge of a sheet
of paper.

laser printer A type of non-impact printer which is fast and gives very high
quality print out. It usually has a large RAM of its own (typically 512K or 1MB)
and a number of pre-defined fonts as well as extensive graphic capabilities.

laser-beam printer See laser printer.

leading zero A zero which is to the left of the rightwardmost "1" of a binary
digit, thus the digit "01110110" contains one leading zero, the digit "00101110"
contains two, etc.

least-significant bit The bit which is rightmost in a binary representation.
Least significant means least significant in terms of numerical value.

left offset The number of empty dot columns in a cell to the left of the
character this contains.

Letter Gothic A typeface commonly found with daisy wheel printers and, as a
soft font option, with laser printers.

letter quality mode A method of printing in which the printer makes the most
of its ability to produce good print-out. Printing is always slower in this mode as
more dots are used than usual to form each letter. The shapes of letters are
normally different in this mode than in draft, typically containing serifs.

ligature A combination of two letters. This can be so to begin with, as with the
combined a and e symbol  or can be the result of kerning (see above) as with f
and i together.

light The opposite of boldface, i.e. letters are printed less thickly than normal.
Indicated on laser printers by a negative value for stroke weight.

Line Draw A typeface available as a soft font option with laser printers and
which includes the block graphics symbols of the IBM character set.

line feed A printer command (ASCII code value $10) which causes the platen
to move forward by an amount which corresponds to one line in the spacing
which has been chosen by the controlling programme, e.g. by 1/6 of an inch with
6 lines to the inch spacing.

lineprinter A high-speed printer which is capable of printing an entire line at
once. The method involves several rotating disks (as many as there are
characters in the maximum line length) on which the entire printer font is
available in solid form. Each disk is rotated the necessary amount for the letter
which it should print in a line to be facing the paper which is printed and then
all disks are simultaneously pressed against the paper carriage and the line is
printed.

Line Printer A typeface available as a soft font option with laser printers and
which is somewhat plain in its appearence.

logo A character which does not represent a letter of an alphabet but a symbol
used as a kind of printed badge for a firm, organisation, institute, etc. Typically
found on notepaper or on advertisements. Programmes frequently use a firm
logo at the beginning to emphasise software copyright.

lower ASCII area The symbols from $0 to $127. They consist of printer control
codes ($0-$31), alphanumeric characters ($32-$126) and the delete character
($127). There is a high degree of standardisation in the use of these characters
as opposed to that of the upper ASCII area. Systems which can only process this
set of characters (i.e. not the upper area as well) are referred to as 7-bit systems
as the eighth bit cannot be set to identify another 128 characters.

lpt1, lpt2, lpt3 The abbreviations (deriving ultimately from "line printer") which
DOS uses for the three parallel devices (usually printers) which can in principle
be connected up with a PC.

macro A command which is itself a set of commands and which causes these to
be executed. In order to simplify the operation of a programme macros are very
useful as they drastically reduce the number of keystrokes which the user must
perform or indeed allow him/her to render certain procedures entirely
automatic. With laser printers, macros are also definable simplifying printer
control.

map The image of the screen in a certain area of the CPU's memory. It is the
memory map which is altered by programmes when instructions are carried out,
such as scrolling, or when text is typed in, etc. The display memory is physically
present on the video card but logically it is part of the CPU's address space. The
video card passes on the information to the monitor where it is converted into
visual signals in the cathode ray tube.

manual feed The act of placing sheets of paper into the printer manually and
issuing a command (via the roller knob or control panel) for the printer to draw
in the page.

margin (i) The empty dot columns to the left and right of a download
character, (ii) the blank space left deliberately on the left- and righthand side of
a printed page.

matrix A rectangular array of elements, arranged in rows and columns which
can be manipulated according to the rules of matrix algebra.

Math A typeface, available as a soft font option with laser printers, which
contains a variety of symbols needed for scientific applications.

memory-mapped Refers to screen display which is stored on a pixel by pixel
basis in memory.

memory size With laser printers, a reference to the amount of memory
available for download fonts or graphic images which are to be printed.
Normally laser printers come with 512K and can be expanded to 1MB.

microjustification A technique used in printing where very small amounts of
spacing (i.e. less than whole blanks) are added between words and between
letters to attain block justification. Because of the minimal size of spacing it is
not normally detected by the casual observer.

monitor The screen display unit used with a computer. There are various sizes
of monitors, usually 12" or 14", and various colours, either a colour monitor or a
monochrome one which may have lettering in green, amber, white or black on a
white background. Of late full-length (A4 size) monitors have become common
for PCs but their maximal use depends on whether the software one uses can
display more than 25 lines on the screen at any one time.

most significant bit The bit of a binary number which is leftwardmost and thus
represents the greatest of the digits of the number.

mouse An electronic pointing device which is common in graphic software
(such as much of that produced by Microsoft). The mouse is an addition which
uses the serial port and is intended to increase comfort when entering
commands. There is nothing which the mouse can realise which is not already
covered by the keys of the keyboard.

non-graphic Refers to a mode of operation of a programme where is does not
use bit-mapping for screen display but the characters from the character
generator on the video card of the PC.

non-impact printer A type of printer which does not involve the paper, which
is printed, being hit by some mechanical part of the printer. This type of printer
is consequently very quiet compared with impact printers. The two most
common kinds of non-impact printers are inkjet printers and laser-beam
printers; the two most common impact printers are dot matrix printers and daisy
wheel printers; the last type can be additionally classified as a solid-font printer.

off-line Not in a state ready to receive and process data. Refers to printers and
other peripheral devices.

Old English A typeface which is characterised by ornate lettering which in a
way resembles that used in the early days of printing. It is not a character set for
the stage of the development of the English language referred to by linguists as
Old English (which predates printing anyway).

on-line In a state ready to receive and process data.

operating system A set of programme files which are loaded by the computer
on starting and which represent the software part of that information which the
computer requires to be able to function at all, e.g. to load other programmes,
to read and save files, to deal with the keyboard and the screen, etc. Note that
the operating system, abbreviated to DOS, uses part of system memory so that
in a computer with 640K you do not have 640K free for application programmes
but under 600K after the system has been loaded.

orientation Refers to the angle at which characters stand with reference to the
direction of printing. With laser printers, the paper tray can only be loaded in
one direction in the slot provided for it (compare this with dot matrix and daisy
wheel printers where (given platens wide enough) a page can be fed sideways
into the printer). To allow sideways printing laser printers allow the user to
specify sideways printing (landscape) if he/she so desires.

overprinting A technique of printing where the print head either does not
advance one step or goes back one step so that two characters are printed at the
same position on paper. This can be useful to produce letters with accents or
other diacritics when these are not available as separate characters in a font.

page eject A programme command which causes the printer to advance paper
to the top margin of the next sheet.

paper feed Any one of a number of mechanisms for feeding paper into a
printer. Common types are tractor feeders for continuous paper and cut sheet
feeders for stacks of pre-cut, standard-size sheets of paper.

paper jam A self-explanatory term. What one must bear in mind is that with it
you must turn off the printer immediately and that then any download
previously loaded is lost and must be sent to the printer afresh.

parallel Refers to a technique for sending data from the computer to the
printer where several items of information can be sent in parallel. There is a
special port for this, frequently on the Hercules graphic card. The opposite of
serial.

parallel port See port.

path command A DOS command which specifies what subdirectories can be
accessed in the search for files which match commands entered from the
keyboard; DOS always searches the active directory first and then the
directories in the path command in the order in which they are specified, usually
in the file autoexec.bat.

perforation skip A printer command or programme function which causes a
certain number of line feeds to be issued so that the platen advances continuous
paper a fixed amount, namely from the end of one page through the inter-page
perforation to the beginning of the next.

Pica The most common pitch type on dot matrix printers (also the factory
setting for pitch) which consists of 10 characters per inch. It is also a unit of
horizontal measurement referring to 1/10th. of an inch. Originally a typesetter's
term.

pitch The number of characters per inch printed; common pitches are Pica
(=10 characters per inch), Elite (=12 characters per inch). Most printers also
have a condensed and a headline mode. Pitch does not refer to the height of
lettering which is fixed for dot matrix printers but variable for laser printers.

pixel An individual dot of video representation. Screen display is similar to
print-out on dot matrix printers inasmuch as it is arrived at by building
characters out of combinations of single dots. In theory it is possible to address
every pixel, i.e. every dot on the screen, individually; when a programme does
this it is said to use bit-mapped graphics.

platen The rubber roller of a printer which serves to move the paper through
the printer and past the print head.

plotter A peripheral output device which like a printer produces hardcopy but
unlike a printer is primarily intended for graphic output. Plotters work by
drawing geometrical shapes with one of a series of colour pens on a sheet of
paper which has been laid out flat on a board over which an arm with the pens
moves.

point A unit of vertical measurement used by publishers and nowadays in
printing with computers also. A single point is 1/72 of an inch. It can be taken
roughly as a reference to the size of letters and occurs together with a reference
to a typeface as in Times Roman 12, Helvetica 14, Letter Gothic 10, etc.

port An output socket in a computer. It exists as hardware (the actual socket)
and as software (as an output destination, e.g. LPT1, COM1, etc.). The present
operating system for PCs has provision for three parallel and up to four serial
ports (which is more than enough for the normal user). The parallel port is used
for the printer normally and may either be attached directly to the motherboard
of the computer or be on the video card (in the case of a graphics card like the
Hercules card). The serial port is used for some types of printer and for
communication purposes. Most PCs have a parallel port and frequently a serial
one as well.

portrait A direction of print (orientation) on laser printers in which printing is
parallel to the shorter edge of the sheet of paper, i.e. this is the normal direction
of printing as opposed to sideways printing known as landscape.

PostScript A command language used for inputing text to typesetting
machines. Some word processors (such as Microsoft Word) can create text files
with the formatting information specified in this command language. Some laser
printers (like the Apple laser printer) can process PostScript. Developed by the
American firm Adobe.

print scale A series of notches like those on a ruler, usually on the roller shaft
of the printer, which represents a scale (in inches) which can be used as a guide
to printing positions on paper.

printer access cover A cover on the top of the printer which enables the user
to access the carbon ribbon cartridge and sometimes the DIP switches as well.
With most printers lifting the cover automatically triggers an off-line state so
that printing is halted until the cover is closed again.

printer codes Refers to some of the ASCII codes below $32 which are
interpreted by the printer as commands and not as text to be printed. For
example, ASCII $14 is interpreted by all printers in the Epson ESC P standard
as a command for "go into headline mode until the next carriage return", and
not as an instruction to print a symbol which looks like ASCII $14 in the IBM
character set (two musical notes).

printer driver A type of file within a word processor which one can frequently
edit, load and run at will and which contains the commands necessary to ensure
that the formatting information of a text file is realised as what one wishes with
a certain printer, for instance that underlining on the screen appears as
underlining on the printer.

printer interface A device which is plugged between computer and some types
of typewriter and allows them to be used as a printer.

printer menu A list of the available printer drivers in a word processor.
Normally there is an internal command in the word processor with which one
obtains a display of the names of the printer drivers one of which can then be
chosen for printing or to be associated with a certain text (for later printing).

printer queueing The process of placing texts to be printed in a queue (in
memory) so that they are printed in a certain order and so that one can
continue editing text while the printer does its work.

printer reset An aspect of the PC is that on power up it resets the printer if this
is also on. By reset is meant that all the (software) settings which may have been
made for the printer are erased; the effect is the same as turning the printer on
and off again. Note that download symbols are also erased on printer reset, so if
you require these you must send the font file to the printer again. Unfortunately
some programmes also reset the printer, i.e. send the printer the command for
reset before they start printing. This is disastrous for the user who wishes to use
a download as the programme then wipes out any download (by resetting the
printer) before it starts printing. Newer, more sophisticated word processors, do
not reset the printer before printing.

print-out A term referring to the output produced on a printer.

proportional Refers to a type of printing where letters of varying width occupy
space of varying width, i.e "m" occupies more space than does "i". Nearly all
books are typeset in proportional pitch, but with the kinds of printers used with
PCs (with the exception of laser printers) proportional spacing is problematic as
text centering and tabled layout is not made to accomodate the varying widths
of proportional pitch.

Qwerty A way of referring to how the alphanumeric keys are arranged on the
keyboard. The qwerty arrangement is that for English; qwertz is that for German,
for example, where the positions of z and y are interchanged, among other
things.

random-access memory (RAM) An abbreviation for "random access
memory" as opposed to "read only memory" (abbreviated as ROM, see relevant
entry). What is meant here is that the memory can be used again and again, i.e.
it is memory which can be read and written to at will.

ready light One of the lights on the control panel of the printer which shows
that the printer is on-line; it is turned off when the printer is put into an off-line
state.

redirecting The rechanneling of output from one device to another which is
not its normal destination. For example if a programme normally prints to the
parallel port, programme output can nonetheless be redirected to the serial port
by a special DOS command (the "mode" command).

resident Refers to a programme which is loaded and maintained in system
memory even if another programme is loaded after it. Resident application
software can usually be activated by some specified combination of keystrokes
which cause the resident programme to take over the user interface temporarily
until released into the background again.

reverse line feed A printer command which instead of advancing paper by one
line retracts it by the same amount. It is used with some printers to realise
subscripts and superscripts.

right offset The number of empty dot columns to the right of a download
character. The absolute right position is determined by the character cell width.
Values of between 1 and 3 are typical for proportional character sets for laser
printers. With fixed pitch character sets the right margin is calculated by
subtracting the so-called ink width of the character (the number of dot columns
filled) from the cell width and dividing this by two (one half being the left
margin and one half the right).

roller knob A large knob usually on the right-hand side of the printer which
allows one under certain circumstances (when the printer is turned off or turned
on but off-line) to rotate the platen.

roller shaft A thin shaft with two or more rubber rollers which presses against
the platen and holds the paper in position for printing.

Roman As a separate term it refers to the normal weight of a typeface. Along
with this there are usually bold and italic styles. Roman usually implies a
seriffed style, certainly when it is used in combination with the term Times.

Roman 8 A symbol set which is the standard for the Hewlett Packard laser
printers. It differs from the IBM character set in having no block graphics
symbols (but these are contained in the Line Draw symbol set). However, it
contains a variety of additional symbols for European languages (like Icelandic)
which in turn are not present in the IBM character set.

sans serif A typeface which does not have tiny embellishments at the edges of
printed letters. Helvetica and Letter Gothic are examples of sans serif fonts.

scan code When one presses a key of the keyboard the computer receives a
number from 1 through 83. This is called a scan code. Precisely what this code
realises on the screen depends on the way it is translated. Note that when a key
is pressed a scan code is sent to the computer; when the same key is released
the same code + 128 is sent to the computer to inform it that the key has been
released. The addition of 128 to a value is achieved by changing the value of the
eighth bit of a byte from 0 to 1. The 83 scan values of the keyboard are
accompanied by information on the shift state of the keyboard (see explanation
in text of book). By this is meant whether one of the following keys (or a
combination of them) is depressed at the same time as a scan code is sent to the
computer: <Alt> key, <Ctrl> key, <Shift> key, <Crtl> and <Alt> keys
together, <Ctrl> and <Break> keys, etc. The computer also checks to see if
the <CapsLock> key is depressed in which case it substracts 32 from those scan
codes which are translated as ASCII $97 through $122.

scanner A peripheral device used to read printed text into the computer.
There are basically two types of scanner:  those which translate the information
won from the printed page into a graphical image and those which convert it
into ASCII code. The latter type is of greater value obviously as it allows the
editing of scanned text afterwards. The term optical character recognition
(OCR) is used to refer to the process which the scanner carries out and to a
typeface which has forms of letters which are easy for a scanner to recognise.

screen attribute Refers to the way a character is displayed on the screen.
Examples of attributes are high video, inverse video, blinking, underlined.
Italics, boldface, sub- and superscripts are not attributes which are available on
the DOS level or in programmes used in a non-graphic mode; these must be
attained by running a programme in a graphics mode.

screen The front surface of the monitor made of glass at the back of which the
symbols are displayed by bombarding the light-sensitive inner surface with an
electron beam from a "gun" at the back of the tube.

script See cursive.

scrolling Leafing through text either backwards or forwards is achieved by the
text running up off the screen or down off the screen depending on direction.
This action is known as scrolling. It is also possible to have horizontal scrolling
if a line is longer than 80 lines.

serial port See port.

serif A tiny embellishment at the end of a letter (typically a small horizontal
dash at the ends of vertical lines). Serifs are supposed to improve the readability
of the printed page.

setup A number of parameters which are specified either on starting the
computer or on starting a programme and which specify one's choice in a set of
options.

Shift-key One of the status keys which causes all letters to be entered as
capitals and all digits to change to the symbols which lie above them on the
same keys. Note the difference between the <Shift> key and the <CapsLock>
key: the latter locks, whereas the former must be held down to take effect; the
latter does not alter the characters generated when the number keys are pressed
while the former does (the latest multifunction keyboard by IBM does change
the value of number keys when the <CapsLock> is depressed).

slanted See italic.

slot A long socket on the motherboard of the PC into which a peripheral card
can be inserted. The socket contains the contacts which are connected with the
parallel bus by means of which the peripheral card is connected with the bus
system of the computer. Note that the slots in the PC are shorter than in the AT
(due to the smaller width of the parallel bus in the PC). PC peripheral cards do
not always fit into the AT because of their shape; however, two of the eight
expansion slots in the AT have the same shape as the PC (with a narrower bus)
and can be used to add cards originally intended only for the PC. The new
generation of IBM personal computers have a different bus system (known as
MCA, micro channel architecture) into which the older expansion cards do not
fit).

soft font A font for a laser printer which exists in the form of a disk file and
which can be downloaded to the printer with the DOS copy command. It must
conform to the Hewlett Packard format for download files for it to be accepted
by the laser printer.

software The opposite of hardware. In brief the programmes you use on a
computer.

solid font printer A printer in which the characters of a font are to be found in
unalterable form, e.g. on the wheel of a daisy wheel printer.

spline A regular curve in a letter or logo, for instance the letter c consists of a
single spline. An important quality of logo editors is the ability to produce
elegant splines.

spooling The reservation of a section of memory (or the provision of
additional memory) to accodomate data which is to be transferred to the printer
but which the printer cannot accept all at once due to the discrepancy between
programme output and speed of printing.

stem The main upright stroke around which a letter is built, e.g. the vertical
stroke in d, k, t, etc.

strikethrough A technique in printing where each character is printed with a
horizontal bar through it, this giving the impression, with a whole line, that it
has been crossed out.

stroke weight The thickness with which letters are printed. A term which is
only used with laser printers as it is only with these that the parameters can be
varied. It ranges from heavy bold type through normal weight (Roman) to light
weight with a negative value for stroke weight.

style A term to refer to whether printing is upright or slanted (italic).

subdirectory On a disk a directory which is located below the root directory.
On hard disks there are usually several subdirectories.

symbol set A collection of symbols which are grouped together and used in a
fixed combination for a certain font. Typical examples are Roman 8, IBM, US
ASCII with laser printers.

template A skeleton file which has certain parameters set but does not contain
any data. Frequently used as a starting point or input for processing data.

teletype Refers to the series of different types of teleprinter devices. These are
typewriter-like devices at one end of a telegraph line. They include tape
punchers, page printers, transmitters of various kinds, etc. In a list of printer
drivers in a word processor or an item of integrated software, the term
"teletype" usually refers to the simplest type of printer driver, i.e. with no printer
attributes, no different fonts, etc.

terminating character A reserved character (such as <Control-Z>) which
serves the function of marking the end of an input, a character string, etc. for
the operating system or occasionally for a programme or even the print






1IV	Font Documentation


10.	Preamble

Included in the LinguaFont set are 16 foreign language fonts, a large selection
of typeface fonts and a phonetic font. They are all defined for 24 needle dot
matrix printers and for laser printers. Should a font be designed for a dot matrix
printer then it can be converted from this format to the laser printer format with
Upgrade and can be edited manually with LaserEd to obtain the correct
proportions on a laser printer.
	The printer fonts are also offered as screen fonts. More than with the
former, the screen fonts must be edited (i.e. rearranged) by users of
LinguaFont as the ASCII values the special symbols have been assigned to are
not necessarily those which users of a particular font will want. You can remedy
this quite easily. Copy the particular font to a new file and load both the original
and the copy with VideoEd. You can now move characters from the source
(original) font to the new (target) font at will.
	The above remarks apply even more to keyboards: there is no way the
present author can know in advance what keys users would like to have set to
what values for a particular font. You can determine your own keyboard
settings quickly and easily with SetKey, see above for a description of its
operation.


20.1.	Comments on individual fonts

Russian. This is a normal Russian font as required for writing contemporary
standard Russian.
	Extended Cyrillic. Most languages of the former Soviet Union are written
in a form of the Cyrillic alphabet with a number of additional characters. The
basic guideline has been to take existing Russian letters and alter them by using
diacritics. See the documentation below for details.
	Baltic. Of the many languages of the former Soviet republics, the three
Baltic languages, Lithuanian, Latvian and Estonian have always been written
with the Latin alphabet. The additional symbols needed for these languages
have been gained by adding diacritics to various Latin letters. These symbols
are to be found in the present font.
	Modern Greek. Here only those symbols necessary for Modern Greek are
contained. Specifically very few letters have diacritics. For a wider range of
symbols and diacritics see the font Classical Greek.
	Balkan. This font contains symbols needed for both Serbo-Croatian (only
those symbols based on letters of the Latin alphabet) and Rumanian.
	Romance. Only those symbols needed for Romance languages which are
not present in the IBM PC character set have been included here. The same
applies to the Scandinavian font.
	Medieval. This font contains the normal letters of the English alphabet but
with somewhat unusual forms seen from a present-day standpoint. Technically
the font is termed a half uncial type and goes back to a particular manuscript
tradition in England and Ireland in the early Middle Ages.
	History of English. Quite a different matter is involved here. The current
font contains the special characters and phonetic symbols which one needs for a
linguistic description of English in its various historic stages (notably Old and
Middle English). A sample text (the beginning of the Old English epic Beowulf)
is included as illustrative material.
	Phonetic. For the present font the International Phonetic Alphabet (1989
revision) has been used. Not all the symbols have been included, however. For
example the range of clicks is not complete. The interested user will have to
complement the set if he/she wishes. Below there is a description of the
symbols to be found in the set.
	Hebrew. The current font consists of a basic set of Hebrew characters. The
diacritics which are infixed into or subscripted to the former must be added to
the symbols in question by users themselves. Bear in mind that there are in
principle two possibilities here: (i) either you design a separate character for
every combination of basic character and diacritic or (ii) you design the
diacritics separately and use a string consisting of basic character, backspace
and diacritic when printing.
	Arabic. Because of the size of the Arabic alphabet it has been necessary to
distribute it over two fonts. Full documentation of these two character sets is
given below.
	Sanskrit. This font is based on the Devanagari script of Sanskrit. There is
no distinction between upper- and lowercase. The script consists of 33
consonants and 9 vowels.
	Note. Most of the following fonts have been created in a Letter Gothic
style, a few are available in a Courier style. The former is a 12 characters per
inch font and the latter 10 characters per inch in width. This fact is of
importance when designing characters. Those fonts which require fairly wide
characters should be created in a Courier style as the character box in LaserEd
is wider than for a Letter Gothic style font. The width of a character in LaserEd
is measured in units of 1/300th. of an inch, i.e. a single dot for the laser printer.
With a Courier style font each character is 30 dots wide (300 / 10 = 30)
whereas a Letter Gothic font has characters which are 25 dots wide (300 / 12 =
25). Character width is a parameter which can be changed in the font header
which is displayed automatically by LaserEd when you load a font from the
desktop of that programme.
	Bear in mind that if the characters in a font do not agree with the
parameters set for the font in the font header then the result is that the
characters in question are not printed. An example of this would be defining
characters with a greater width than the maximum allowable width for the font
as specified in the header. Another common error is to define a character with a
greater baseline distance than that which is legal for a particular font.
	To avoid the disconcerting experience of not obtaining characters you
defined with LaserEd on paper when you attempt to print them, avail of the
option Check Font Integrity in LaserEd.


20.2.	List of supplied fonts

On the fonts diskette of the LinguaFont package there are sixteen language
fonts to be found in the subdirectory \LASER. In the case of the Arabic font
two files were necessary to accodomate all the required symbols (see
documentation below). There are three files for Russian which differ in pitch
and typeface.

	1)	a	ARABIC_1.LPF	Arabic	(Part 1 of Arabic font)
		b	ARABIC_2.LPF	Arabic	(Part 2 of Arabic font)
	2)		BALKAN  .LPF	Balkan
	3)		BALTIC  .LPF	Baltic
	4)		CLASS_GR.LPF	Classical Greek
	5)		CZECH   .LPF	Czech
	6)		EXT_CYR .LPF	Extended Cyrillic
	7)		HEBREW  .LPF	Hebrew
	8)		HIST_ENG.LPF	History of English
	9)		HUNGARIA.LPF	Hungarian
	10)		MOD_GREK.LPF	Modern Greek
	11)		POLISH  .LPF	Polish
	12)		ROMANCE .LPF	Romance
	13)	a	RUSS_COU.LPF	Russian	(Courier typeface font)
		b	RUSS_16 .LPF	Russian	(Line Printer 16.6 cpi font)
		c	RUSS_TMS.LPF	Russian	(Times Roman font)
	14)		SANSKRIT.LPF	Sanskrit
	15)		SCANDIN .LPF	Scandinavian
	16)		TURKISH .LPF	Turkish

In the same subdirectory there are four further fonts. The first two contain
phonetic symbols. The latter two contain normal characters in a special form.

	1)	a	PHONETIC.LPF		Phonetic font in Letter Gothic typeface
		b	PHON_TMS.LPF		Phonetic font in Times Roman typeface

	2)		MEDIEVAL.LPF		Half uncial typeface font
	3)		SMALLCAP.LPF		Font consisting of small capitals

Furthermore there are four subdirectories under \LASER. These contain
various fonts in different typefaces and pitches, namely Courier, Helvetica,
Letter Gothic and Times Roman. Bear in mind that Courier and Letter Gothic
are non-proportional fonts with a pitch of 10 and 12 characters per inch
respectively. Helvetica and Times Roman are proportional fonts with varying
pitch. The essential differences is that Times Roman is a serifed font while
Helvetica is not.

LASER\COURIER

	1)	COUR_UPR.LPF		Courier 10 cpi upright
	2)	COUR_BLD.LPF		Courier 10 cpi bold
	3)	COUR_ITL.LPF		Courier 10 cpi italic

LASER\GOTHIC

	1)	LG_UPRT.LPF		Letter Gothic 12 cpi upright
	2)	LG_BOLD.LPF		Letter Gothic 12 cpi bold
	3)	LG_ITAL.LPF		Letter Gothic 12 cpi italic
	4)	LG_TINY.LPF		Letter Gothic 16.6 cpi condensed

LASER\HELV

	1)	HELV10_U.LPF		Helvetica 10 cpi upright
	2)	HELV10_B.LPF		Helvetica 10 cpi bold
	3)	HELV10_I.LPF		Helvetica 10 cpi italic
	4)	HELV12_U.LPF		Helvetica 12 cpi upright
	5)	HELV12_B.LPF		Helvetica 12 cpi bold
	6)	HELV12_I.LPF		Helvetica 12 cpi italic

LASER\TIMES

	1)	TMS10_U .LPF		Times Roman 10 cpi upright
	2)	TMS10_B .LPF		Times Roman 10 cpi bold
	3)	TMS10_I .LPF		Times Roman 10 cpi italic
	4)	TMS12_U .LPF		Times Roman 12 cpi upright
	5)	TMS12_B .LPF		Times Roman 12 cpi bold
	6)	TMS12_I .LPF		Times Roman 12 cpi italic

Helvetica, being a serifless font, is suitable for headings or an emphatic printing
style. Times Roman is the standard serifed typeface found in newspapers and
many books. The fonts in these directories do not contain special symbols of the
LinguaFont set, but can of course be edited with the software to include some.
Recall that with proportional fonts (Helvetica and Times Roman) the widths of
the symbols must be borne in mind to produce right justified printout (LaserEd
stores the widths in a table file with the same name as the font being edited but
with the extension .TBL). These two typefaces also use the so-called Roman 8
character set which is very different from the IBM PC set used by Letter Gothic
and Courier fonts.


20.3.	Adapting language fonts to one's own needs

The language fonts contain various special symbols needed for the languages
they refer to. Only those special symbols have been included in the language
fonts which are not already in the upper ASCII area. Furthermore the symbols
of each laser font begin at $33 which is the first ASCII symbol after blank ($32).
If you wish to use any language font then you must first create a video font and
assign the special symbols to certain values in the upper ASCII area which you
do not normally need. You do this with the programme VideoEd. Once you have
completed this step, take careful note of the numerical values you have
redefined in the video font (jot these down on a sheet of paper). Now copy the
plain laser printer font LG_UPRT.LPF to some temporary file, say TMP.LPF.
Then you load the programme NewLas with the name of the special font which
corresponds to the video font which you just edited. For argument's sake
assume that you have created and/or edited a video font POLISH.VGA (for the
VGA colour video adapter). You would then prepare the laser font by using
NewLas with a call from the DOS command line as follows:

	newlas polish.lpf tmp.lpf

You now copy the Polish symbols in the original laser font POLISH.LPF into
the new temporary file TMP.LPF at the addresses of the Polish special symbols
of the video font. Say you have defined the /w/ sound of Polish which is written
as an L with a stroke through it at ASCII $227 in the video font, then you would
copy the printer symbol from POLISH.LPF to $227 in the file TMP.LPF. This
process can be greatly simplified by loading the Polish video font with
LoadVideo or VideoPermanent and then copying the symbols from the laser font
to your addresses in your video font by means of <F8> and <Alt-V> (Copy via
video character set, see description in relevant section on LaserEd above).
	When you have completed this procedure for the entire Polish font you
have a temporary laser file TMP.LPF which you can rename so that the name
indicates its contents, e.g. by calling it something like NEW_POL.LPF. This file
now contains normal ASCII characters and the special symbols needed for
Polish inserted at values which correspond numerically to those of the video
font POLISH.VGA, i.e. there is a one-to-one correspondence between video
and laser fonts so that printing in Polish should present no difficulties from
within your word processing programme. For more details on this area of font
management, see the relevant sections of the present documentation.
	Note. All video fonts are supplied in two forms. The first is the normal
colour font for the VGA video adapter and has the extension .VGA. The
second is for the Hercules Graphics Card Plus and has the extension .FNT. The
latter font type can be converted to an EGA type font (with the extension
.EGA) from the desktop of VideoEd if required.


