CA1105619A - Character generating method and apparatus - Google Patents

Character generating method and apparatus

Info

Publication number
CA1105619A
CA1105619A CA327,230A CA327230A CA1105619A CA 1105619 A CA1105619 A CA 1105619A CA 327230 A CA327230 A CA 327230A CA 1105619 A CA1105619 A CA 1105619A
Authority
CA
Canada
Prior art keywords
character
typesetter
digital
recited
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CA327,230A
Other languages
French (fr)
Inventor
Derek J. Kyte
Roderick I. Craig
Walter I. Hansen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Eltra Corp
Original Assignee
Eltra Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Eltra Corp filed Critical Eltra Corp
Application granted granted Critical
Publication of CA1105619A publication Critical patent/CA1105619A/en
Expired legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41BMACHINES OR ACCESSORIES FOR MAKING, SETTING, OR DISTRIBUTING TYPE; TYPE; PHOTOGRAPHIC OR PHOTOELECTRIC COMPOSING DEVICES
    • B41B19/00Photoelectronic composing machines
    • B41B19/01Photoelectronic composing machines having electron-beam tubes producing an image of at least one character which is photographed
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41BMACHINES OR ACCESSORIES FOR MAKING, SETTING, OR DISTRIBUTING TYPE; TYPE; PHOTOGRAPHIC OR PHOTOELECTRIC COMPOSING DEVICES
    • B41B27/00Control, indicating, or safety devices or systems for composing machines of various kinds or types

Abstract

A font storage system for use in a typesetter having an electroncially controlled character imaging device. The storage system, which preferably includes a floppy disk, has digital information stored thereon defining each character to be typeset by at least two outlines on a normalized X-Y grid. The digital information defining each character includes (1) digital numbers defining the X and Y coordinates of the initial start points of the outline and (2) digital bumbers defining a plurality of sraight line vectors extending successively along the character outlines. Each vector has a first digital number representing the X coordinate distance and a second digital number representing the Y coordinate distance from one end of the vector to the other.

Description

ii6~
: .

BACKGROU~D OF THE INVENTION ~;

The present invention relates to the art of generat-ing alphanumeric characters or other symbols for reproduc-tion by a cathode ray tube (CRT), a laser beam scanner or ;~
other flying spot character imaging device which is capable of being electronically controlled. More particularly, the present invention concerns a font storage system for use in a character generator where~y a font of chaxacters or other symbols are stored in a digital code.
The field cf automated typesetting has experiencedever-accelerating ad~ances since Ottmar Mergenthaler develop~
ed the Linotype~ machine ~or semi-automatically producing lines of type. The Linotype machine and its progeny of "hot metal" typ,esetters have been called the first genera-tion of automatic typesetters. These typesetters were`re-fined over the years and are still in use in some locations.
The second generation of typesetters, which were pioneered ~y Rene ~igonnet and Louis Moyroud, among others, are called photo-mechanical typesetters, or simply phototype-setters. In these machines, one or more fonts of characters are arranged on a photographic negative. Selected characters are automaticall~ projected through an optical system and posit~oned ~n a line on photographic ilm. Not only are these ph~totypesetters no~ less expensive than their first genera-tion parents, ~ut refinementsin the machines led to ~aster . . .

~ .

. -3~

speed, better quali~y and greater typographic flexi~ility.
Phototypesetters ar2 curxently enjoying a period of maximum use in the graphic arts industry, hut are being improYed upon by third generation machines: the so-called CRT (and .
laser) typesetters.
In CRT typesetters characters are electronically generated and written onto photograph.ic film, thus eliminat ing most of the mechanical movements characteristic of second generation phototypesetters. This change from mechanics to electronics is resultlng in still faster speed and greater typographic 1exibility, as well as less frequent adjustments and fewer changes in "font dressings" or stored ~onts which are necessaxy on all second generation typesetters. The CRT
typesetters are~ as a rule, more expensive than their second generation counterparts so that, while they ha~e become the dominant machines in the newspaper market, they are only jus~ beginning to gain significance in non-newspaper appli-cations. It is expected, however, th.at the price of CRT
typesetters ~ill come down as volume increases and new mac~ines are developed to take advantage of ad~ances in electronic circuit technology~
There are genera]ly two methods ~y which character ~onts are stored in third generation typesetters. The so-called "analog" machines store the character masters on photographic ilm ~rids. These masters are scanned with a flying spot scanner at the same time that the charac-ter is imaged in the appropriate size on the output CRT. A
second class of machines, the so-called "digital" machines, rely on character masters which have been coded in digital form and stored on some ki~d of digital storage medium in the machine. ~ith such digital machines the ability to store a large font library within the typesetter is :Limi,ted only by the cost of providing a storage medium of suitable size so that it is not normally necessary for the user to repeatedly "dress" the machine by inserting new fonts. In addition, the digital machines are at least twice as fast as the fastest analog (photographic store) machines and are capable of imaging cleaner, more uniform charactexs than the analog machines.
Originally, when diyl,tal CRT typesetters were fixst introduced, the principal concern in preparing digital ont masters was simply data ~eduction. In order to reproduce characters which were indistinguishable from cha~acters Lmaged from photo~raphic masters or printed by cast type faces r it is necessary to encode each character with a relatively fine grid; i.e., ~ "ma~rix" with a high resolu-tion or density of xaster elements. At a minLmum, and or ~m.~ll characters,the grid may comprise 70 columns and 100 rows or 7,30~ raster elements. I~ the presence or absence of a portion of a character in each raster element is represented by one bit, 7,Q00 bits of information are required to represent all elements of the qrid. The U.S.
Patent ~o~ 3,305,841 to Schwartz discloses a CRT typesetter in which the number of bits required to represent a character is compressed at ~east by a factor of 3 in every case, and by a factor o 5 or more in an average case. This data reduction is accomplished by identifying with a digital code the starting and ending points of the line segments (dar~ portions) of a character in each row or column of the grid. Thus, in a grid comprising 7,000 raster elements, the data required to define a character was reduced from 7,000 bits to approximatel~ 1,500.
The U.S. Patent No. 3,471,848 to ~anber discloses an i~provement on the above-noted system which permits an additional reduction in data. With this system, the start-ing and ending points of a line segment wlthin a row or column of the grid are encoded as an incremental increase or decrease from the starting and ending points, respectively, on a line segment in the previous row or column. ~ata compression is achieved because the numbers required to define the incremental addresses of a line segment are smaller than the numbers required to define the absolute addresses.
The Patent Nos. 3,305,841 and 3,471,848 also dis-close a number of other techniques of data compression with digitally encoded char~cters:

9 ~ ~:

~ 1) The provision of a code which indicates the number of blank rows or columns on one side or the other ~or both sides) of the character.
(2) The provisio~ of a "line repeat" code which indicates that the line segment or segments in a row or col~mn are at the same position(s) as the segment~s) o the previous row or column.
~ 3~ The provision of a code indicating that a selected start or end OI a line segment address is to be repeated a prescribed number o~ times.
Notwithstanding the various techniques of data reduction, digital font masters produced in accordance with the teaching of the U.S. Patents~os. 3,305,841 and 3,471, 848 are appreciably more expensive than the photographic masters used in the analog CRT typesetters. There are two fundamental reasons for this:
(1) The digital machines size type by varying the spacing of strokes on the output tube. There are practi-cal limits as to how far up and down an image can be sized in this fashion. Therefore, these machines have required several different master fonts in order to cover a com-plete range of output sizes.
; (2~ Digitizing type fonts is a tedious, ~ime ~-consuming processO Character masters are first prepared on a standaxd grid and then scanned automatically to detexmine which raster points on the grid fall within .

the character. The resulting dot matrix is then "digitized"
in accordance with a particular code and stored in a machine readable form.
The U.S. Patent No. 4,029,947 to Evans et al. dis-closes a character encoding and decoding scheme for a C~T

typesetter which makes it possible to eliminate the first disadvantage noted above. This is accomplished by encoding the normalized charaoter outline (as distinguished from size-related character row or column line segments) with a series of successive slopes and curvatures ~rom an initial starting point or points for the character. For this purpose, a large number of slopes and curvatures are available for selection by the encoder, with each of such slopes and curvatures being identified by its~individual binary code number.
Another character representatlon scneme wnlch treats characters in terms of normalized character outlines was used by the ~odel 1601 CRT typesetter manufactured by SEACO Com-puter Display in Garland, Texas. This machine, which is dis-closed in the Seybold Report, Vol. 1, Nos. 12 and 13 (Fe~. 14 and 28 , 1972), stored the absolute coordinates of a number of points on the character outline. Data reduction was achieved because intermediate points on the outline b?tween stored points were considered to follow straight lines between the stored points.

The SEACO 16Ql CRT typesett~r, as well as the type-setter disclosed in the U.S. Patent ~lo. 4,029,947, determlne the data required for imaging the character over a range of point sizes from a single set of encoded character outline data by means of a calculation procedure, carried out either by software or hardware. In contrast, the CRT typesetters disclosed in the U.S. Patents Nos. 3,305,841 and 3,471,848 ; perform a minimum of calculation because the information required to "stroke'l successive line segments (i.e., the start and end addresses of each line segmentl axe present in the data.
Thus, while Yarious digital character encodiny schemes have been defined in the art for CRT typesetters, no scheme has been devised which optimally meets all the ~arious requirements. These are:
~ 1) The encoding scheme should be conservati~e of space in dî~ital memory.
(2~ A single set of data defining a character should be usable to generate character imayes in all point sizes.
~ 3) The encoded data should be capable of being co~verted into the form required to control the CRT by a relatively simple and easy~to-automate computation procedure.
(4) The character encoding scheme should be ; defined by rules which are easily automated, so that the coded data may be generated from photomasters, raw dot matrices or from some other code by a digital computer.

~56~
.. ~, SUMMARY OF THE INVENTION
The present invention provides a digital encoding scheme for characters or symbols, and an associated font storage system, which meets all of the above-noted requirements.
In accordance with an aspect of the invention there is provided a typesetter for the automatic generation of characters comprising a character imaging system for writing graphics quality characters of any design on a print medium; a font storage system having digital data stored thereon defining each character to be imaged; and an electronic computation and control system, connecting said Eont storage system with said character imaging system, for controlling said character imaging system in accordance with said digital data; said character imaging system including a flying spot scanning device for writing characters by means of a plurality of parallel scanning strokes; said font storage system including a storage medium on which are recorded said digital data having: (a) digital numbers defining the first and second coordinates of the start points of at least two outlines of a character that is superimposed on a normalized encoding set of first and second coordinates;
and Ib) digital numbers defining a plurality of straight line vectors extending successively along the character outlines from said start points, each vector having a first digital number representing the first coordinate distance and a second digital number representing the second coordinate distance from one end of the vect..or to the other; and said computation and control system -- 9a -including: (a) means for randomly accessing said stored digital data and supplying said digital data in sequence;
and (b) means, adapted to receive said digital data in sequence, for converting said digital data into character intercept values for each stroke of said scanning device.
According to the invention, characters are defined by encoding their outlines on a normalized grid of first and second coordinates, as follows:
(1) A starting point on a character outline is chosen and the first and second coordinates of this point are stored.
(2) One or more straight line vectors which extend successively along the character outline from the start polnt, and closely approximate the outline, are chosen. Each vector is then represented by a Eirst digital number defining the first coordinate distance, and a second digital number defining the second coordinate distance from one end of the vector to the other. ;
The vector outline encoding scheme according to the present invention meets the four requirements set forth above. This encoding scheme is, above all, conservative of space and memory. According to a preferred feature of the invention, the first and second digital numbers defining each vector are limited in size.
For example, with a moderately high resolution such as 432 units to the "em" square, they may be 4-bit numbers so that a vector is represented by one byte ~eight bits) of data. An analysis has shown that by far the .
:

I ~,., i61~

--10-- . , majority of yectors re~uired to define a character are with-in 15 units in the ~irst and second coordinate directions on the grid. The ~ector encoding scheme also inherently provides ncremental distances in both the first and second coordinate directions from the tip of the previous vector.
These incremental distances can be defined with less informa-tion than the absolute coordinates of a ~ector tip. In addi-tion, the start point and vector data are presented in a prescribed ~ ce which, by i~self, associates the data with specific character outlines. As a result of ~hese three factors, the present encoding scheme compares favorably ~ith all the prior schemes o~ digitizing characters in the amount o~ data required to .define a character, and in the complexity and speed of the hardware re~uired to process this data.
Furthermore, a single set of character encoding data according to the inven~ion is usable to generate character images in all point sizes. It is necessary only to compute the intersections bet;~leen each horizontal or vertical stroke and the character outlines to determine when the CR~ or laser beam should be turned on or off. The straight line vectors defined by the encoded data make it possible to carry out this computation ~ith a minimum o~ hardware ~or so~-tware) and at high speed.
Finall~, the character encodi.n~ d~ta according to the invention may be deri~ed automatically ~rom raw dot m~trix in~ormation or rom some.other digitized code in a ~56~g - - 1 1 : i relatively straight-forwaxd way using a programmed digital computer. In particular, in accordance with a preferred method o encoding, the stxaight line vectors are chosen by first determining successive coordinate points on each outline for which the outline devlates less than a prescribed distance from a straight line drawn between ~-these points. Once the outline points are determined, the first and second coordinate values of each successive point are subtracted from the first and second coordinate values of the previous point to determine the coordinate increments from point to point. These increments are then stored as the 4-bit first and second digital numbers defining each vector.

In summary, the font `storage system according to the present invention exhibits a combination of features which makes it uniquely suited for defining fonts of charac-ters in digital form. Further features and ad~antages of this system will become apparent from the following detailed description, taken in conjulction with the ~arious ~igures.

~)S6~L9 :;~
- :;
-12-. :

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a normalized X,Y grid with the outline of an upper case IIQIl superimposed thereon. The closest co-ordinate intersection points to the outline are also indi cated.
FIG. 2 is a n~rmalized X,Y ~rid similar to FIG. 1 in which certain intersection points representing the charac-ter outline have been deleted.
FIG. 3 is a normalized X,Y grid similar ~o FIGS. 1 and 2 in which additional intersection points have been deleted and straight line vectors between remaining points have been inserted in accordance with the present invention. ~:
FIG. 4 is a trial matrix used in the automatic selection of vectors, in accordance wlth the present inven-tion, to represent a character outline.
FIG. 5 is a flow ch.art indicating the steps which are taken in the automatic selection of ~ectors to represent a character outline.
FIGS. 6~-6E illustrate one preferred format of digital data for the character encoding scheme according to : . the present invention.
:~IG. 7 i.s a normalized X,X grid with the outlines o~ a represen~atiye "character" de~ined by star~ points and ~ectors following the arran~ement shown in the left:-hand side or FIG. 3.

FIG. 8 shows. the actual coding for the character xepresented in FIG. 7 using the data format illustrated in FIG. 6.
FIGS. gA-9D illustrate another preferred format of digital data for the charactex encoding scheme according to the present invention.
FIG. lQ illustrates a representative character superimposed on a normalized X-Y grid ~ith the character out-lines de~ined ~y start points and vectors following the arrangement shown in the right-hand side o,- FIG. 3.
FIG. ll sho~s the actual coding for the character represented in FIG. 10 using the data format illustrated in FIG. 9.
FIG. 12 is a plan view of a h.ard-sectored floppy disk with sectors and tracks indicated.
FIG. 13 is a chart illustrating how the font and : character data are arranged ~recorded~ on a floppy disk.
FIG. 14 is a chart detailing the character look-up and width file shown in FIG. 13.
:FIG. 15 shows an upper case "Q" as generated by vertical "strokes" on the face of a CRT.

- 12a -56~5~
FIG. 16A shows a typical character having its outline bounded by straight line vectors which intercept vertical scan lines.
FIG. 16B illustrates how the character of FIG.
16A is imaged in a particular character width by the vertical scan lines.
FIG. 17A shows a typical character having its outline bounded by straight line vectors which intercept vertical scan lines.
FIG. 17B illustrates how the character of FIG. 17A
is imaged in a particular character width by the vertical scan lines.
FIG. 18 illustrates how stroke end points (interrupt values) are determined by interpolation from encoded character data.
- 12aa -. :

"~

15Gl9 -12b-FIG. 19 illustrates how stroke end points (intercept values) are determined by averaging ~rom encoded character data.
FIG. 20 is a perspecti~e view of a CRT typesetter with various elements shown in phantom.
FIG. 21 is a block diagram of the elements of the ~x typesetter shown in FIG. 2~.
FIGS. 22A and 22B are block and signal diagrams, respectively, showing the structure and operation of the character generator element of FIG. 21.
FIG. 23 shows the code converter element of FIG. 21 with its ~arious inputs and outputs.
FIG. 24 is a block diagram of the elements of the code converter shown in FIGS. 21 and 23.
FIG. 25 is a block diagram o the master controller element of the code converter shown in FIG. 24.
FIG. 26 is a geometric diagram illustrating the vector computation process carried out by the code converter.
FIG. 27 is a flo~ chart illustrating the operation o the scaler element o the code converter.
FIG. 28 is a geometric diagram illustrating the interpolation pr~cess carried out ~ the code ~onverter.
FIG. 2~. is a bloc~ dia~ram o~ the R~M addressing portion of the code con~erter.

-12c-FIG. 3Q is a block di-gr~m of the scaler element of the code converter.
FIG, 31 is another flow chart illustrating the operation of the scaler eleme~t o~ the cocie converter.
FIG. 32 is a geometric dia~ram illustrating the averaging process carried out by the code converter.

~ESCRIPTION OF T~E PREPERRED EMBODIMENTS

The preferred embodiments of the present invention ;~ ;~
will now be described in detail. The irst portion of this section is directed to the font storage system, with its no~el and advantageous scheme for digitally encoding characters or symbols. The second portion concerns apparatus which is capable of imaging characters defined by the font storage system.
FIG. l shows, by way of example, a greatly enlarged version o~ an upper case "Q" superimposed on a grid or matrix o horizontal and vertical lines. Each character or symbol that is recorded is located on such. a grid. Horizontal and vertical resolution are indicated to be the same in FIG.l, but this is no.t necessary. T~e characters may be of any width, and are situated on a "base line". E~ch charact2r or symbol is also considered to include a "white space" about the character, and is fitted within character width edges called the le~t and right side bearings (LSB and RSB).
The lines in the ~rid sho~n in FIG. 1 may be represented ~umbered) by th.e X and Y coordinates of a Cartesian coordinate set. ~ny point within the grid may be designated by the coordinates (X, Y) o~ the nearest intersection of a horizontal and vertical ll`ne. The left-most ver~ical edge of the charac-ter zone is designated X=0 and the horizontal base line is designated Y-Q.
When a character, such as the upper case Q shown -14~
in FIG. 1, is to be digitally encoded it must fîrst be plotted onto the grid in such a way that all ~alues of X and Y are represented as integers, By eliminating fraction~l values of the coordinates, the numbers representing X and Y
may be kept small. As shown in FTG~ 1, tne outlines of the character "Q" are plotted by choosing the closest intersection points on the grid. Each o~ these points may thus be repre-sented ~y its X,Y coordinates, where X and ~ are in~egers.
It is therefore possible to completely define - i.e., digitally encode - the character by listing all of t~ese coordinates, preferably in some ordered sequence. Xowever, since the grid or matrix must ha~e a sufficient line density to eli~inate a jagged appearance of the character, even when the character is Lmaged in the largest point size, a definition of the character in this manner would require an excessive amount of storage space. For exa~ple, for the upper case "Q" shown in FIG. 1 there are 267 outline coordina~e points defined within a 60 x 80 matrix. If the matrix density is increased by a ractor of 10 in each orthogonal direction (,a more practlcal matrix for quality typesetters~ the character,"Q" would have a~out 2,500 coordinate points. Since each coordinate in a 600 x 800 matrix requires 20 bits o data to define ~10 bits eac~ for X and Y~ one would require a~out 50K ~its to repre~
sent the upper case l'QII. Since a typical font has more than lOO characters, a typesetter would have to ha~e a high-speed m~mory with a capacit~ o about 60 miilion bits to store a single font in this type of code.

~D5~

-15~

Fig. ~ illustrates how the number o~ X, Y coordinate points defining a character may be reduced by designating only the fixst and last points in a vertical or horizontal line (coordinate). The character "Q" has been divided in half in the figure. On the left side are ~he terminal outline points of the vertical lines; and on the right side are the terminal outline points of the horizontal lines. By comparing Figs. 1 and 2, it may be seen that the total number of coordinate poin~s is substantially reduced. Wherever a vertical line of points appears in the character, as is the case along the left-hand si.de of the character, all the points intermediate the two end points are delet~d with the vertical outline code.
Similarly, wherever a horizontal line of points appears in the character, as is the case at the top of the character, the intermediate points are deleted with the horizon~al outline code. Particularly if coordinate points are represented by relative distances from previous coordinate points, rather than by absolute coordinates, there is a considerable reduction in the amount o data required to define the character. Such a representation would be substantially ~he same as the charac-te~ encoding scheme disclosed in the aforementioned U.S. Patent No. 3r305,841 to Schwart~ and the U.S. Patent ~o~ 3,471,848 to Manber.
The present invention provides an encoding scheme ~hich is even more conservative of storage space than the ~56.~

, ~
character representation shown in Fig. 2, and which may be utilized in a typesetter, with a minimum of computational hardware, to image characters at high speed. Furthermore, this character encoding scheme may be automated in a straight-forward way using a programmed digital computer.
Figure 3 illustrates the encoding scheme according to the present invention. According to this scheme, the number of coordinate points along the character outlines is reduced still further, and it is assumed that these points are inter-connected by straight lines. Rather than specifying ~he ab-solute coordinates of these selected points aro~md the character outline, the straight lines are represented as "vectors" by the number of coordinate units from one end of the vector to the other. The vectors are arranged in sequence, from head to tail, so that a new vector begins where a previous vector ends. A
series or string of such vectors, which form an outline of the character, emanate from an initial "start point" which is given in a~solute coordinates.
For instance, as is shown in the left-half of Fig. 3, vectors proceed from left to rîght, with the convention that if two vectors commencP from the same X coordinate, the lower-most ve_tor is listed first. Similarly, when a pair or pairs or start points are given, the lower pair and the lo~ler star~
point are listed first.
Thus, in Fig. 3 the start points X , Y and X , Y

-17- .
are first gi~en in that order. Thexea~ter, ~he vectors e~anating fro~ these start points are listed in the order;
1, 2, 3, 4. The numbers defining .these vectors are set forth in Table I:

TABLE I
Vector Number X Distance Y Distance l 2 -7
3 4 -6
4 4 7 When the vectors 3 and 4 ~ave run out, i.t is neces-sary to deine two new start points X3,Y3 and X4, Y4 before proceeding with new vectors. Otherwise, because the charac-ter data proceeds from left to right, one would ass~e that there were no vec~ors or star~ po.ints having X coordinate values in the X coordinate range of the next two vectors.
After giving the start points X , Y and X ,Y the vectors are listed in the order 5, 6, 7, 8 using the conven-tion bottom-to-top. Further vectors are then listed in the order left-to-right, hottom-to-top; i.e., in the order in which they "run out" as one proceeds to the right-along the X a~iso Normall~, staxt points occur i.n paîrs; however, it is possibi2 ~or two yectors to emanate.from the. same start point as illustrated ~y th.e vectors 9 and l0. In this case, it is convenient if the same start pointbe considered a "pair" of start points with identical values so that ~he ~ectox 9 proceeds from the coordinate point X5, Y5 an proceeds from the point X , Y .

The right-hand side of FIG. 3 illustrates ~he same encoding scheme with a different convention. In this case, the v~ctors of a character are listed from top to bottom in an entire string following initial absolute coordinates of the upper-most point of a vector string. In the case of two start poîn~s having the same Y coordinate va~ue, either point may be listEd first.
With the outline shown in the right-hand side oE FIG.
3, the order of data is as follows: The start point X ,Y
and its vectors 11, 12, 13 and so on to the end of the string;
he start point X , Y and so on to the end of the string;

the start point X , Y ; the vectors 17 and 18; the start point X , Y ; the vector l9 and so on.
lQ
Finally, as in the case of the start point X , Y and X , Y , a single point is defined as a "pair" o~ start points X , Y and X , Y . First the point X , Y is listed 11 ll 12 12 ll 11 with its vector 20; then the start point X , Y , is listed followed by the vector 21 and the other vectors of the string.
The vector 20 terminates at the end point 22. The vector string starting with the vector 21 terminates at the end point 23. And the vPcto~ string starting with the vector 11 termi-nates at the end point 24.

-1~

There are two reasons why the start point and vector encoding scheme according to the present invention is more conservative of space in memory than the encoding scheme illustrated in Fig. 2 and disclosed in the aforementioned U.S. Patents Nos. 3,3Q59841 and 3,471,848:
(1) Most characters, unlike the "Q" which was chosen ~or illustration, include a number of straiyht lines in their outlines.
~ 2) Even curved surfaces can be represented with ad-equate acc~racy by a succession of straight line vectors of sufficient length that considerable data reduction is possible.
Experience has shown that the amount of data requi~ed to define a font of characters with the en~oding scheme ac-cording to the present invention is reduced, over the scheme disclosed in the patents Nos~ 3,305,841 and 3,471,848,by about a factor of 10.
A further advantage of the encoding scheme according to the present invention is that it lends itself to computer automation. That is, once the digital data defining a charac-ter has been reduced to the for~at shown in Fig. 2, with either vertical or horizontal outlines, it may be converted into start point and vector data using a simple, straight-forward algori~hm. Fig. 4 illustrates a typical calculation, and Fig. 5 such an algorithm which may be used to detexmine the length of a vector.

, - ~o -FIG. 4 shows a 15 x 15 trial matrix arranged in the upper right quadran~ from a point (0,0) which may be an in-itial start point or the tip of a previous vector. The quadrant of the trial matrix assumes that a left-right vec-tor is to be defined which extends upwardly (positlve values of Y). Clearly, the trial matrix may also be positioned in one of the other quadrants depending upon the direction in which the vector extends.
Also, the size o the trial matrix corresponds to the maximum pelrnissi~le len~th of a vector ~in this case 15 units each in the X and Y directions, respectiYely~. If the vectors are chosen to have a greater or lesser maxîmum length, the size of the matrix is adjusted accordingly.
-In this example, the points 30 represent the actual digitized outline of the character in the format shown in FIG~ 2. The line 32 is a proposed vector which must be tested to determine ~hether it comes sufficiently close to the most distant outline point to represent the outline. The coordinates X,Y define the current trial poi~t or the tip of t~e vector 32. The coordinates or all OI the outli~e poin g 0 0 1 1 15 15 accordance ~ith their sequence along the X ax~s o, the matrix.
As is shown in FIG, 5, the first outline 30int to be tested is the point on the matrix with the largest for~ard (in this case X~ component from the point (0~0~. In FI~. 4, the first trial point X , Y is (15,9). The fourth trial point, where ~ ,Y are coordinates (12,9~ as shown in FIG.4, T T

is tested a~ter ~it ~ailure ~n the three pri,ox trial points:
(15,9~, ~14,9~,and ~13,~. The pur~ose of the algorithm ;s to ~ind the longest YeCtor that passes the fit test.
The algorithm tests each lower ~alued outline point 3~
(with coQrdinates x,y) to determine whether a perpenaicular dis~ance ~ from that point to the vector drawn from the initial point (0,0~ to X ,Y exceeds a preset fit constant ~. Initially, the coordinates x,y of the point 30 just prior to the trial point XT,Y are chosen and ~he test is per~ormed. If the distance ~ is less than the constant K (~h~ test is passed) the outline point 30 with the next lowest value o~ X is chosen and the test is repeated. I~ the distance ~ exceeds the cons~ant K (the,test failed) the test point X ,Y is abandoned and the next lowest ~alue o~ X
-is chosen.
When a t~ial point is ~ound for which all the out-line points 30 with lower X coordinates pass the test, or when the X coordinate X of the trial point has ~een reduced to one, the coordinates X ,Y are used in defining the vector~
The vector is then represented by the difference bet~een the c~ordinates of the last previous vector tip (coordinate ~0,0) in t~e trial matrix~ and the coordinates of the chosen trial point X ,Y . That is, dx, dy is set equal to X ,Y .
The perpendicular test distance ~ is determined for each point ~y simple geometry. Using similar triangles, we have:

X

- T , and Y ~ 2 2 X + Y
T T

~y = Y ~ X6 X

Solving for ~ :

X T
T _ 66 XT
`/;2 2 X + Y
T T

= tTABLE I value @ XT~YT] ~Y6 ~ X6 ~TABLE II value @ XT YT?]
X~ , ~
~ L
The ~alues of ~ X 2 ~ YT anu T

may, of course, ~e calculated each time by a computer. How-e~er, since there are a limited number of X ,Y points in ~ 15 x 15 matrix, it is more con~enient if all the possible solutions for these expressions ~e entered in a TABI.E I and a TA~LE II, respec~ively, so that they may be quickly looked up and retrieved from storage.

In addition, it should be noted that the preset fit constant may be chosen arbitrarily small so that the vectors come as close as desired to the actual character outline.
In a preferred embodiment the constant K is made dependent upon the slope of the trial vector so that near horizontal slopes may deviate more from the outline.

If T > 1, K = 0.5; and X

if T S l, K = lØ

X
T
It will be appreciated that the algorithm shown in FIG. 5 is extremely simple and may be carried out using a general purpose c~mputer in which the vertic~l outline cr horizontal outline points ~per FIG. 2, left side and right side, respectively) are.stored. A program for a particular computer may be developed from this alsorithm using well-known programming principals and techniques.
FIG. 4 shows a trial matrix in which th~ maximum permissible values of X and Y are 15 units. A vector termi-nating anywhere within this matrix may be defined by two 4-bit binary numbers: dx and dy. An analysis has shown that, even with a grid of moderately high resolution, by far the majority of vectors required to define a character fall within such a 15 x 15 matrix so that it is con~enient, ~5~

and results in data compression, if 8 bLts (one byte~ of data are used to define each vector.
According to the in~ention, therefore, the num~er of bits defining a vector is chosen to minimi.ze the total data content in a font of characters for a given resolution~ The process of choosing the maximum ~ector length involves the following steps:
(1) The maximum point size of the characters to be generated by the typesetter is first determined.
C2) Gîv~n the maxLmu~ point size, a resolution is chosen which permits reproduction o the f.'ne features in the largest characters~
C3) Given the resolution, th.e preset fit constant K
is chosen so that the vectors follow the cur~ed character outlines with sufficient accuracy that, when characters are reproduced in ~he largest point size, they will not appear to have a succession of "flats" on curved surfaces.
~ 4~ Once the resolution and constant K are determined, it is possible to generate a statistical distribution of vectors of varying lengths 'or all characters in a font.
Such a vector length distribution will show the relative numbers of vectors at each o~ the permissible lengths ~1 x 1, 3 x 3, 7 x 7, 15 x 15, 31 x 31, etc.~
(5~ From this vector length distribution, a maximum ~ector len~th is chosen which. minimizes the total quantity of data. If the maximum vector length is too short (e.g., 3 x 3 which can ~e defined with a total of 4 bits) the 56~

the definition of a character will require an excessive number of vectors and the data reduction will be minimal.
Similarly, if the maximum vector length is too long (e.g., 255 x 255 which can be defined by 16 bits~ the arnount of data required to de~ine short vectors is unnecessarily large, resulting in minimal data reduction.
FIG. 6 illustrates a preferred format for defining a character with left-right vectors (FIG. 3, left side).
These vectors are specified in one quadrant by the X,Y coordi-nates of the e~d of the ~ector relati~e to the quadrant origin Since outlines are traced ~rom left to right across the character, only the two right-hand quadrants are used~
Control codes permit quadrant selection and curve initialisa-tion and completion. Start points are defined by their Y
values only, hecause the X position is implied by the coding.
A "block" of data defining the character star~s with a "header word" A (comprising two 8-bit bytes) which gives the X coordinate of the character left side ~earing. This is followed by a "start point word" B givin~ the Y coordinate of the lowest start point in the first X grid line of the character. The word B is followed by a "vector byte" giying the values dx and dy of a vector from that start point, and ~hen another start point word D defining the ne~_ lowest point. Still another start point word E de~ines the highest point in the irst X ~rid line and a vector byte F defines a vec~or from this start point. If there are any s~art points within fifteen X units from the first grid line, these may be interspersed in their ~roper Y ~alue sequence. The character data block continues with vector bytes, "control bytes" and start words C and terminates in an "end block byte" H denoting the end of the block.
FIGS. 6B, 6C, 6D and 6E show the formats for the header word, start point word, vector byte and control byte, respectively. ~hese formats are drawn with the least signi-ficant bit on the right. The significance o the symbols within these words and bytes are as follows:

Header ~ords:
-X8X~X6x5x4x3x2 1 0 Left side bearing magnitude.

T - Test bit, may be used or detect-ing errors.
C - Chain bit indicates whether this word heads the final character . block.
K - Kern bit, determines the direc-tion of the left side bearing (away from or towards the previous character~.

N N N N ~ The number of start words on the 3 ~ 1 Q
first ~rid line o~ t~e character.

.

Start Point Word:

y Y Y Y Y Y Y Y Y Y - The vertlcal distance between g 8 7 6 5 4 3 2 1 0 the character base line and the start point (either positive or negative).
S - Undefined.
~ D - Down bit, determines in which of the two right-hand quadrants subsequent vector displacement will occur.

X X X X - The number of grid lines between the appearance of the "start new line" control code and the actual start points themselves.
.
Yector Byte Y Y Y Y - This value defines the vertical 3 2 1 ~
offset between the beginning and the end of a vector.
X X X X - This is the horizontal offset between the beginning and the end of a vector.
Control Bvte:
o n Q O - These bits, i~ set to zero, define a control byte.

56~

M M M M - rrhese four bits form a binary number (O to 15) which desig-nates a "contro~ ~unction1'.

Control functions: Control functions are required through-out the character block and are specified in the control byte with its four significant bits set to zero. Thls permits sixteen different functiGns to be defined by the n~erical value of the remaining ~our bits.

n - Yiller.
1 and 2 - Undefined.
3 - Start two outlines with no intermediate outlines.
4 - Start two outlines below existing ones.
- Start four outlines with no intermediate out}ines 6 - St~rt four outlines below existing ones.
7 - Replace an existing outline ~alue with a new value without changing the numerical order of values up the grid line ~i.e.~
end one and start one outline).
8 - Undefined.
~ - End block.

10 and 11~ - Undefined.
12 End ~wo outlines.
13 - End four outlines.
14 - Change direction. Subsequent Yectors occur in other quadrant.
- Displacement by 16 units in a vertical direction with no hori~ontal movement.

FIGS. 7 and 8 illustrate how a character may be en-coded with the encoding scheme according to the present invention using the format illustrated in FIG. 6. In ~IG. 7 a .simple "character" has been dra~n which contains a number of start points, end points and intervening vectors. The actual coding for this character is shown in FIG. 8, left column. The center column in FIG. 8 explains this coding and the right column shows the sequence in which the data would be brought in and used by the typesetter.
FIG. 9 illustrates a preerred ~ormat for defining a character with up-down vectors (FIG. 3, right side~. These vectors are specified in one quadrant by the X,Y coordinates of ~he end o~ the vectol ,clati~e to the quadrant origin.
Since outlines are traced from top to ~ottom down the charac-ter, only the two lower quadrants are used. As in the ~ormat illustrated in FIG. 6, control codes ~ermit quadrant selec-tion and Gurve initialization and completion. With this .: .

6~
.
`, format the grid line Y=O is at the top of t:he character area and successive horizontal grid lines are given con-secuti~e Y numbers down the grid, A ~loc~ of data deining the character starts with a "Y data word" which gives the highest Y start coordinate of the character. This is followed by an "X data word"
defining the X start coordinate of an outline, and the YeCtors and controls for this outline.
All subsequent outlines are sequenced such that the starting point ~ values are in increasing order; i.e.l the Y value for each next outline is equal to or greater than the Y value for the preceding outline. Thus, entire strings or sequences of vectors are defined and completed before deining the next string. If two starting points ha~e the same Y value, either point may be listed first with its entire vectox str ng.
FIGS. 9B, 9C and 9D show the formats for the Y data word, X data word and the vector or control word, respec-tively. These formats are drawn with the least significant ~it on the right. The significance of the symbols within these words and bytes are as follows:

Y Data _ord:
Y - This data defines th~ Yertical position of the start point.
K - Undefined.

6~3 X Data ~ord:
XN - This data defines the horizont~l posi~ion of a start point. Left side bearing ~LSB) is defined as 0.
- The sign bit defines the displacement oE
XN wi~h respect to the LSB.
L - The L Bit defines the direction of the dx of the firs~ vector.
F - .The F Bit or "Flare Bit" defines which Yector slope will be used by the decocLer in sxtrapolating a character outline in the region of the grid immediately above the line Y~.
E - The E Bit or "Extrapolation Bit" defines ~hether extrapolation is or is not used in the reglon above the ~rid line ~N.
B - The B Bit is the "Boundary On/Off Bit"
and defines whether the outline is the le~t-side (on) boundary or the right-side ~o~f) boundary.

Yector/Control Word:
dydx - ~or all values o~ dy ~reater than ~, this byte defines the slope of the vector out-line of the chaxacter from the start point (YN,X~2 or from the last vector end point.

356~

All vectors axe sequenced serially in the same sequen~e that they occur on the character outline. The initial vector is located in the MSB's of the word, the second in the ~SB's.

Control Functions: For all values of dy-0, this byte defines -a control code. The specific control is dependent upon the value of dx as indicated ~elow:
Q - End of outline. If located in MSB's, LSB's must be filled with zero's.
1 - Re~erse the dx direction for the next vector.
2 - Defines that there are no displacement vectors applicable to the start point de~ined by the preceding Y and X Data Words.
This control will always be located in MSB's, the LSB's being ~illed with zeros to produce an "End of Outline" control code.
3 - Defines a vector with a horizontal displace-ment o~ 0 units (a vertical vector) and a vertical displacement greater tnan 30 units.
The next data byte defines a binary value of the ~ertical displacement. The data byte has a resultant range of vertical displacement of 0 to 255 lnclusive, but it shall not be utilized between 0 and 30 inclusive.
4 - Defines a vector with a horizontal displace-ment o~ 1 unit and a vertical displacement of 3~ units.
~ Defines a vector with a horizontal displace-., . . ; , ~ .
ment of 1 unit and a vertical displacement0~ 6a units.
6 - Defines a vector with a horizontal displace-ment o 1 unit and a vertical displacement of 120 units.
7 - Defines a series of vectors which follow a concave outline.
8 - Ditto the function 7 for a convex outline.
9 - Ditto the function 7 for a straight outline.
- Defines whether the outline has a low or a high degree of concavity or convexity ~this bit is sensed only if bits 7 or 8 indicate concavity or convexity).
11 - Defines a vect~r with a vertical displace-ment of 1 unit and a horizontal displacement greater than 255 units. The next data byte defines the binary ~alue of horizontal dis-placem~nt in excess of 255 unitsO

' ~1~56 ' 12~14 - ~nde~ined.
15 - Defines a vector with a horizontal dis-placement of 1 unit and a horizontal displacement greater t:han 15 units~
The next data byte defines the binary value of the horizontal displacement.
FIGS. 10 and 11 illustrate how a character may be encoded with the encoding scheme according to the present invention using t~e ormat illustrated in FIG. 9. In FIG.
10 the character "~" con~ains a number of start points, end points and ~he inte~vening vec~ors. The actual coding or this character is shown in FIG. 11, le~t column. The ~ight column in FIG. 11 explains the nature o~ this coding.
FIG. 12 illustrates a convent;onal magnetic disk, called a "floppy disk", whlch has been removed from its card~oard jacket. The disk is about 8 inc~es in diame~er and has a 1 1/2 inch center opening to permit rotation on a spindle. The disk may be magnetically sensitive on one or both sides so that the binary information may be recorded and stored on, and ~*~ieyed from one side or both sides.
The floppy disk shown in FIG. 12 is "hard sectored"
~y 32 small holes ~paced evenly around ~he cent2r op2nins. .r A 33rd h~le is arranged midway betwen two of the evenly placed holes ~o indicate a start point. The holes, which :r may ~e sensed by a photocell, divide the disk into 32 equal ~ 6 sectors (indicated by lines in FIG. 12 for purposes of illustra~ion only~. The disk is al50 divided concentri-cally into 77 c~rcular tracks (also indicated by lines for purposes of illustration only)~ Thus, a location on the disk ma~ be specifi~d by track and sector, the numbers of a track and sector constituting an "address". Each address ~track and sec~or~ on the disk is capable of storing up to 250 bytes of information.
FIG. 13 shows how one or more fonts of characters, which are encoded in accordance with the principles of the present invention, may be recorded on a floppy disk.
Two speciflc sectors on ~he disk on a speciic track (e.g., on track 00, sectors ao and Ql) are allocated ~o disk label and font index. The encoded character information may be stored, commenciIlg at any other address on the disk.
The disk label describes the contents of the disk in conventional Arabic letters, encoded in binary with a stan-dard code such as the American Standard Code for Informa-tion Inkerchange (A~CII). The font index gives the initial address of each font recorded on the floppy disk. This font index may consist, for example, of a sequence of double words, the first word defining the ~ont numbex, and the second word the track and sector address of th~ start of the Lonto Thus, i~ a user wishes to locate ~ont numb~r 126, he causes ~. ~ . , , .

word defining the font number, and the second word the trac~ and sector address of the start of the ~ont. Thus, if a user wishes to locate font number 126, he causes the computer to scan the font index to find the initial address or that font.
The font information consists o a character look-up and width file, followed by blocks o data defining as many characters as there are in the font~ The character data bloc~s may have the format shown in FIG. 6A or FIG.
9A or they may.have some other suitable format for the encoded cheracter data.
A typical look~up and width file is shown in FIG, 14. This file contains data applicable to individual characters which are needed by a composition system. The character imaging system or typesetter makes no use of this information.
If three bytes are used to define the data for each character, up to 83 characters may be described in one sector. Each character width group of three b~tes includes a character number, the character unit width and "flag b_ts", repsect~vely. The character number is related to the form of the character ~y ~eyboard layout number. The unit width is the ~idth o the character in 1/5~ths of an " em" .

ii6~

.

The flag bits are designated bits defining specific characteristics of the.character. The flag bit 6 is the "B" ~it denoting that the character is a base piece accent aligned with the lower portion of character which is not to ~e jumped when the upper case mode is envoked. Flag bit
5 is the "C" bit denoting-that the characte:r is a center-aligned piece accent, and flag bit 4 is the "D" ~it denot-ing that the character is a drawn display superior figure.
The character look-up and widt~ file concludes with a chain address containing the address of the next character width file sector or the first sector of the encoded charac-ter data.
Once digitized character information is encoded and stored on a floppy disk, it must be read, interpreted and imaged b~ a typesetter onto photographic film. This charac-ter generation process will now be described ror the character encoding sche~e set ~orth above in connection with FIGS. 3-14 as axranyed in the particular format shown in FIGS. 6-8. FIG. 15 illustrates the type of data required by a character generator to "stroke" a ch.aracter ~in this case again the "Q") by means of a CRT, laser beam or some other flying spot scanner. In particular, the charac-ter generator requires data in the form of intercept values on each output scan line. In t~e case of Yertical scan lines, as shown in FIG~ 15, these are the signed Y values o~ the ontoff points on each scan line. The ~alues are xeferenced to the character base line with the positive ii63~9 ~alues of Y above, and negative ~alues below the base line~
The t~p-most ~alue of the highest imaged segment in a scan line is flagged so that the character generator can immediately proceed to scan the next line.
In Fig. 15, in the first (left-most) scan line 40 the scanning ~eam is mo~ed vertically upward and proceeds at a constant rate from the ~ase line. The beæm remains off until it mo~es a distance YO from the ~ase line. At this point, the b~am is switched on and remains on until it moves a distance Yl from the base Line. Thereafter, the scan may continue, with the beam switched off, until it reaches the top of the raster matrix. Preerably, however, the ~eam will Lmmediately retrace to below Y2 or to the base line and proceed wlth the second scan line 42. This retrace is triggered by associating and "end-of-the-line" ~lag with the data Yl.
The data sequence required by the character generator is therefore, YO, Yl, Y2, Y3, Y4, Y5, Y6, Y7, ~, Y9, ~lO, Yll, Y12, Y13, Y14, Y15, etc., the end-of-the-line flag being in-~icated in this sequence by the italics. Since the data is stored and supplied to the typesetter in start point and vector outline format, the typesetter requires a "code con-verter" to convert this Yector format into the intercept ~ormat illustrated in ~ig. 15. The structural details of the code converter will depend upon the particular vector orm~t usea Cfor exa~ple, the forma~ illustrated in Figs.6-8, or the fonmat illustrated in Figs. 9~ and the particular intercept format (vertical or horizontal scan; single 1i56.~3 --39~

character or multiple characters per scan line)O In the embodiment described below, the code converter is capable of translating the format illustra~ed in Figs. 6-8 into a vertically scanned, single character intercept format.
In executing the translation from vector format into intercept format, the cade converter should preferably be capable of performing scaling, interpolation, and averaging.
These three opera~ions are illustrated in Figs. 16-19.
Assuming that the output resolution (scan line density~
of the character generator is fixed, characters must be hori-zontally scaled by adjusting the number of scan lines required to define a character. Figs. 16 and 17 illustrate this prin-ciple, whereby the width of the character is Yaried by evenly distributing the necessary number o scan lines across the character.
Vertical scaling may be accomplished either by analog hardware (e.g., a vertical deflection amplifier) or by digital hardware or software (e.g., by multiplying the intercept values YO, Yl, Y2...etc. by a digital scale factor).
For characters of larger point size it may be neces-sary to interpola~e to find the beam switch point on certain scan lines because the line density of the matrix or grid on which the character is encoded is i.nsufficient. In accor-dance with the preferred e~bod~ent of the invention, straight line interpolation is used to increase the digi-tiæed resolution. For example, if the encoded character data ~I.Q~61~3 `

corresponds to a 32 point character in the resolutlon o the character generator, it -s necessary to muptiply by more than two to achieve 72 point output. The ~ertical Y values are simply dou~led and the character generator multiplier makes the further adjustment. The code converter inserts three additional equally.spaced vertical lines between each pair of digitization lines and uses a straight line inter-polation to estimate intercept values as shown in FIG. 18.
In this figure, the continuous lines are the original digi-tization resolution and the dashed lines are the additionalinterpolated positions. A "O" indicates a digitization point derived from vector decoding and an "X" indicates an interpo-lated point. If all of the additional lines ~ere output at ~ ~
the constant output resolution, the character would appear . r four ti~es the original size (e.g., 128 vs 32). It is therefore possible to periodically omit lines across the charactex to produce any.width of character less than this size.
Be.low a certain point set ~idth, an averaging techni-que may be used to reduce the ~nount of data. For small sizes, the amount o~ digitizated data will be in excess of that r~uired~ To utilize all this in~ormation t.he code con~erte~ may produce intercept Yalues that axe th.e arith-me~ical average of the. digitization ~Jalues between output scan linesr as s~own in FIG. 19. In this figux~, the con-tin~uslines are the orisinal digitization resolution and the dashed lines are the scan lines selected for output.

~35~

"0" indicates a digitization point derived from vector de-coding, an "X" indicates a vaiue us~d to calculate the average and a dashed "0" is the a~eraged output value of the code converter. As may be seen, the output value is calcu-lated from all intermediate digitization points as well as that of the previous output line. This averaging technique results in a displacement o the character by approximately half an output scan resolution unit to the right.
Fig. 20 illustrat~s a third generation (CRT) typesetter which may'be designed to accept digiti.zed on~s encoded in accordance with the present invention. This machine com-prises one or more floppy dis~ read/write units (mounted on slides for ease of removal), a card framç containing a num~er of electronic boards, a cathode ray tube, a high voltage power supply unit for this C~T, and a photosensitive film transport mechanism for passing ~ilm past the face of the CRT into a take-up cassette~ The typesetter also includes the usual ~ront panel controls and a paper tape reader, Fig. 21 shows how the various elements of the type-well-known devices with the exception of the code conv~rter and character ger.erator which will be described in detail below.
The system is controlled by a central processor unit 5a ~an L.S.I. 3/05 Naked Milli Computer, produced by Computer Automa~on) either d~rectly via its own data bus ~maxibus) 52 or indirectly ~ia a special data bus (auxiliary ~us) 54.
The system operation is determined by -a pxogram resident in a main memory 56 attached to the ma~ibus which may have up to 32 K X 16 bits of storage.
Operating instructions for the machine are received from three possible sources: a 300 C.P.S. paper tape reader 58, front panel controi 60, and an on-line interface 62. A11 of these elements are connected on the maxibus 52 as is a ~loppy dis~ read/write unit 64 which supplies the digitized fonts.
An auxiliary bus interface and auxiliary bus ~ufer 66 control the components attached to the auxiliary bus 54.
The interface and control ~6 is, in turn, controlled by the CPU 50 via the ma~ibus 52.
A low voltage power supply 68 is connected to all of the electxonic circuit boards to power and logic circuitry.
The components attached to the auxiliary bus 54 are responsible or th~ generation o characters. The code con-verter 70 e~tracts condensed font data from a ~1 or PROM
font store 72 and processes it into an expanded, intercept fcrmat. A character generator 74 receives this data and produceg a beam switch signal on line 84 and analog vol-tages representing X and Y deflections on a cathode ray tube. These analog voltages are amplified by video deflection amplifiers 76. Correction circuits in these amplifiers modify the analog signals to correct for th~

5~

CRT geometry. The characters are finally produced on a CRT 78 using electromagnetic deflection.coils 80. The C~T
beam is switched on and off at the appropriate moments during scanning by the signal received on line 84 from the character generator 74. The electron ~eam is accelerated within the CRT by a high voltage provided by the high voltage power supply 82.
Photosensitive paper or film is in contact with the C~ ~ace, so that latent images are ~ormed of the characters.
A mechanical film transport 86 advances the paper after each line of charac~ers is complete. A stepper motor of the film r transport receives power from a motor drive board ~8 which is controlled by a leading controller board 90 attached to the auxiliary bus 54. The papex is fed into a light-iight take-up cassette wh.ich holas .tne paper until it is developed. The paper is cut off with an electrically operated knife and then photographically processed.
As noted abo~e, the computer 50 coordinates and con-trols the functions of the various elements of the system.
Initially, the choice of font, point size, characters and character positions are read by the paper tape reader 58 and stored in the main memory 56. Thereafter, the encoded data defining the indi~idual characters of the chosen font are read from a floppy disk ~y the read/write unit 64 and stored in the RAM 72~ As the successl~e character blocks are read from the floppy disk, they are placed in specific locations ~o~

in memory so that these blocks may be subsequently addressed as the characters dre imaged. The R~ 72 therefore provides ready access to the compressed data defining the characters of a single font.
On instructions from the computer 50, the code con-~erter 70 recei~es encoded data for a 5 ingle character on a need-to-know basis from the RA~ 72 and calculates the beam r switching points for each successive raster line~ The code con~erter also keeps trac~ of, and updates the X and Y
raster coordinates. To assist in the calculation of the ~eam switching points, a programma~le read-only memory (PROM) within the converter serves as a look-up table for the slope of each defined vector.
The character Lmasing system comprising elements 74-g0 images successive lines o~ characters onto the photo-sensitive film. On instructions from the computer 50 the imaging system advances the film ater each line is completed.
As noted above, all o~ the elements shown in FIG. 21, with the exception of the code converter 70 and chara~ter generator 74, are of well known, routine or ~off the shelf" designs or components. While the computer 50 i5 programmed, this software consists essentially of standard data moving and machine control instruction ln a given sequence. Consequently, this software is well within the skill of an average programmer.
Character generation operates as follows:

~ 35~

The start point and ~ector dat~ relating to the part of the character to be Lmaged in a vertical scan line is addressed (called~ ~rom the R~M 72 and is ~atched into the code converter input buffer. As each scan line is imaged, the se~uential data defining staxt points and ~ec-tors ~or the next following line are called as requlred.
Since the vectors may~ and nonmally do extend in the X
direction across a num~er o~ vertical scan lines, a new ~ector is calied only i th.e previously stored vector(s) are not sufficient to define the next scan line.
The calculation o~ the CRT beam switch.ing points for the next scan lîne then proce~ds,using the slopesstored in the vector slope PgOM. As illustrated in FIG. 22~, the Y intercept posit~ons or values at which t~e ~eam should be switched from o~f to on and from on to off are stoxed in a FIF~ (firs~ in, first out~ register "stack" 91. The Y in~er-cept values for e~ch scan line are sequentially entered into successive "Y registers" in the stack, the ~ixst or lowest Y value being placed in the lowest Y register and successively ~higher Y values in successively higher registers. The upper-most Y value in the scan line is lagged with an ENDSC bit to indicate ~hat the scan may be reset, Th.e ou-:put of the lowest Y register in the stac~ is con~erted to an analog ~alue by ~ d~gital-to-analog con~erter 92 in the character genera-tor 74. ~he character generator also has a ramp generator 93 that produces a uniformly increasing output with time.

comparator 94, connected to ch.ange the state o a flip ~lop "toggle" 95, turns the C~T beam on or off when the ramp generator output reaches an analog ~alue equal to the D-to-A output, and indexes the stack 91 to call up the next highest Y intercept value, If the ENDSC bit is on when a beam switch occurs so that a signal is present on line 96, the ramp generator 93 will be reset to produce a Y deflection voltage just slightly lower than that of the next following Y intercept value. This avoids excessive ~lyback and in-creases the speed of the output. The CRT beam is therefo~e not reset to the ~aseline of the chaxacter or the base of the em square; ratn.er it is reset to the lowest needed level for the next scan line, and does not have to be driven twice over space where it will not ~e turned on.
The ramp generator 93 is caused to rapidly reduce its OlltpUt voltage at a,constant rate when a signal is present at its flyback input. This 1yback signal remains on until the ou~put oE the ramp generator has dropped be].ow the lowest Y intercept value for the next scan line. The fly-back signal is produced by a logic circuit comprising an AND gate 97, inverter ~8 and a ~lip-flop 9.g ~hich receive an input from th.e comparator ~4 and the ENDSC sigI.~l or. line 95.
The operation o~ th.e flyback logic is illustrated in FIG. 22B. This ~igure.shows the CRT Y deflection voltage produced ~y t~e ramp generator 93 or seYeral strokes of the 5~

IIQII illustrated in ~IG, 15. At the ~eginning of the first stroke 43, the Y intercept Yalues Y6 and Y'7 are entered ir.to .
the lowest and next lowest Y registers, respectively, in the FIFO stack 91. Because,the o.utput of the ramp yenerator starts at a point slightly below the analog voltage equivalent to Y~, the comparator 94 produces no output. However, when tne Y deflection voltage reaches the Y6 value, the compa.rator 94 produces a signal which switches the toggle 95 from off to on and calls up the next Y value, Y7, in the FIFO stack 91. The Y deflection voltage continues to ramp up until it reaches a voltage equivalent to Y7. Because the next Y value, Y8, is considerably lower than the Y deflection voltage, the compara-tor 94 continues to produce a signal until the ramp generator output has been reduced. Since an E~DSC bit is associated wlth Y7, a signal is present on line 96. The output of the com-parator 94 and the signal on line 96 trigger the ~ND ga~e 97 and set the flip-flop 99 to produce a flyback sig~al. ~hen the output of the ramp generator 93 has fallen below the Y
~alue, the output of the comparator 94 dxops and resets the ~lip-flop 99 through the inverter 98. This removes the fly-back ~ign21 and 211CWS thP ra~p generator to ramp up o~ the stroke 44. The Y deflection voltage. will promptly reach ~he ~ value, causing the compara~or ~4 ~Q a~ain produc~ an cut-put signal which s~tches the beam from off to on. The beam is switched off again when the Y deflectlon Yolta~e reache~. Y9 r switched on when it reaches Y10 and switched off again when it reaches Yll. S~nce an ENDSC bi~ is associated with ~
~he flyback process is repeated to commence the s~roke 45.
From this description o the operation, it will ~e understood tha~ the lower and upper limits of beam travel in any particular stroke approximately correspond with the lowe~ and highest Y intercept values in that s~.roke; that is, the lower and upper limits of the character intersections.
FIG. 23 speciies the various inputs and outputs of the code converter 70. The signals to and ~rom the auxiliary da~a bus '4 are shown on the le~t, and the signals to and from the character generator 74 are shown on the righ~. These signals are defined as follows: ~
XDB - 1~ bit data word defining the charac-ter to ~e ima~ed are recei~ed in parallel ~rom the RAM 72.
XBMS - 3 control inputs, whose s~ates are determined by the computer 50, înitiate and control operations in the code con~erter.
XRST - A signal control input, originating ~rom ~he computer 50, is used to totally reset the code con~erter ir-respective of the states of any other signals.

.~
-49- .
, CYCREQ - Data input occurs upon receipt of an ~1BS :
CYCAC~ signal. The code conuerter then assumes control o the handshake and supplies a signal on CYCREQ whenever it requires a ::
data word. The word is latched when the data source responds with a signal on CYC~CKr and the CYCREQ signal is dropped.
EOC - l~en the code converter has completed .
processing a character Lt assumes an idle state until the character gener~tor sends a signal on EMPTY. The code converter then supplies the signal on EOC until the XB~5S
si~nal, indicatin~ data input, is removed.
SDATA - 11 bit data ~ords repre~enting intercept values or beam switch points are passed to the character generator in serial form.
SERCK - ~he code converter generates a 5 MHz. clock signal, which is supplied to the charactar generator to synchronize the bits in the :~
output data word (SDATA~.
E~DSC - I~ the output data word refe~red to the high.~st outline cu~e o~ the character ~t that point, a signal is passed to the character generator 74 on this line to end the scan (stroke), ~S6~

DATRQ - The chaxacter generator requests data by DATAY
supplying a signal on DATRQ. The code con-~erter responds with a signal on DATAV when an output data word is available, The data bits are then transmitted on SDATA through the next 11 clcck cycles and the signal on DATAV is dropped.
ST~PDN - The "white space'~ at the leading edge of a STEPUP
character is scaled by the code converter.
The width o ~he space is transmi~ted to the character generator as a series of pulses.
Each pulse corresponds to a movement OL one line scan (stroke). The side ~earing ~ay be moved awa~ from or toward the pre~ious character. The width of the space and the direction are speci~ied in the character data.
Pulses appear on STEPUP for an increasing side bearing and STEPDN or a kerned character. The pulses occur at the beginn-ing of the char~cter processing before any data ~ords are presented to the character gene~a~or.
~MP~Y ~ The chaxacter gener~toX supplies an EMPTY
signal when its ~utput buffer is empty.
This is used by the code con~erter to determine when a character has been com-pletely drawn.

i6~59 FIG. 24 is a block dia~ram showing the elements o the code converter. The element lQ0, indicated as the l'master controller", is broken down in FIG, 25. The con-troller 10a receives 16 inputs from a control decoder 102 and foux inputs corresponding to XBMS (signals 0, 1, 2) and XRST. The decoder 102 generates the 7 control inputs from 8 signals, representing start words and control bytes, received from an input buffer 104. Data is latched into the input ~ufer from the 16 XDB lines.
The master controller, shown in FIG. 25, generates 46 output signals for controlling the operation of the code converter. These signals are applied to the ~arlous logic elements of the converter, in a known manner, to gate and latch the si~nals in a prescribed sequence. The controller comprises a state PROM }06 which determines the next state of the code con~erter from the current state and the condi-tions on 16 control in~uts. The state PROM is addressed by 4 signals received fr~m a multiplexer 108 and 5 signals received from a latch 110. The output o the state PRO~
is supplied to the latch 110 which, in turn, is connected to a state decoder 112 and a "pseudo" state PROM 114. ~, Th~ pseudo ~tate P~OM 114 i~ capa~le o~ modïfying its output state during a processoX cycle iI the current state and its control in~uts ~orce it. In a~dition to the state output from the latch 110, the pseudo state PROM
receives the 4 control signals principally from the clecoder 102.

Of the 8 outputs of the pseudo state PROM 114, 5 are decoded by a pseudo state decoder to produce 24 control outputs~
Vector Processing: Five parameters are stored for ~ector processing. These are:
(1) Intercept value (.11 bits): The intercept value, which is stored in the intercept store 120, is the Y value of successive vector ends around an outline. Thus:
~ O = ~Y start point (~XN~ ~N is the Nth vector) , 1 o _ o .

Y = ~ + ~Y
N N-l - N-l (2)- ~X value (~ bits): The ~X value, ~Jhich is stored in the ~X store 122, is the horizontal distance from the right-hand end of thè current vector. Thus, for success-ive grid line calculations:
~ X = ~X (new vector starts here) N

AX = ~X ~
~ post decremented AX - ~X - 1 1 ~X = 1 ~end of y~ctor~.

(3~ ~Y value (5 bits~: The ~Y value, which is stored in the ~Y store 124, is the approximate vert:ical distance from the right-hand end of the current vector. The four most signi-icant ~its are taken as the input ~Y value and the least s ignif icant ~it is introduced ~y a look-up table to improve acc~racy.
(4) Sign Bit (l bit): The ~ign bit, which is stored in the control bits store 126, is 0 for a vector in one (e.g., the upper) quadrart and one for a vector in the other (e.g., lower) quadrant.
(5) Valid ~it (1 bit): The valid bit, which is stored in the control bits store 126, is a for an intercept value, which is a new start point Y ~alue without any vector modification, and one for a modified intercept value which ma~-be used for calculating an output value.
With the exce~tLon of the A, B and C bus loops which include thb intercept store 12~, an accumulator 128 and a correction store 130, the sign is ignored and positive values only are considered. The sign bit is introduced at the accumulator where appropriate.
Computation begins with a start point Y value loaded into the inter~ept store 12Q ~nd the ~X store 122 holding the displacement to t~e ~eginning of the ~irst vector, and wi~h the valid ~it set at zero. As each grid line is processed, ~56~

the ~X store is decremented; when it reaches "1", it signals for a vector ~yte. The intercept store 120 is updated with the ~Y value and ~X and ~Y arestored. The valid bit is set to 1 making t~e data a~ailable for output. This computation process is illustrated in FIG. 26. At su~sequent grid lines, the ~X store 122 is de_remented and ~Y is reduced by the out-put o~ a vector slope PROM 129. The ~ROM is addressed by ~X
and QY and outputs a normalized ~ value,8y. ~y ~s inverted by an i~terpoIation PRO~ 132 which in this mode is only acting as a compl0menting bu~fer. This output is then added to ~Y
by an adder 134 and restored in the ~Y store 124.
All the code converter stores are configured from 16 deep random access memories. The R~Ms are addressed in parailel from a 4 bit by 16 deep FIFO register as shown in FIG. 20. This register contains the RAM addresses for the current outlines in ordèr of increasing intercept value. The FIFO is normally operated with its outputs connected to its inputs thereby recirculating the addresses. For every vector processing operation an address is clocked into the output re~ister of the FIFO ar,d the previous address is loaded into the FIFO input.
Ne~ addresses at start points may be introduced into t~e loop ~rom the new address counter and added to the ~IFO
stack. At end outline points the address is not reloaded into the FIFO and so is deleted from the stack, Initially the 4 bit new address counter is set to a maximum count of lS and it is decremented as each start point occurs. Every RAM location which contains outline information (i.e., the address, occurs within the FIFO stack) has the "not vacant bit" set to a one. The not vacant bit (1 ~it), which is stored in the control bitsstore 126, is 0 for an empty RA~ location and one or an occupied location.
An end outline control code causes the not vacant bit to be returned to a 0.
When 16 outlines occur in one character, ~h~ new address counter will have decremented to zero. ~ny ~urther start points must be preceded by at least an equal number OL
end outline codes since no more than 16 outlines may be processed a~ one time ~y the code convexter. On receipt of such a start outline code the master controller sequentially addresses the RAM locations, by decrementing ~he new address counter, until an address with the not vacant bit set to 0 is found. This address is then entered into the FIFO stack and used ~or the new outline.
The FIFO may consequently hold a variable len~th stack of non-sequential ~alues which correspond to the R~1 addresse~ o~ the current outlines~ The order in which start point codes and vector codes occu~ in ths character data ensure that the addresses arP entered into the stack and so presented to the ~AM~ in the correct order to provide increasing inter-cept ~alues on output.

~56~

The lowe~t outline latch i5 a,4 ~it register which holds the RAM address value of the current lowest outline.
It is up-dated when outlines are started below the existing ones or when the e~isting lowest outline is ended and the next highest becomes the lowest. The latch output is continuously compared wit~ the current R~l address and when they are iden-tical a cont~l signal is sent to the master controller indicat-ing that a scan line has just been completed.
This RA~i addressing system provides a very fast and flexible method of cyclic~lly processing a variable number of outlines whilema~ ~in~g a correct sequence with no over-heads at line ends.
Scaling: A value representing the character set width in points is loaded into a scaler 136'be~ore vector processing is ccmmenced. The job of the scaler is to hcri-zontally scale the cha'ràcter by determining the point at which ,~
Y values should be passed to the output bufLer 138 for serial .
transmission to the character generator. The scaler 136 inf~rms the master controller 100 whether to compute the next grid line values or to output the current Y values. If Y ~lues are to be placed in the CUtp~lt buffer, it supplies either the interpolation address, or the averaging scaling ~actcr as ~ill be explained below, The scaler operates at a much higher resolution thanthe rest of t~e code converter to ensure high accurac:y. It ~56~9~

uses 16 times the resolution of the vectors which is 4 times the resolution necessary to interpolate the vectors for large point size expansion. If the vector resolution is X lines/em, the scaler works at 16X lines/em. To produce a character at a certain output size with a fixed output stroke resolution may requixe W lines/em. Thus the scaler is approxLmating to the frac~ion 16X/~ which corresponds to the number oE scaler lines ~etween each requi~doutput line. This is achieved ~y repeatedly selecting the inte~er below 16X/~ and the integer above 16X/~
alterna'tely for differing numbers of times~ A, four phase cycle is used with each integer occurring t~ice and with a differing num~er of repeats in e~ch phase. If the numhers of repeats are represented ~y the numbers N , Nl, N2 and N3 and the integer ~elow 16X/I~ by M, t~en the approximation can be stated as:

16X = CNQ YM) ~ ~Nl x (M~ (M2 x M~ + (N3 ~ (M~
__ W N ~ N2 + N3 + N4 A special case occurs when 16X/r~ is itself an integer so only a single integex i5 used and the num~er of xepeats is irrelevant, T~e de~il of t~e scaler is shown în FIG~ 30. The set ~idth register holds the constant value o width supplied ~y the computer. T~is is used to address two PROM look up -: s~--tables, One contains the numbers of lines (M) between each output line which are the integers below and above the re~uired fraction. The least significant o~ the two bits which define the phase number ~P~ is used in the address to select between the two integers for each set width value. The other table contains the numbers of repeats (N). This is additionally 'addressed by both bits of the phase number allowing different numbers o~ repeats in all four phases.
The output rom the number of lines table is passed through an adder and split with the 4 least significant bits ~eing held in the remainder la~ch and the four most sisnifi cant bits being loaded into the line counter. The ~alue (L) in the line counter corresponds to the number of lines at the vector resolution hetween each successive output since the stripping OI the four least significant bits efectively divides by 16. The output from the number of repeats table is loaded into the repeats counter when its count (R) reaches zero. Thus the value stored in the table is one less than the n~mber of repeats required.
The operation of the scaler is shown by the ~low diagram FIG. 31. The scaler is initialized at the beginning of each character and thereafter it is triggere~ into indivi-dual cycles Qn demand from the master controller which in turn senses the "~utput line" control signal.
The ùse o~ the scaler within the code converter J~

~ -59-processing operations is shown by the flow chart FIG. 27.
The scaler is cycled at the end of processing each grid line o~ the character and after sending the values for each out-put scan. The sensed state of the output line signal determines ~hich loop is performed. It follows that every scaler cycle after a grid line calculation decrements the line counter and every scaler cycle after an output operation loads the line counter. At small point sizes t~e "no" loop is used more often since several grid lines occur between output lines. However, at large point sizes, the "yes"
loop ls used more oten since several output lines occu.
between grid lines.
The interpolation address is simply supplied by the two most significant bits of the remander latch. This iden-tifies which o the interpolation lines is required.
The averaging scaling actor determines the "wei~ht"
applied to ~y values in building up the correction term. The weighting depends upon the total number of values to be averaged and which particular ~y within the total is being processed. At the sma~l output siæes at which averagi~g is used a very high accuracy is unnecessary. So only tw~ bits are used to define the total number of yalues (the line counter input ignoring the least significant bit) and the output o tne line counter determines ~hich paxticular ~ is bein~ processed, A PROM look up table is addressed by these six lines and 1 of 8 s-caling factors is selected, 5~

Interpolated Output: At point .sizes where inter~polation is used, the code converter outputs Yalues calcu-lated from straight line interpolation between grid lines.
This interpolation process is illustrated in FIG. 28.
The intercept store 120 holds the absolute Y value of the end of the current vector. A ~Y store 124 holds the difference ~et~een the intercept value and the Y value at the last grid line. The scaler 136 provides an interpolation address to the interpolation PROM 132, which is also su~plied with ~y from the vector slope PROM 129. The output of the interpolation PRO~ 132, ~yl, is a proportion OL ~Y appropriate to the interpolation position. This is subtracted from ~Y
by the adde~ 134 and appears on the D bus. It is applied to the accumulator 128 via the A bus and the B bus carries the output of the intercept store 120. The C bus transmits tne correct output value to the outpu~ buffer 138.
The output buffer holds the calculated value until the character generator signals that it is read~ to receive it. The serial transfer is then effected and the next output calculation can begin. If the value transferred is that for the highest current outline the code converter flags the character generator after the transfer on the ENDSC
control line.
Av ~ : At s~all point sizes, where there axe ~ore than three grid lines between each output line, an a~eraging al~orit~ can be used to calculate output Y
values. The cor~ection store 130 is used for this purpose.
This store holds a correction ~alue which i.s applied to the value in the intercept store 120 to produce the output v~lue.
The averaging system ignores interpolation line addresses and only outputs on in~egral grid line vzlues.
The calculation is ~ased.on the equatlon for the .
arithmetical mean of the values Y to Y which is:

n - 1 Ym [ n ( o 1~ - (Yl Y2~ - n(n-] n)~ + Yn m =_ o n The expression in th.e square brackets is the correc-tion term. The average is wor~ed out by considering the Y
values on each grid linè and averaging these between output lines. Thus, n-l ~ecomes the number o~ grid lines between output lines and the different terms are then the ~y outputs from the vector slope PRO~ 12~.
The application o~ the equation is illustrated in FIG. 32 wher~ the output Line at G3 is to be calculated. The intercept store.contains the ~-alue Y ~or th.e. yector ~nd on GS throughout th~ operation, Henc~:

Y = y ~Y ~intercept store minus: Y s~ore) n . ~ - Y~ = ~yO ~vector slope PROM output on Gl?

l 2 ~Yl Cvector slope PROM output on G2) 2 3 ~Y2 (vector slope PROM output on ~,3) n = 3 age Y for linas Go, Gl , G2 ~ 3 The correction PROM 14a takes the ~y ou-tput of the ~ector slope P~C~ 12g and multiplies it by a ~actGr approxi-mately equal to the appropriate preceding ~raction. ~his is selected by a smaller PROM - the ~actor selection PRO~-in the scaler 136 which is addressed by the num~er of grid lines bet~een output lines (the di~isor) and the current line number (the dividend). ~he three bit code allowing eight scaling factors is output by the factor selection PROM to the correction PROM.
The coxrection term is built up by adding the out-put o a correction PRO~ 140 into the correction store 130.
This store is cleared every time-there is an output line and then starts building the correction ~or the n~t output. The PROM output on t~e B hus is always added to the correction store qutput on th~ A hus hy the accumula~or 1~8. The ~alue in ~e correction store has its sign changed w~erever t~e outline changes its quadrant. The correction s-tore is only eight ~its but it ignores the least significant bit of ~ 9 the C bus since at the small point sizes in which it operates such accuracy is unnecessary. Thus it is effectively nine bits and it has an o~rer10w which limits it in the case of very great displacements.
The value held in the intercept store 120 is not usually the Yn of ~he ~quation above but is the end of the current Yector. So iImnediately before output, the correction store is adjusted ~y the current ~Y to allow for the dis-crepancy .
The output value is ~inally calculated i:n the aec~nulator 128 by applying the correction store output on the A ~us and the intercept stc~e output on the B bus. The C
~us transmits the correct output Yalue to the output buffer 138.
As explained aboYe, the output bufer holds the cal-culated value un~il the character generator signals that it is xeady to receive i~. The serial txansfer is then effected and the ne~t output calculation can begin. If ~he value transferred i:s that for the highest cuxrent outline the code con~erter f lags the character generator af-ter the trans f er o~ the ENDSC control line.
~ hile thexe h~s been described what are beliec~ed to ~e th~ pr~ferr~d embodi~entsof the in~ention, those skilled in th~ art will recognize that Yarious changes and modifica~
tions may ~e made ~h~reto wi~hout departing from the spirit of t~e int7enti:on, and i;t is intended to claim all such embod~ments as f. 11 within the true scope of the invention.

Claims (30)

THE EMBODIMENTS OF THE INVENTION IN WHICH AN
EXCLUSIVE PROPERTY OR PRIVILEGE IS CLAIMED ARE DEFINED
AS FOLLOWS:
1. A typesetter for the automatic generation of characters comprising a character imaging system for writing graphics quality characters of any design on a print medium; a font storage system having digital data stored thereon defining each character to be imaged; and an electronic computation and control system, connecting said font storage system with said character imaging system, for controlling said character imaging system in accordance with said digital data;
said character imaging system including a flying spot scanning device for writing characters by means of a plurality of parallel scanning strokes;
said font storage system including a storage medium on which are recorded said digital data having:
(a) digital numbers defining the first and second coordinates of the start points of at least two outlines of a character that is superimposed on a normalized encoding set of first and second coordinates; and (b) digital numbers defining a plurality of straight line vectors extending successively along the character outlines from said start points, each vector having a first digital number representing the first coordinate distance and a second digital number representing the second coordinate distance from one end of the vector to the other; and said computation and control system including:

(a) means for randomly accessing said stored digital data and supplying said digital data in sequence; and (b) means, adapted to receive said digital data in sequence, for converting said digital data into character intercept values for each stroke of said scanning device.
2. The typesetter recited in claim 1, wherein said flying spot scanning device is a CRT.
3. The typesetter recited in claim 1, wherein said print medium is a photosensitive sheet.
4. The typesetter recited in claim 1, wherein said means for randomly accessing said stored digital data include a digital computer and random access memory connected to said storage system, whereby said digital data is transferred into said random access memory from said font storage system and trans-ferred out to said converting means under control of said computer.
5. The typesetter recited in claim 1, wherein said computation and control system further includes input means for supplying operating instructions including the identity and the point size of characters to be imaged, and wherein the identity of the characters to be imaged is supplied to said accessing means for selecting the appropriate stored digital data, and wherein said point size is supplied to said converting means for computation of said character intercept values.
6. The typesetter recited in claim 5, wherein one of said first and second coordinates is parallel to said scanning strokes, wherein said intercept values are the values of said one coordinate at the points of intersection with said vectors at each successive value of the other coordinate, and wherein the intercept values are computed for successive values of said other coordinate by adding the slope of each vector associated with said intercept value to be computed to the respective intercept value correspond-ing to the immediately preceding value of said other coordi-nate.
7. The typesetter recited in claim 1, wherein said character imaging system has a fixed output resolution, and wherein said converting means include means, responsive to said point size, for adjusting the number of scan lines required to define a character, thereby to scale the charac-ter in one coordinate direction.
8. The typesetter recited in claim 1, wherein said converting means include means for interpolating said character intercept values for imaging the characters with a finer resolution than the resolution of said normalized encoding set of first and second coordinates.
9. The typesetter recited in claim 1, wherein said converting means include means for averaging said character intercept values for imaging characters with a coarser resolution than the resolution of said normalized encoding set of first and second coordinates.
10. The typesetter recited in claim 1, wherein said digital data further includes at least one digital number defining whether a character is to be kerned, and wherein said converting means are responsive to said at least one number to compute intercept values for kerned characters in kerned positions.
11. The typesetter recited in claim 1, wherein said storage medium is a floppy disk and said font storage system further includes a floppy disk reader for selectively reading said digital data from said floppy disk.
12. The typesetter recited in claim 1, wherein each of said first and second digital numbers have a pre-scribed upper limit.
13. The typesetter recited in claim 12, wherein the distance between successive ones of said first and second coordinates are equal, and wherein said first and second digital numbers have the same upper limit.
14. The typesetter recited in claim 12, wherein said prescribed upper limit for each of said first and second digital numbers is chosen to minimize the total quantity of data defining a font of characters for a given resolution.
15. The typesetter recited in claim 12, wherein said first and second digital numbers are each 4-bit binary numbers, whereby each vector is defined by one data byte.
16. The typesetter recited in claim 12, wherein said first and second digital numbers are each 8-bit binary numbers, whereby each vector is defined by one data word.
17. The typesetter recited in claim 1, wherein at least one of said start points is represented as a digital number defining the horizontal distance from the left side of the coordinate set to the start point and another digital number defining the vertical distance from the character base line to the start point.
18. The typesetter recited in claim 1, wherein at least one of said start points is represented as a digital number defining the vertical distance from the upper edge of the nominal extended em square to the start point, and another digital number defining the horizontal distance from the character left side bearing to the start point.
19. The typesetter recited in claim 1, wherein at least some of said characters are further represented by a digital number defining a control code specifying one end of the character.
20. The typesetter recited in claim 1, wherein at least some of said characters are further represented by a digital number defining a control code specifying one of at least the following control functions:
(1) start two new outlines of the character; and (2) end two outlines of the character.
21. The typesetter recited in claim 1, wherein at least some of said characters are further represented by a digital number defining a control code which modifies a stored vector by specifying the addition of a prescribed value to one of said first and second digital numbers without the addition to the other of said first and second digital numbers.
22. The typesetter recited in claim 1, wherein at least some of said characters are further represented by a digital number defining a control code specifying that the beginning of a vector is displaced from the end of the previous vector along one of said first and second coordinates by a given value.
23. The typesetter recited in claim 1, wherein at least some of said characters are further represented by a digital number defining a control code which specifies that at least one subsequent vector occurs in a different quadrant.
24. The typesetter recited in claim 1, wherein said digital numbers are set forth in a prescribed order such that, by their order, said digital numbers are associated with their respective outlines.
25. The typesetter recited in claim 24, wherein said digital numbers defining the first and second coordinates of a start point precedes said digital numbers defining the vector extending from that start point.
26. The typesetter defined in claim 24, wherein said digital numbers defining said first and second coordi-nates of said start points are arranged in the order of low to high values of said first and second coordinates.
27. The typesetter recited in claim 24, wherein the digital numbers defining said plurality of vectors are arranged in the order of increase of one of said first and second coordinates of the start of each vector.
28. The typesetter recited in claim 24, wherein the digital numbers defining said plurality of vectors are arranged such that the vectors of an entire string are successively defined before defining the vectors of another string.
29. The typesetter recited in claim 1, wherein said storage medium is a hard-sectored floppy disk; and wherein a font index specifying the initial track and sector address of one or more fonts is recorded on a specified track and sector thereof.
30. The typesetter recited in claim 29, wherein the data defining at least one font of characters are arranged in a connected string with a chain address at the end of each sector defining the address of the next following track and sector in which the font data continues.
CA327,230A 1978-05-12 1979-05-09 Character generating method and apparatus Expired CA1105619A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US905,451 1978-05-12
US05/905,451 US4199815A (en) 1978-05-12 1978-05-12 Typesetter character generating apparatus

Publications (1)

Publication Number Publication Date
CA1105619A true CA1105619A (en) 1981-07-21

Family

ID=25420841

Family Applications (3)

Application Number Title Priority Date Filing Date
CA327,231A Expired CA1105620A (en) 1978-05-12 1979-05-09 Character generating method and apparatus
CA327,230A Expired CA1105619A (en) 1978-05-12 1979-05-09 Character generating method and apparatus
CA000327232A Expired CA1121056A (en) 1978-05-12 1979-05-09 Character generating method and apparatus

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CA327,231A Expired CA1105620A (en) 1978-05-12 1979-05-09 Character generating method and apparatus

Family Applications After (1)

Application Number Title Priority Date Filing Date
CA000327232A Expired CA1121056A (en) 1978-05-12 1979-05-09 Character generating method and apparatus

Country Status (8)

Country Link
US (1) US4199815A (en)
JP (6) JPS54149522A (en)
CA (3) CA1105620A (en)
DE (3) DE2954383C2 (en)
FR (1) FR2425677B1 (en)
GB (2) GB2020520B (en)
IT (1) IT1116588B (en)
SE (3) SE446705B (en)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338673A (en) * 1978-12-05 1982-07-06 Compugraphic Corporation Phototypesetting system and method
JPS5727343Y2 (en) * 1979-02-02 1982-06-14
US4307377A (en) * 1979-11-09 1981-12-22 Bell Telephone Laboratories, Incorporated Vector coding of computer graphics material
US4492956A (en) * 1980-02-29 1985-01-08 Calma Company Graphics display system and method including preclipping circuit
US4491836A (en) * 1980-02-29 1985-01-01 Calma Company Graphics display system and method including two-dimensional cache
GB2074259B (en) * 1980-04-12 1983-08-17 Automotive Prod Co Ltd Rotation sensitive drum brake
GB2082014B (en) * 1980-06-30 1985-05-09 Canon Kk Facsimile apparatus with character generator
US4331955A (en) * 1980-08-07 1982-05-25 Eltra Corporation Method and apparatus for smoothing outlines
JPS5739963A (en) * 1980-08-22 1982-03-05 Photo Composing Mach Mfg Co Ltd Memorizing method for character, figure and the like and photocomposing device
US4404554A (en) * 1980-10-06 1983-09-13 Standard Microsystems Corp. Video address generator and timer for creating a flexible CRT display
JPS57169791A (en) * 1981-04-10 1982-10-19 Shaken Kk Method of memorizing character and figure and phototypesetter
US4566126A (en) * 1982-04-30 1986-01-21 Fuji Electric Company, Ltd. Pattern discriminator
US4550438A (en) * 1982-06-29 1985-10-29 International Business Machines Corporation Retro-stroke compression and image generation of script and graphic data employing an information processing system
US4555763A (en) * 1982-07-01 1985-11-26 Decision Data Computer Corp. Method and apparatus for storage and accessing of characters, and electronic printer employing same
JPS5949071A (en) * 1982-09-13 1984-03-21 Dainippon Screen Mfg Co Ltd Compressing method of pattern contour data
JPS5949655A (en) * 1982-09-14 1984-03-22 Dainippon Screen Mfg Co Ltd Data inputting method of graphic pattern
JPS59101969A (en) * 1982-12-01 1984-06-12 Dainippon Screen Mfg Co Ltd Method and device for processing data of binary picture pattern
US4783829A (en) * 1983-02-23 1988-11-08 Hitachi, Ltd. Pattern recognition apparatus
DE3317842A1 (en) * 1983-05-17 1984-12-06 Mergenthaler Linotype Gmbh, 6236 Eschborn GRAPHIC REPRODUCTION AND SETTING PROCEDURE OF LETTERING CHARACTERS
EP0131676B1 (en) * 1983-07-04 1989-08-02 URW Software & Type GmbH Method for automatically digitizing the contours of line graphics, e.g. characters
JPS6075978A (en) * 1983-10-03 1985-04-30 Photo Composing Mach Mfg Co Ltd Processing method of character picture data
JPH0613212B2 (en) * 1983-10-03 1994-02-23 株式会社写研 Character image data processing method
DE3572783D1 (en) * 1984-02-21 1989-10-12 Hell Rudolf Dr Ing Gmbh Method and device for recording characters
DE3419140A1 (en) * 1984-05-23 1985-11-28 Licentia Patent-Verwaltungs-Gmbh, 6000 Frankfurt Method for the omnidirectional detection of a feature in the field of view of a sensor
DE3584967D1 (en) * 1984-09-10 1992-01-30 Linotype Co METHOD FOR GENERATING A SET OF SIGNALS DISPLAYING A CURVE.
US4674059A (en) * 1984-09-10 1987-06-16 Allied Corporation Method and apparatus for generating a set of signals representing a curve
US4686633A (en) * 1984-09-10 1987-08-11 Allied Corporation Method and apparatus for generating a set of signals representing a curve
DE3585902D1 (en) * 1984-09-10 1992-05-27 Linotype Co METHOD FOR GENERATING A SET OF SIGNALS DISPLAYING A CURVE.
US4686632A (en) * 1984-09-10 1987-08-11 Allied Corporation Method and apparatus for generating a set of signals representing a curve
US4686635A (en) * 1984-09-10 1987-08-11 Allied Corporation Method and apparatus for generating a set of signals representing a curve
US4686636A (en) * 1984-09-10 1987-08-11 Allied Corporation Method and apparatus for generating a set of signals representing a curve
US4686634A (en) * 1984-09-10 1987-08-11 Allied Corporation Method and apparatus for generating a set of signals representing a curve
DE3585064D1 (en) * 1984-09-10 1992-02-13 Linotype Co METHOD AND DEVICE FOR GENERATING A SET OF SIGNALS REPRESENTING A CURVE.
US4688182A (en) * 1984-09-10 1987-08-18 Allied Corporation Method and apparatus for generating a set of signals representing a curve
JPH078559B2 (en) * 1985-08-22 1995-02-01 大日本印刷株式会社 How to specify the typeface on the display
JPS6280058A (en) * 1985-10-03 1987-04-13 Canon Inc Image processor
JPS6282484A (en) * 1985-10-07 1987-04-15 Canon Inc Method for converting linear graphic form
US5365599A (en) * 1985-10-07 1994-11-15 Canon Kabushiki Kaisha Method and system of converting delineative pattern
JPS62202274A (en) * 1986-02-28 1987-09-05 Nec Yamagata Ltd Character shape memory method for electronic equipment
US4897638A (en) * 1987-02-27 1990-01-30 Hitachi, Ltd. Method for generating character patterns with controlled size and thickness
US4949281A (en) * 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
JPH01181173A (en) * 1988-01-14 1989-07-19 Toshiba Corp Drawing system for vector font contour
JP2634851B2 (en) * 1988-04-28 1997-07-30 シャープ株式会社 Image processing device
JP2650324B2 (en) * 1988-06-02 1997-09-03 株式会社リコー Multi-value character font generation system
ES2007960A6 (en) * 1988-07-12 1989-07-01 Ona Electro Erosion Two dimensional generating system for the geometry of a model using artificial vision
US5018217A (en) * 1988-09-26 1991-05-21 Brother Kogyo Kabushiki Kaisha Data converting apparatus having means for changing ornamental stroke end data of character outline
US5261032A (en) * 1988-10-03 1993-11-09 Robert Rocchetti Method for manipulation rectilinearly defined segmnts to form image shapes
AU624137B2 (en) * 1988-10-03 1992-06-04 Sun Microsystems, Inc. Method and apparatus for image manipulation
US5086482A (en) * 1989-01-25 1992-02-04 Ezel, Inc. Image processing method
JP2752439B2 (en) * 1989-06-20 1998-05-18 株式会社リコー Image output method
JPH03224073A (en) * 1990-01-30 1991-10-03 Ezel Inc Aligning device
EP0471849B1 (en) * 1990-02-27 1995-06-07 Seiko Epson Corporation Method of generating dot signal corresponding to character pattern and device therefor
JPH03296092A (en) * 1990-04-16 1991-12-26 Ricoh Co Ltd Image display device
US5245679A (en) * 1990-05-11 1993-09-14 Hewlett-Packard Company Data field image compression
DE69328811T2 (en) * 1992-10-20 2001-01-11 Network Computing Devices Inc Opcode dependent compression for a window system.
US6295378B1 (en) 1996-02-29 2001-09-25 Sanyo Electric Co., Ltd. Handwriting stroke information encoder which encodes handwriting stroke information by sampling
US8121338B2 (en) 2004-07-07 2012-02-21 Directsmile Gmbh Process for generating images with realistic text insertion

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3050581A (en) * 1960-08-30 1962-08-21 Bell Telephone Labor Inc Line tracing system
US3305841A (en) * 1963-09-30 1967-02-21 Alphanumeric Inc Pattern generator
US3735389A (en) * 1970-02-24 1973-05-22 Zeta Research Digital graphic display apparatus, system and method
BE791200R (en) * 1971-11-12 1973-03-01 Western Electric Co APPARATUS AND METHOD FOR TRANSFORMING DIGITAL INFORMATION INTO GRAPHIC IMAGES AND FOR THE
US3800183A (en) * 1972-06-08 1974-03-26 Digital Equipment Corp Display device with means for drawing vectors
US4029947A (en) * 1973-05-11 1977-06-14 Rockwell International Corporation Character generating method and system
JPS5341017B2 (en) * 1973-06-06 1978-10-31
US3946365A (en) * 1973-12-13 1976-03-23 Bantner John A Graphic symbol generator

Also Published As

Publication number Publication date
DE2919013A1 (en) 1979-12-06
JPS59170883A (en) 1984-09-27
SE8502470L (en) 1985-05-20
US4199815A (en) 1980-04-22
JPS61258285A (en) 1986-11-15
CA1121056A (en) 1982-03-30
GB2020520B (en) 1982-11-17
FR2425677B1 (en) 1985-05-31
GB2020520A (en) 1979-11-14
FR2425677A1 (en) 1979-12-07
SE446705B (en) 1986-10-06
SE8501905D0 (en) 1985-04-18
JPS59176048A (en) 1984-10-05
DE2919013C2 (en) 1989-04-27
SE456049B (en) 1988-08-29
JPS54149522A (en) 1979-11-22
DE2954383C2 (en) 1987-07-02
SE8502470D0 (en) 1985-05-20
IT1116588B (en) 1986-02-10
SE456050B (en) 1988-08-29
GB2089179A (en) 1982-06-16
CA1105620A (en) 1981-07-21
SE7904009L (en) 1979-11-13
DE2954383A1 (en) 1985-03-21
JPH021787U (en) 1990-01-08
IT7948998A0 (en) 1979-05-10
DE2953600C2 (en) 1985-06-27
GB2089179B (en) 1982-12-08
JPH0224895U (en) 1990-02-19

Similar Documents

Publication Publication Date Title
CA1105619A (en) Character generating method and apparatus
US4298945A (en) Character generating method and apparatus
US4254468A (en) Typesetter character generating apparatus
US4331955A (en) Method and apparatus for smoothing outlines
CA1157172A (en) Method and apparatus for arranging segmented character groups in a digital typesetter
US4029947A (en) Character generating method and system
US4231096A (en) Digital typesetter
CA1209244A (en) Compaction and decompaction of non-coded information bearing signals
US4338673A (en) Phototypesetting system and method
JP3049672B2 (en) Image processing method and apparatus
GB2147474A (en) Method of processing character or pictorial image data
EP0016001B1 (en) Method of and apparatus for reproduction of character images, particularly for typesetting apparatus
US4712185A (en) Dot interpolation control system
USRE30679E (en) Character generating method and system
GB1558458A (en) Raster printing system
US3546681A (en) Programmed method for manipulating electronic fonts in electronic photocomposition systems
EP0095536B1 (en) The representation of character images in a compact form for computer storage
JPS6348175B2 (en)
US5317650A (en) Determination of the arc length of a curve
EP0392499A3 (en) Apparatus for generating high-quality character pattern
EP0009662B1 (en) Method and apparatus for storing and reconstructing chinese-like characters
US4625219A (en) Video signal generating apparatus for laser beam printer
US4270172A (en) Ultrahigh resolution photocomposition system employing electronic character generation from magnetically stored data
JPS6133231B2 (en)
JP2901526B2 (en) Character generator

Legal Events

Date Code Title Description
MKEX Expiry