CA1230688A - Technique for scaling characters in a stroke-vector display system - Google Patents

Technique for scaling characters in a stroke-vector display system

Info

Publication number
CA1230688A
CA1230688A CA000474312A CA474312A CA1230688A CA 1230688 A CA1230688 A CA 1230688A CA 000474312 A CA000474312 A CA 000474312A CA 474312 A CA474312 A CA 474312A CA 1230688 A CA1230688 A CA 1230688A
Authority
CA
Canada
Prior art keywords
stroke
character
vector
length
point
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
CA000474312A
Other languages
French (fr)
Inventor
Oliver T. Yu
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.)
Microtel Ltd
Original Assignee
Microtel Ltd
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 Microtel Ltd filed Critical Microtel Ltd
Application granted granted Critical
Publication of CA1230688A publication Critical patent/CA1230688A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/20Function-generator circuits, e.g. circle generators line or curve smoothing circuits

Abstract

TITLE
A TECHNIQUE FOR SCALING CHARACTERS IN
A STROKE-VECTOR DISPLAY SYSTEM

ABSTRACT OF THE DISCLOSURE
A technique is disclosed for use in an electronic raster-scan display system, for generating characters of variable size using a stroke-vector technique. An incoming data signal defines the type of character to be displayed, the horizontal X and vertical Y character field dimensions, the character drawing point, and any character rota-tion or reflection. Using that part of the data signal that defines the character type as a memory address, a character microprogram is retrieved containing a stroke-vector character mask and a stroke resolution factor representing the number x of horizontal stroke-vectors in a straight line and the number y of vertical stroke-vectors in a straight line that are used by said character mask to represent said character within a normali-zed character field. To scale the size of the stroke-vectors the hori-zontal length stroke-vector attribute DX-LENGTH is forming by taking the quotient X/x, and the vertical length stroke-vector attribute DY-LENGTH
is forming by taking the quotient Y/y. Then the DX-LENGTH attribute and the DY-LENGTH attribute are converted from the display screen coordinate system to a virtual screen coordinate system having a greater resolution than the physical screen coordinate system. One or both length attri-butes can be applied to each stroke-vector. At this point the character image having the proper size exists in the virtual screen coordinate system. To convert it back to the actual display screen coordinate system the size attributes DX-LENGTH and DY-LENGTH are divided down by the proper factor. Lastly a logical pel may be generated and added to the individual stroke-vectors before the connected stroke-vectors are projected onto the display screen at the character drawing point.

Description

84-5-Ofi9C
~23~8 A TECHNIQUE FOR SCALING CHARACTERS IN
A STROKE-VECTOR DISPLAY SYSTEM

The present invention relates generally to video display systems, and more particularly to a technique for forming characters in a raster scan dot-matrix type display system.

BACKGROUND OF THE INVENTION

I Video display systems often use character venerators to generate the internal signal patterns needed for displaying letters, sunless, numbers, or other characters on a display monitor. This is because a character generator permits data to be efficiently transferred Lithuania a display system or from an external source to a display system. Basically a character generator stores the image or "character mask of all the characters to be displayed by a system.
There are two types of character generators: the dot-rratrix generator and the vector or line-drawing generator. The dot-matrix character generator represents each character by a dotted-pattern character Newsweek. Each character mask is defined by a predetermined nwllber of dots arranged in a predetermined number of rows and colorless, such as for example, a 5 X 7 or a 7 X 9 dot-r~trix. Sets ox characters are defined azalea on the Santa dot-matrices.

Jo _ l _ I 8~-5-0~9 To misplay a character on the screen the character generator provides the relevant character mask from its in-vernal memory to a display frame buffer. Under suitable con-trots, the display frame buffer maps the character dot-matrix 5 into a matrix or raster of pixels on the display screen. A
display controller scans the frame buffer contents then plots point-by-point the intensity value of each pixel on the display screen.
While widely used, there are a number of disadvantages with conventional dot-plotting character generators in a ray ter-scan type display system. A dot-plotting display system is several orders of magnitude slower than, for example, a vector-drawing display system. Character scaling is limited to discrete multiples of the basic character sets used, and therefore, continuous character scaling is not possible. Fur-therm ore, when a dot-matrix character is scaled up in size, discrete quantization effects can give the magnified character an anesthetically distasteful appearance. And when scaled down in size the character becomes unreadable very quickly. Char-cater transformations such as rotations or reflections, goner-ally are not implemented with digital circuitry because even a simple transformation would require extensive manipulation of the stored data. Even if the economics of the situation would permit it, the CPU computation time would be unacceptably long.
Analog circuits have been used; however, this technique no-quirks digital-to-analog converters. tree Principles ox Interactive Computer Graphics, by Newman and Spryly, 1973 by .
McGraw-Hill, Inc.).

Jo 84-5-0~9 In a conventional random-scan vector-drawing display system, a character image is represented or encoded by stroke-drawing directives. A display controller decodes the stroke-drawing directives and converts them into deflection voltages to be applied to the yoke of a CRT. The starting point of a character is defined by the current beam position. Printed displays are operated in much the same way with pen motion being controlled by deflection voltages.
Manufacturers of random-scan display systems using lo conventional stroke-vector character generators (i.e. vector-drawing generators) generally have neglected to explore the potential ox manipulating a character image by adjusting the attributes of the stroke-vectors. (An attribute is a wettable parameter such as for example the horizontal stroke domination For example, a character rotation transformation of a character image can be effected by applying the corresponding transform-lion to the composing stroke-vectors, i.e., the stroke-vectors making up the character. Another example would be the addition of an extra width characteristic to a stroke-vector could give the corresponding character image a more anesthetically pleasing appearance.
While the above discussion points out a number of disadvantages in employing the conventional dot-matrix char-cater generator in raster-scan display systems and a number of potential advantages to the existing stroke-vector char-asker generation technique; very little has been done, here-Tory, to increase the effectiveness of the stroke-vector character generator in a raster-scan display system.

I 8~-5-049 In the discussion of this invention, the following terminology will be used. The input signals to the character generator designate a character identification (ID) code, a character drawing point, a character rotation, a character reflection and the dimensions of the character field. A char-cater field is defined to be a rectangular display area within which the image of a character can be defined. A character scaling transformation scales the size of a character image by scaling the character field dimensions. A character rotation lo transformation causes the character field to rotate counter-clockwise about the character field origin. A character no-election transformation causes a reflected image of the char-cater field about either the vertical or the horizontal center axes of the character field.
In a stroke-vector character generation system, a character image is formed on a display screen by a series of straight line trajectories of stroke-vectors (called stroke-trajectories). Each so-called stroke-trajectory is composed of one or mote uniform length strokes pointing in the same direct-ion. A single stroke or stroke-vector is detained to be a two-dimensional vector quantity having a length dimension, a width dimension, and a direction. The dimensional qualitities of a stroke-vector may be characterized by a set of stroke Atari-bytes which can either be character-field-size dependent (no-furred to herein as global attributes) or character-shape dependent (referred to herein as non global attributes). Global attributes are directly proportional to the in-use character yield dimensions. The non global attributes are those pane-I 8~-5-049C
meters that affect the overall shape of a character. While the shape of a character image determines the configuration of the structure-rectories, the size of the character field determines the size of the stroke-trajectories.
The character drawing point defines the physical-pixel lo-cation on the display screen to generate a character. 'me character drawing point is specified by an (zoo) coordinate pair that defines the character field origin.
A stroke-vector and a stroke-trajectory are both defined by the (yo-yo) coordinates of the two end points of the line, and these Tut end points are referred to herein as the starting point (xl,yl) atld the tail point (zoo). The anchor point of a stroke is pro-voided by the tail point of the immediate preceding stroke. The initial anchor point, itch is the anchor point of the very first stroke or the initial stroke, is specified by the character drawing point.
The term "stroke-trajectory transition" (or simply "stroke transition) is used herein as an aid in defining when stroke-trajec-tories are drawn on the display screen. As the name implies, a stroke-transition occurs when there is a change in direction of a structure-rectory or a change in the visibility attribute from one stroke-vector to another More precisely when any of the non global stroke attributes change from one stroke-vector to the next, a stroke-transition occurs.
he line width of a character is determined by the logical-pel.
on analogy is often made to a paint brush. brush stroke painted over a ~3traig~lt line trajectory is modeled in the raster-scan display by tune . .

~3~8 84-5-0~9C

continuous mapping of each stroke-locus of pixels to a rectangular matrix of pixels. The rectangular matrix of pixels is commonly de-signaled as the logical-pel.

OBJECTS AND SUGARY OF THE INVENTION
-In view of the foregoing, a principal object of the present invention is a novel method using stroke-vectors for generating characters in a raster-scan type display system.
Another object of the present invention is to provide an efficient storage technique for storing a minimum amount of informal lo lion to provide a set of character masks for use in a display system.
A further object of the present invention is to provide technique for generating character masks in such a manner that char-cater transformations such as size scaling are very efficiently performed.
A further object of the present invention is to provide a character generation technique capable of operating with flexibility in an interactive videotext display system .'-, . -6-Accordlnyly the present invention provides an incoming data signal which defines the type of character to be displayed, the horizontal X and vertical Y character field dimensions, and the character drawing point or the character to be displayed, the dip mentions and drawing point bring in the coordinate system of the actual display screen. Using that part of the data signal that defines the character type as a memory address, a character micro-prograln is retrieved containing a stroke-vector character mask corresponcJiny to the character defined by said first data signal.
rho character ask also contains a stroke resolution factor repro-senatorial the nabber x of horizontal stroke-vectors in a straight line and the nwllber y of vertical stroke-vectors in a straight line that are used by the character mask to represent the character within a normalized character field. To scale the size attributes of each stroke-vector, the horizontal length stroke vector Atari-byte DX-LENGTH is venerated by forming the quotient X/x, and the vertical length stroke-vector attribute DY-LE~IGTH is generated by forming the quotient Y/y. Both the DX-LENG~ attribute and the DY-LErlGTH attribute are converted from the display screen keyword-Nate system to a virtual screen coordinate system having a greater resolution than the physical screen coordinate system. The length ox each stroke-vector in the character mask is scaled by applying the DX-LE~r~-l and r)Y-I.ENGT~I attributes in the virtual squirrel coc)rdirlclte system to each of said stroke-vectors ox the character n~lsk. Ltlen the scaled stroke-vectors in the virtual screen coordinclte system are converted back to the physical screen coordinate system, by applying an appropriate scaling factor. Lastly a logical pot may be generated and added to the individual stroke-vectors before the connected stroke-vectors are projected onto the display screen it the character drawing point.

/
/

~3~18 84-5-0d~9C

BRIEF DESCRIPTION OF THE DRAWINGS
_ _ An embodiment of the invention will now be described, by way of exa-snple, with reference to the accompanying drawings in which:
FIG. l is a simplified block diagram of a conventional raster-scan video display system.
FOG. 2 is a fllnctional block diagram of the preferred embodiment Ox the stroke-vector character generator.
FIG. 3 is a simplified block diagram illustrating the functional operation of the transformation controller.
FIG. 4, FIG. 5 and FIG. 6 are the three operational flow-charts illustrating the detailed functional operations of the stroke decoder.
FIG. 7 is a simplified block diagram illustrating the fullctior.al operation of the stroke-trajectory generator.
FIG. 8 illustrates the eoordinate-system mapping between the virtual-pixel screen coordinate system and the physical-pixel screen coordinate system.
FIG. 9 illustrates, for a given character field size, the eight possible stroke directions from a single point in the proofer on embodilllent ox this invention.
ill LO is a diagram illustratillg the graphic concept ox stroke-trajectory transition.
ii`lG. 11 is a diacJr~ which illustrates or a Donnelly stroke-trajectory the creatiorl of stroke width by lopping col-ltinuously each pixel into d Loc3ical-pel.

I

~3(36~8 84--5-049C
FIG. 12 illustrates, for different sets of stroke vector lengths and logical-pel sizes the resulting image sizes of the character UP".
FIG. 13 illustrates, for a given rotation angle, the no-Laredo transformation adjustments of the lengths and signs of the logical-pel displacements from the stroke locus.
FIG. 14 illustrates the operation of the stroke decoder in decoding the relative stroke drawing directives of the character "P" when there i no character rotation and no character reflection.
JIG. 15 illustrates the stroke decoder operation in decoding the ire of the character "Pi with a character rotation of go and no character reflection.
FIG. 16 is a diagrammatic view of a display of the alpha character Pi with no reflection or rotation.
FIG. 17 is a diagrammatic view of a display of the alpha character "pi rotated 90.
FIG. 18 illustrates, for a given rotation angle, the no-squired transformation adjustments of the following stroke Atari-bytes: lengths and signs of the stroke component vectors.
FIG. 19 and FIG. 20 are two diagrams which illustrate that the reflection transformations of a character image can be performed by applying a sequence of two simpler transformations: a scaling hollowed by a translation.
FIG. 21 shows three tables which illustrate, for a given set of transfort;lation signals, the cores-I, ~3~6~8 84-5-049 pounding set of transformation adjustments of the ten transform-able stroke attributes of the defaulted virtual stroke IT. 22 illustrates, for a given set of character transformation signals, the corresponding transformation of the initial stroke anchor point.
FIG. 23 is a table illustrating the required settings of the two blowout directive qualifiers for a given character rotation signal.
Figs aye and 24b are two tables listing the two directive qualifiers (DX-SIGN-QUALIFIER and DY-SIGN-QUALIEIER) which control the decoding of the two 4-bit stroke-dr~wing directive code words (0001 and 0010).
FIG. 25 illustrates the format and the counterweights of the microprogram of the relative stroke drawing directives for the alpha character pun FIG. 26 illustrates, for different variations of char-cater rotation and character reflection, the twelve possible character image variations resulting from the interpretation of the single microprogram for the character Pi DESCRIPTION OF PREFERRED EMBODIMENT

Referring to ERG. 1, there is shown a very general block diagram of a conventional video display system in which a character generator 100 could be used. Character generator 100 in response to appropriate commands, c3enerates individual character masks to be displayed on the cathode-ray screen 500.
Controlling the operation of the character generator 100 and the other operations of the display system is a microprocessor 800. In practice the microprocessor 800 may be any currently available 8 or 16-bit microprocessor units. All of the lung-lions and interactions involving the microprocessor 800 are achieved through suitable programs stored in a system memory 900 twig. a random access memory). Such programs are commune icated to the microprocessor 800 via a bidirectional system bus lo, and are called into operation via the input/ output interface 600 (e.g. a keyboard) or via various interrupt signal generated by various components of the system. The dipole frame buffer (memory) 300 serves to hold the display information for successive scans of the video screen. (This is sometimes referred to as a refresh buffer.) The display`
controller 200 generates the display deflection voltages for controlling the character display images.
fore describing in detail the stroke-vector char-cater generator in FIG. 2, it is helpful to have a more come plate definition of certain expressions and an explanation of certain videotext concepts. Any terms not specifically defined shall have the meanings provided in the 1983 version of the NAPLPS.
Several forms of character transformations are posse isle in the preferred embodiment of this invention: character scaling, rotation, and reflection. (For transformations in general see Oh. 6 in Newman and Spryly referenced above.) Character rotation is limited herein to four discrete rota-lions: 0, 90, 180 and 270. A character reflection trays-formation is the mirror image of the character yield and is limited to a rejection about either the vertical or the horn-zontal center axes of the character field.

~23~ 84-5-049 Stroke Attributes For a given stroke anchor point or character drawing point, as few as eleven stroke attributes can uniquely define a stroke. They are:
l. the length of the horizontal component vector (designated herein as DX-LENGTH);
2. the length of the vertical component vector (designated herein as DY-LENGTH);
3. the sign of the horizontal component vector (designated herein as DESIGN
4. the sign of the vertical component vector (designated herein as DYSON);
5. the existence status ox the horizontal component vector (designated herein as DX-EXIST-STATUS);
6. the existence status ox the vertical component vector designated herein as DY-EXIST-STATUS);
7. the length of the logical-pel's horizontal displacement from the stroke's locus (designated herein as P~LX-LENGTH);
8. the length of the logical-pel's vertical displacement from the stroke's locus (designated herein as PELY-LENGTH);
9. the sign of the logical-pel's horizontal displacement from the stroke's locus (designated herein as PELX-SIGN);
lo the sign of the logical-pel's vertical displacement from the stroke's locus (designated herein as PELY-SIGN); and if. the stroke visibility status (designated herein as VISIBILITY-STATUS).

While the stroke anchor point and the lengths and signs of the DO and DYE component vectors completely describe the length and the direction of a stroke-vector, the lengths and signs of the logical pelts displacements from the stroke's I 84-5-0~9C

locus completely describe the width dimension of a stroke. Referring to FIG. 11, the width of a stroke is defined in terms of the logical-pelts horizontal and vertical displacements from the stroke's locus, and the stroke's inclination with respect to the horizontal. Refer-ring to FIG. 13, the diagram illustrates the four possible geometricaliynments of the logical-pels with respect to the stroke-trajectory locus. Finally, the VISIBILIrrY Stratus of a stroke describes whether a stuck is made visible or invisible on the display screen.
The ~ollo~iny Table 1 lists the type and the Ryan of values I that have been assigned to each stroke attribute in the preferred elr~o~ nut YE this invention.

Stroke Type of Values Range of Values attribute DX-LEI*~'~I numerical valved 0 DX-LE~GTH HER*
to Dy-LENGTH numerical valued 0 < DY-LENGTH c VPR**
PELX-LENG'~I numerical valued 0 DX-LEi~GTH < HER*
PELY-LENGTH nwnerical valued 0 DY-LENGT~I VPR**
DESIGN binary valued + or -DYSON binary valued + or - ¦
20 'pELx-sIG~l binary valued + or -PELY-SIGN binary valued + or -DX-EXIST-STAT~S binary valued true or false Dy-ExIsT-srrATus binary valued true or false IVISI~ILlTY-STArrUS binary valued visible or invisible *HER = horizontal Pixel Resolution **VPR = Vertical Pixel Resolution Chile DX-LENGT~I, DWELLING{, PELX-L,E;IG'LII and PEI.Y-LE;IGTII,3re nut metrically vowels, all the other attributes can be kind are in the pro-~() Erred ell~vdirnent) assigned binary values. This is an irl~ortant distinctlion as will be seen. The value of DX-EXIST--ST~TUS end DY-EXIST-STATUS
is either "true" or "False" Lowe. an X or Y corn~onent either exists or it does not exist). The value off DESIGN DOSAGE PEL,X-S~(;N and PLY

,, 8~-5-049 SIGN is either "positive" or Negative. n Finally, the VISIT
BILITY-STATUS can be either "visible" or invisibly (i.e. the composing pixels are either turned ON or OFF).
Except for the PELX-SIGN and PELY-SIGN, all of the stroke attributes are dependent upon either the character field size or the character shape. The PELX-5IGN and PLY-SIGN attributes depend on the logical-pel's geometric align-mint with respect to the stroke locus. The following four stroke attributes are global attributes (i.e. character-field-lo size dependent): DX-LENGTH, DY-LENGTH, PELX-~ENGTH and PLY-LENGTH. The remaining five stroke attributes are non global (i.e. character-shape dependent): DESIGN DYSON, DX-EXIST-STATUS, DY-EXIST-STATUS, and VISIBILITY-STATUS.
In the preferred embodiment for any particular char-cater field size, the lengths of the horizontal strokes and the lengths of the horizontal component vectors of the diagonal strokes are uniform, and this constant length is given by the global attributive value of DX-LENGTH. Similarly, the lengths of the vertical strokes and the lengths of the vertical coupon-en vectors of the diagonal strokes are uniform/ and this con-slant length is given by the global attributive value of DYE
LENGTH. Although the lengths of all horizontal stroke-vectors are equal end 'he lengths of all vertical stroke-vectors are equal, the length of each horizontal stroke-vector is not nauseously equal to the length of each vertical stroke-vector. For any particular character image, the character length of each horizontal stroke-vector and the exact length ox each vertical stroke-vector is determined by anc3 is pro-portion Al to the character yield dimensions In general there I 8~-5-049 is no reason why certain variations in length of the stroke-vectors for a particular character image could not be Tyler-ted by the system and may indeed even be desirable. For example, by increasing the length of each horizontal stroke-vector, the resulting character image may take on a diferent~st~lized~ appearance.
The horizontal displacement lengths of the logical-pots are uniform, and this constant length is given by the global attributive value of PELX-LENGTH. Similarly the Verdi-eel displacement Lyons of the logical-pels are uniform, and this constant length is given by the global attributive value of PELY-LENGTH. In the preferred embodiment, the global Atari-Batavia values of DX-LENGTH and PELX-LENGTH are equal, and the global attributive values of DY-LENGTH and PELY-LENGTH are equal. Since the character field is defined to be the recta-galore display area within which the image of a character can be defined, for given character field dimensions, the global attributive values of DX-LENGTH and DY-LENGTH will depend respectively on the allowable horizontal-stroke span and the allowable vertical stroke span which can be defined within the character field.
Referring to FIG. 9, the left diagram illustrates the eight possible stroke directions from a single point. The three right diagrams show a diagonal stroke (both DO and DYE
component vectors exist), a horizontal stroke (only the horn-zontal component vector exists), and a vertical stroke (only the vertical component vector exists). The eight possible strokes from a single point consist of four diagonal strokes, two horizontal strokes and two vertical strokes.

~3~6~ 84-5-049C

The following Table 2 shows that the three states of a die-gonad stroke, a horizontal stroke and a vertical stroke are specie fled by the two stroke attributes: DX-EXIST-STATUS and DY-EXIST-STATUS. It should be noted however that although the DX-EXIST-STATUS and the DY-EXIST-STATUS stroke attributes represent the x and y component vectors, the True/False coding of these attributes ~nlJst by interpreted together to letterman whether one is "on" and the other is "offal. Also the coding is such that there are only three possible states, i.e. the fourth state (both vectors nonsexist-en) is not allowed.

STROKE ATTRIBUTES
¦ DX-EXIST- DY-EXIST- RESULTANT
¦ STATUS STATUS STROKE-VECTOR
I True True A diagonal stroke with I False False both horizontal and I vertical component vectors ¦ True False horizontal stroke Whitehall ¦ horizontal component vector only False True A vertical stroke with vertical component vector only i Len Dx-ExIsr-srArus and DY-FXIST-STATUS are either both untrue' or "false," a diagonal stroke is created. jowl the SEXIST
Starr its n true end the DY-EXIST-STATUS is n phallus a horizontal stroke is created. In this situation, the two attributes, Depth arid DUNN, are in effect void, since a horizontcll stroke aloes not hive a vertical componéllt or` -17-11, vector. When the DX-EXIST-STATUS is "false" and the DESIST
STATUS is "true," a vertical stroke is created. Under this situation the two attributes, DX-LENGTH and DESIGN are in effect void, since a vertical stroke does not have a horizon-tat component vector.
The manipulation of the stroke visibility attribute is very useful in actually plotting characters on a display screen. When a stroke is visible, it is eventually plotted and made visible on the display. When a stroke is invisible, it is plotted but not made visible on the display screen. The invisible stroke is provided to complement the visible strokes so that the image of a character can be defined by a series of visible and invisible strokes. For example, when drawing an "Lo, an unbroken series of visible strokes beginning at the lo upper or lower end of the Lo and continuing to the opposite end are used. However, when drawing for example the letter AYE, it is necessary to use invisible strokes to prevent visit by overlapping previously drawn portions of the character when drawing the horizontal bar of the AYE. This process it analogous to that used when using a pencil and paper to draw an "A. When using a pencil and paper to draw an "A, one typically draws the outside legs of the character (the visible strokes), then lifts the pencil (invisible strokes) and then lowers it to draw the horizontal bar (the visible strokes).

_ enactor Generator The raster-scan stroke-vector character generator long shown in FIG. l, may be separated into the following functional units shown in the block diagram in FIG. 2: (1) I 84-5~049 transformation controller 101; I stroke decoder 102; (3) stroke-trajectory generator 103; and (4) a read only memory (ROM) 20 containing the plurality of variable-length micro-programs which encode stroke-drawing directives.
The I/O interface 60 in FIG. 1 receives the input interface signals and sends them via the system bus 110 to the character generator 100. These input signals could be initial-I entered through input interfaces such as encoders and buff hers from any number of various external input devices such as a keyboard, a souse, etc. The signal format depends upon the system protocol adopted. The North ~nerican Presentation Level Protocol Syntax (NAPLPS) is one of several protocols that set a standard for the format of such data signals. Referring to the top of FOG. 2, there are seven input data lines (10-17) to the character generator 100 on which the character input sign nets are applied. These seven individual signals designate:
a character address, on input line 10; an (zoo) coordinate representing the character drawing point, on input lines 15 and 16; a character rotation, on input line 13; a character reflection, on input line 14; a character field horizontal dimension (x coordinate) on input line if; and a character yield vertical dimension (y coordinate) on input line 12.
The character code on input lo is an 8-bit word eon-responding to a particular ANSI character code and represent-in a character such as the letter "pi. (Although the AN5Icode is used, any other protocol could be used equally well.) The character code signal, clocked through data latch 9, it applied to address decode 17. Address decoder 17 decodes the signal, i.e. recognizes the character type as the letter P, and ~Z;3~
~4-5-Ofi9C

searches an internal ROM data lockup table for an address corresponding to the decoded character. For every microprogram that ROM 20 has stored in its mourner, ROM 17 stores the starting (or base) address for the par-titular microprogram to be accessed. The signal representing the start-in address from decoder 17 is loaded in the base address register Thea address offset register 19 increments the base address after the de-coding of that byte so that each byte or line of memory from ROM 20 can by accessed and loaded, one byte at a lime, into stroke decoder 102 via pith 32. ROM 20 contains a variable-byte microprocJram or each character to be represented, with each microprogram being a plurality of encoded binary valued stroke-drawing directives. FIG. 25 shows the coded contents of a typical microprogram stored in ROM 20. (The format of the micro-programs and the relative stroke-drawing directives are described below.) In Sonora the character code on input line 10 serves as an index into a table of addresses of a plurality of microprogram that contain drawing directives for the character being addressed.

Relative Stroke-Drawing Directives To understand the function of the relative stroke drawing direct lives stored in ROM 20, consider what happens to a stroke attribute when a chclracter is drawn. FIG. lo illustrates how lines are drawl as a son-its ox strok~-vectors. A stroke-transition is noted by a "On. When the current stroke hats the same stroke-trajectory as the preceding stroke, the current stroke has the seine set of attributive values as the preceding stroke. Len the current stroke encounters a stroke-trajectory transition I solve of the non~lot~l attributes have to change. But the values of all the it - 20-, global attributes stay constant in defining all the strokes of a character image.
Using these observations, the relative value changes in the non global attributive values between the current stroke and the preceding stroke have been broken down into a set of seven binary valued stroke-vector operators which are called herein relative stroke-drawing directives. These seven no-native stroke-drawing directives are encoded by a variable-l~nyth code composed of three 2-bit code words (Of, lo if);
10 and four 4-bit code words (0000, Wool, Oslo, Toll). The mean-in of these directives and the encoding scheme used are as follows.

. .
Code Words Relative Stroke-Drawing Directives Of Switch the binary attributive value of DX-EXIST-STATUS;
lo Switch the binary attributive value of DY-EXIST-STATUS
20ll no change;

0000 Switch the binary attributive values of DX-EXIST-STATUS and DY-EXIST-STATUS;
n Wool Switch the binary attributive value of DESIGN
Oslo Switch the binary attributive value of DYSON; and .. . ..
Toll Switch the binary attributive value of VISIBILITY-STATUS

I

Due to the inherent nature of the relative stroke-drawing directives, the non global attributes of all the strokes that make up a character image are chain-related. Consequently, by applying a desired set of transformations to the non global attributes of the defaulted virtual stroke and by applying this set of transformed attributes to the stroke decoder, the desire Ed transformation adjustments of the non global stroke Atari-bytes of the succeeding strokes will be carried out automatic-all by the stroke decoder. On the other hand, for a given jet of character input values, by applying the corresponding transformed set of constant global values of the global stroke attributes to the decoder, the set of transformation adjust-mints of the global stroke attributes of all the strokes will be transparent to the decoder. (This will be explained in detail hereinafter.) Transformation controller The transformation controller 101 performs several operations analogous to a lockup table function and could be implemented with several ROMs. There are six input signals to the transformation controller designating: the character horn-zontal field dimension, on line 11; the character vertical yield dimension, on line 12; the character rotation, on line 13; the character reflection, on line 14; and the (zoo) coupon-Z5 ens of the character drawing point on lines 15 and 16. Based upon the particular set of character input signals the trays-formation controller establishes the defaulted virtual stroke parameters (on output lines 22-27); the directive qualifiers (on output lines 28 and 29); and the initial stroke anchor points components in the virtual-pixel screen, (on output fines 30 and 31). The transformation controller is invoked whenever there is a change in one of the character input signals. More specifically, the six transformed stroke attributes of the de-faulted virtual stroke are:
DX-EXIST-STATUS (on line 22), DY-EXIST-STATUS (on line 23), DESIGN (on line 24), DESIGN (on line 25), DX-LENGTH (on line 26), and DY-LENGTH (on line 27).
Since the microprogram stored in ROM 20 contain only changes in the stroke attributes from one stroke to the next, the stroke decoder 102 has to establish an initial set of non-global attributes to which it can apply the drawing directives.
It can be considered that the initial stroke is preceded by a virtual (imaginary) stroke defined by a default set of non-global attributive values. (Except for VISIBILITY-STATUS
which is always defaulted to be "visible, n the defaulted non global attributive values are affected by the rotation and reflection transformations applied to a character image.) The table in FIG. 21 shows the various default stroke attributive values for all character rotations and reflections permitted in the preferred embodiment.
Referring to YOGA. 3, the first function of the trays-formation controller 101 is coordinate-system mapping to stab-fish the initial stroke anchor points. The (zoo) components ox the character drawing point, and the input values of the character field horizontal and vertical dimensions are defined I 4-5~049 by the coding or numbering system of the input data signals (on paths 11, 12, 15, and 16) which may or may not be the same as the physical-pixel screen coordinate system. If the two soys-terms are not the same, some form of translation is necessary.
However, the transformation controller 101 performs a convert soon from whatever number system is used to a virtual-pixel coordinate system. In the preferred embodiment, the transform ration controller 101 maps these four 8-bit input data signals into the corresponding values based on the 14-bit virtual-pixel screen numbering system. (The reason for the virtual-pixel screen is to reduce truncation errors due to scaling.
This is explained in more detail in connection with the stroke decoder operation.) The second function of the transformation controller is to transform the character drawing point (defined by the two-byte signals on paths 15 and 16) into the initial stroke anchor point in accordance with the set of input transform motion signals on paths 13-14. When there is no character transformation, the character drawing point defines the in-trial stroke anchor point. When the input reflection signal indicates a reflection transformation, it is necessary to apply translation transformation to the initial stroke anchor point.
eye table in FIG. 22 illustrates, or a given rotation trays-~orrnation signal and a given reflection transformation signal, the required translation transformation to obtain the initial stroke anchor point based upon the location of the character drawing point.

. I

~23~ 84-5-0~9 The third function of the transformation controller as shown in FIG. 24, is to modify the interpretations of the two relative stroke-drawing directives code words, 0001 and 0010 when required by the input transformation signals. When there is no character transformation, the directive code word 0001 is interpreted to switch the binary attributive value of the sin of the horizontal component vector DESIGN and the directive code word of 0010 is interpreted to change the binary attributive value ox the sign of the vertical component vector (DY-SLGM). Referring to FIG. 18, when a horizontal component vector is rotated 90 or 270, it is transformed into a Verdi-eel component vector. Similarly, when a vertical component vector is rotated 90 or 270, it also is transformed into a horizontal component vector. Consequently, when the input rota-15 lion signal indicates a character rotation of 90 or 270, the interpretations of these two directive code words should be in-terchanged.
The directive code words are interpreted by the stroke decoder 102. In order to modify its interpretations of the two directive code words 0001 and 0010, two 4-bit directive qualifiers are supplied by the transformation controller. The two directive qualifiers are designated respectively as DX-SIGN-QUALIFIER and DY-SIGN-QUALIFIER (in FIG. 24.).
Instead of checking a 4-bit code against all four 4-bit code US words, it is checked against the two 4-bit code words (0000 and 0011) and the bit-sequences of the two 4-bit directive qualifiers. Each of the directive qualifier sequence can assume a bit-sequence of either 0001 or 0010. ho a 4-bit code matches the bit-sequence of the DX-SIGN-QUALIFIER, the to 84-5-0~9 binary attributive value of the sign of the horizontal component vector is switched. Similarly, when a 4-bit code matches the bit sequence of the DY-SIGN-QUALIFIER, the binary attributive value of the sign of the vertical component vector is switched. Referring to FIG. 24, the two tables illustrate that the two directive qualifiers (DX-SIGN-QUALIFIER and DY-SIGN-QUALIFIER) control the decoding a the two 4-bit stroke-drawing directive code words (0001 and 0010).
According to the value of the character rotation sign 10 net, transformation controller 101 sets up on paths 28 and 29 the biL-sequences of the two directive qualifiers. When the character rotation signal on input path 13 indicates a rotation of 0 or 180 DX-SIGN-QUALIFIER is set up as 0001 and DESIGN
QUALIFIER is set up as 3010. Or, when the character rotation 15 signal indicates a rotation of 90~ or 270~, DY-SIGN-QUALIFIER
is set up as 0010 and DY-SIGN-QUALIFIER is set up as 0001. Rev furring to FIG. 23, the table illustrates the required settings of the two 4-bit directive qualifiers for each of the four posy sidle character rotations.
The fourth function of the transformation controller 101 is to modify the stroke attributes of the defaulted virtual stroke in accordance with the character input signals. Though ten stroke attributes are involved with transformation adjust-mints, the transformation controller needs only six in the preferred embodiment because: (1) the constant global Atari-Batavia values of DX-LENGTH and PELX-L~GTH are set equal to each other; I the constant global attributive values of ~DY-LENGTH and PELY-LENGTH are also set equal to each other;
(3) the constant global attributive value of PELX-SIGN is made equal to the transformed attributive value of DESIGN of the defaulted virtual stroke; and (4) the constant global attributive value of PELY-SIGN is set equal to the transformed attributive value of DYSON of the defaulted virtual stroke (see FIG. 21).

Stroke Decoder Basically the function ox the stroke decoder 102 is to determine the stroke-trajectories of a character image by constructing the non global attributive values through the interpretation ox the relative stroke-drawing directives encoded in ROW 20, and by applying the set of constant global attributive values which are applicable to each stroke.
Referring to FIG. 2, when a character address 10 (8 bits) is latched into a data latch, address decoder 17 and the stroke decoder 102 are enabled. For a given character address input, the address decoder 17 generates a microprogram base ad-dress which is loaded into the base address register 18. By adding an offset to the base address, the stroke decoder 102 can access any particular byte of the microprogram. This en-axles the stroke decoder 102 to retrieve and store each byte of the encoded relative stroke-drawing directives for the char-cater to be displayed when required by the particular operation step of the stroke decoder 102.
At any one time, stroke decoder 102 can be in either the dormant phase or the execution phase. In the dormant phase, it accepts on input paths 22 - 27 the six transformed stroke attributes of the defaulted virtual stroke from the transformation controller 101. Once stroke decoder 102 is en-ambled by the character address on path 21, it will freeze the inputs from the transformation controller 101 and enter into the execution phase ox reconstructing the series of strokes for the character image identified. The execution phase consists of two processes: an initialization process followed by a decoding process. The initialization process initializes the roared status registers, control registers and counters prior to interpreting any of the drawing directives. The decoding prowess decodes the relative stroke directives encoded in the microprogram indexed by the subject character address. (Because of the nature of these functions, stroke decoder 102 is software implemented on CPU 800 in the preferred embodiment.) Referring to FIG. 4, FIG. 5 and FIG. 6, the first activity of the initialization process is to initialize five internal control registers: CURRENT DESIGN CURRENT DYSON, CURRENT DX-EXIST-STATUS, CURRENT DY-EXIST-STATUS and CURRENT
VISIBILIT~-STATUS; which will continuously keep track of the respective current in-use values of the five nonylobal Atari-bytes. The initialization values of CURRENT DX-EXIST-STATUS, CURRENT DY-EXIST-STATUS, CURRENT DESIGN and CURRENT DYSON
are equal respectively to the values of the four input signals:
DEFAULTED DX-EXIST-STATUS, DEFAULTED DY-EXIST-STATUS, DEFAULTED
DESIGN and DEFAULTED DYSON. CURRENT ~ISIaILITY-STATUS is always initialized to be "visibly The second activity of the initialization process is to initialize the two internal status resisters, GLOBAL DO-LENGTH and GLOBAL DY-LENGTH, which contain the constant global values for the character-field-size dependent attributes of DO-LENGTH and DY-LENGTH. These two global attributive values stay constant in defining the strokes of a character image and they s cannot be changed by the relative drawing directives encoded in the corresponding microprogram. First, the stroke resolution factor is obtained by interpreting the first two bits of the second byte of the microprogram. Second, GLOBAL DX-LENGTH and GLOBAL DY-LENGTH are initialized respectively by multiplying the two input signals, DX-LENGTH and DY-LENGTH, by the stroke resolution factor.
There is no need to reserve internal status registers for containing the logical-pel parameters because: (l) GLOBAL
PELX-LENGT~ and GLOBAL PELY-LENGTH, which are the global Atari-Batavia values for the PELX-LENGTH and PELY-LENGTH, are equal respectively to the GLOBAL DX-LENGTH and GLOBAL DY-LENGT~; (2) GLOBAL PELX-SIGN and GLOBAL PELY-SIGN, which are the constant global attributive values for the PELX-SIGN and PELY-SIGN, are equal respectively to the DEFAULTED DESIGN and DEFAULTED DYE

SIGN.
The third activity of the initialization process into initialize the nibble counter and the nibble-per-byte count-or; each counter is represented as an 8-bit unsigned integer value. Any synchronous 2-bit sequence of the input stroke-drawing directive code sequence is designated as a nibble The stroke-drawing directive codes are composed of three 2-bit code words single nibble) and four 4-bit code words (double nibbles) as shown in Table 3 above. The nibble counter India I
8~-5-049 gates the number of nibbles left to be decoded. As shown in the example of the letter No in FIG. I the unsigned integer value of the first byte of a microprogram indicates the total number of nibbles to be decoded; and the nibble counter is initialized to this unsigned value.
Except for the first and last bytes of the stroke-drawing directive microprogram, all stroke-drawing directive bytes contain four successive 2-bit nibbles starting frown the most significant bit to the least significant bit, The first stroke-drawing directive byte (end byte of the microprogram contains three successive 2-bit nibbles starting from the third most significant bit to the least significant bit (the first 2-bit nibble being the stroke resolution factor). And the last stroke-drawing directive byte contains from one to four 2-bit nibbles starting from the most significant bit. An internal nibble-per-byte counter keeps track of the number of 2-bit nib-byes left in the current stroke directive byte. The nibble-per-byte counter is initialized to three nibbles which compose the first stroke-drawing directive byte.
The fourth activity of the initialization process is to initialize the double-nibble sequence flag. Recall that the relative stroke-drawing directives are encoded by either single-nibble codes (2 bits) or double-nibble sequence codes (4 bits). The double-ni~ble sequence flag is set when the header nibble (no) ox the double-nibble sequence is en count-eredr and the sequence flag is reset after the interpretation of the double-nibble sequence. The double-nibble sequence flag must be reset during the initialization process to insure -on that the slag is in the proper state prior to interpreting a single or a double nibble sequence.
Referring to FIG. 4, FIG. 5 and FIG. 6, the decoding of the stroke-drawing directives process is illustrated by a series of flow charts. The decoding process is characterized by finite cyclic operational phase sequences. For most of the cycles of the decoding process, three successive operational phrases can be identified.
Referring first to FIG. 4, the first operational phase of a recoding cycle can be identified as the nibble data acquit session. Frill an 8-bit stroke directive byte, a 2-bit nibble is extracted and stored as an 8-bit data byte which can take on a hexadecimal value of 00, 40, 80 or C0. Before acquiring any nibble data, the nibble counter is first checked. If the nib-bye counter equals zero, the whole decoding process is terming axed and the stroke generator 103 displays the last straight line trajectory in the physical pixel screen.
Referring to the flow chart of FIG. 4, if nibble-per-byte counter equals zero, a new stroke-drawing directive byte is read out of ROM 20 from the current in use microprogram and the nlbble-per-byte counter is initialized to four nibbles. An 8-bit data, current nibble byte, will be formed by the logical RAND" operation between the current directive byte and the byte mask of ll0000000. As a result, the current 2-bit nibble, CURRENT-NIBBLE, is transferred to the two most significant bits Ox the current nibble byte. After the extraction of the CURRENT-NIBBI,E, the current directive byte is logically shifted left by 2 bits. Thus the next-to-be read nibble will occupy the two most significant bits of the current directive byte.
-31~

The second operation phase of the decoding process is to decide whether to invoke the single-nibble interpreter or the double-nibble sequence interpreter. If the double nibble header flag is set, then the double-nibble sequence interpreter is invoked and the flag is reset. If the CURRENT-NIBBLE is not equal to 00, then the singl~-nibble interpreter is invoked.
Otherwise, the double-nibble header flag is set and the next decoding cycle will proceeds.
The third operation phase of the decoding process is the single-nibble interpretation or the double-nibble sequence interpretation. When the third operation phase is finished, a new decoding cycle will start by proceeding to the first open-anion phase of nibble data acquisition.
Referring to the flow chart in FIG. 5, the functional operation of the double-nibble sequence interpreter is shown.
If the CURRENT-NIBBLE equals 00, an exit to the single nibble interpreter occurs. If the CURRENT-NIB~LE does not equal 00, a stroke-trajectory transition from the current stroke-trajectory to a new stroke-trajectory is imminent. (A stroke-trajectory transition, in terms of the stroke drawing direct tire is defined to be a change in any one of the stroke drawing directives except for the nibble which means no change in any of the stroke attributes).
If the CURRENT-NIBB~E matches the last two bits of I the Betty DX-SIGN-QUALIFIER, the binary value of the CURRENT-DESIGN is switched. If the CURRENT-NIBBLE matches the last two bits of the Betty DY-SIGN-QUALIFIER, the binary value of the CURRENT-DY-SIGN is switched. And, if the CURRENT-NIBBLE

23~88 84-5-049 matches the "if" bit-sequence, the binary value of the CURRENT-VISIBILITY-STATUS is switched.
If a "visible-to-invisible" VISIBILITY-STATUS switch-in transition occurs or a sign switching transition occurs with the VISI3ILITY-STATUS being visible, the stroke generator 103 displays each pixel of the current stroke-trajectory in the physical pixel screen. (The format of invoking the stroke generator will be explained later.) To prepare for the immune-en trajectory transition, the anchor point of the new stroke-trajectory is updated by the tail point of the current stroke-trajectory.
Referring to the flow chart in FIG. 6, the functional operation of the single nibble interpreter is shown. The single-nibble interpreter determines whether a stroke-~rajec-tory transition has occurred by reading the value of the nibble code in the CU~RENT-NIBBLE register. A stroke-trajectory transition is defined to be a change in any one of the stroke drawing directives except for the nibble (which means no change in any of the stroke attributes). So, if the CURRENT
NIBBLE is not equal to if, a stroke trajectory transition has occurred. In that situation, two or more of the following events will occur: (l) if the CURRENT VISIBILI~Y-STATUS is visible, the stroke generator 103 displays the last stroke-trajectory in the physical pixel screen; (2) the anchor point of the current stroke-trajectory is given by the tail point of the last stroke-trajectory; and (3) the binary values of the CURRENT DX-EXIST-STATUS register or the CURRENT DY-EXIST-STATUS
register are switched according to the CURRENT NIBBLE value.

~3~8~ 84-5-049 With or without the occurrence of a trajectory transition, a stroke has been added to the current stroke-trajectory.
Therefore, it is necessary to update the tail point of the current stroke-trajectory. The tail point will be updated as follows: (l) update the x component only if the CURRENT
DX-E~IST-STATUS is true; (2) update the y component only i the CURRENT DY-STATUS is true; and (3) update both the x and y components if the CURRENT DX-EXIST-STATUS and the CURRENT
DY-EXIST-STATUS are either both true or both false. For a positive or negative CURRENT DESIGN the tail point's x-component is incremented or decrement Ed respectively by the GLOBAL DX-LENGTH. For a positive or negative CURRENT DYSON, the tail point's y-component is incremented or decrement Ed respectively by the GLOBAL DY-LENGTH.

Stroke-Trajectory Generator The function of the stroke-trajectory generator 103 is to generate the stroke-trajectories on the physical-pixel screen. This is done whenever the stroke decoder 102 detects that a stroke-trajectory transition has occurred i.e. whenever any of the stroke drawing directive change (except for the lo nibble code). The stroke decoder enables the stroke-trajectory generator 103 to display the current or the preceding stroke-trajectory in the physical-pixel screen between the present stroke starting point (xl,yl) and the stroke tail point zoo The drawn stroke will be visible if the value of the VISIBILITY STATUS of that stroke attribute is visible (i.e. ON). And the drawn stroke will be an invisible stroke I

8~-5-049 if the value of the VISIBILIT~-STATUS of that stroke is invisible i.e. OF. Once the stroke-trajectory is drawn, (as either a visible or invisible stroke) the starting point is updated to the tail point. Note that the drawing of a stroke-trajectory may reduce to the drawing of a point where the starting point and the tail points are the same. For example if the stroke attribute DX~EXIST-STATUS is false (i.e. OFF) and the DESIGN is changed from to -, a transition occurs by definition; however the stroke starting point and tail points are the same so that the stroke drawn becomes a simple point.
The stroke-trajectory generator 103 will update the tail point of a stroke whenever a new stroke is defined, i.e.
whenever the CURRENT-NIBBLE register is one of the following relative stroke directives:
Al Switch the attributive value of DX-EXIST-STATUS;
10 Switch the attributive value of DY-EXIST-STATUS;
if No change in DO- or DY-EXIST-STATUS;
0000 Switch the attributive value of both DO- and DYE
EXIST-STATUS.
For each stroke-trajectory drawn, the stroke decoder 102 transmits the following eight stroke-trajectory values to the stroke-trajectory generator 103. Referring to FIG. 2, on paths 34 and 35 the signals designate the x- and y-components of the stroke-trajectory anchor points . The signals on paths 36 and 37 designate the x- and y-components of the stroke-trajectory tail point. The signals on paths 38 and 39 designate PELX-LENGTH and PELY-LENGTH. And, the signals on paths 40 and 41 designate PELX-SIGN and PELY-SI~N. The first four parameters convey the end-points of the straight line trajectory of each stroke vector. The last four parameters convey the lengths and signs of the logical-pel's horizontal and vertical displacements from the stroke-trajectory locus.
Referring to FIG. 7, the block diagram illustrates the functional relationship of the input and output signals of the functional operations performed by the stroke-trajectory generator 103.
The first function of the stroke-trajectory generator I 103 is coordinate-system mapping. While the stroke decoder 102 plots the end-points of a stroke in the virtual pixel coordinate system, the stroke-trajectory generator 103 converts from one coordinate system to the other and displays the trajectory of strokes (with length and width) in the physical pixel coordinate system. Except for PELX-SIGN and PELY~SIGN, generator 103 maps the input parameter values based on the virtual-pixel coordinate system into the corresponding values based in the physical-pixel coordinate system. This function could be implemented with a digital divider circuit yin the preferred embodiment the divisor would be 64 as shown in FIG. 8). Of course there are many other ways this function could be implemented.
The second function of the stroke-trajectory venerator 103 is to generate a signal to illuminate each pixel of the stroke-trajectory locus by a straight-line generator. In the preferred embodiment, the straight-line generator utilizes an Algorithm commonly referred to as the Bresenham's algorithm See the Newman and Spryly cited above, end edition Pp. 25-27.

The third and final function of the stroke-~rajectory generator 103 is to map each pixel of the stroke-trajectory locus into a logical-pel based on the values ox the PELT-LENGTH, PELY-LENGTH, PELX-SIGN and PELY-SIGN registers. (The alignment of the logical pot is shown in FIG. 13 in connection with the description of the rotation transformation which follows.) Referring again to FIG. 1, the stroke-trajectory generator 103 writes the display intensity information of each generated pixel into the corresponding pixel location in lo the display frame buffer 300. For each display refresh cycle, the display controller 200 scans frame buffer 300 and displays the intensity value of each pixel into the physical-pixel screen.

Stroke Resolution Factor In any display system, the resolution or resolution factor is the degree to which the system can distinguish fine-news of detail in a spatial pattern. In a stroke-vector disk play system the stroke resolution is a measure of the number of horizontal and vertical strokes available to compose a char-cater image within a character field. In the preferred embody-mint, for characters with moderate shapes, the horizontal and vertical stroke resolutions are restricted arbitrarily to be six uniform horizontal strokes and ten uniform vertical strokes respectively. This 6 X 10 pair of stroke resolutions is design noted herein as the "normal pair of stroke resolutions.
Consequently, for a given pair of character field dimensions, the constant global attributive value of D~-LENGT~I is obtained by dividing the horizontal stroke resolution into the given character field horizontal dimension. Similarly the constant global attributive value of DY-LENGTH is obtained by dividing the vertical stroke resolution into the given character field vertical dimension. For the normal pair of stroke resole-lions, DX-LENGTH is one-sixth of the given character field horizontal dimension, and DY-LENGTH is one-tenth of the given character field vertical dimension.
The stroke resolution factor is determined by the come plexity of the character shape. For complicated shaped characters, such as Oriental characters, it may be necessary to encode the character shape with a pair of stroke resole-lions greater than that of the normal pair of stroke resole-lions. On the other hand, for very simple shaped characters, it may be more efficient to encode the character shape with a pair of stroke resolutions less than that of the normal pair of stroke resolutions. In the preferred embodiment, your pairs of stroke resolutions are available the normal pair of stroke resolutions; I double the normal pair of stroke resow lotions; (3) triple the normal pair or stroke resolutions; end one-half of the normal pair of stroke resolutions. Each pair of stroke resolutions is specified by a stroke resolution factor which it a ratio of a pair of stroke resolutions to the normal pair of stroke resolutions. Consequently, the stroke resolution factor can take on the value of l, 2, 3 or 1~2, an each it encoded into a 2-bit code. The table below thus-I

I 84-5-0~9 trades the relationship between the horizontal and vertical stroke resolutions and the stroke resolution factor.

_ ENCODING OF THE STROKE RESOLUTION FACTOR

Code Stroke Horizontal Stroke Vertical Stroke Resolution Resolution* Resolution**
-
11 3 18 30 * (Horizontal-stroke span within a character field) **(Vertical-stroke span within a character field) As shown in FIG. 25, the 2-bit stroke resolution factor code appears as the first two bits of the second byte of the relative stroke directives microprogram stored in ROM 20.
For example if the stroke resolution factor is 3, the global attributes DX-LENGTH and DY-LENGTH are multiplied by 1/3 in the stroke decoder 102 during the initialization process outlined above.

Virtual-Plxel Screen The virtual-pixel screen is a system construct servo in a very useful purpose, notwithstanding the fact that it Dow not physically exist in 50 far as there is an zoo goof-donate system map. The relationship between the virtual-pixel screen and the physical-pixel screen in the preferred embodiment is illustrated in FIG. 8. The stroke decoder I

I 8~-5-049 102 plots the end-points of a stroke-trajectory on the virtual-pixel screen 500 with the virtual-pixel coordinate system.
The stroke-trajectory is finally displayed on the physical pixel screen by the stroke-trajectory generator 103 with the actual pixels addressed in the physical-pixel coordinate system. In the preferred embodiment, the physical-pixel screen or display screen has a horizontal resolution of 256 physical pixels and a vertical resolution of 200 physical pixels. The virtual-pixel screen has a horizontal resolution of 1~384 virtual pixels and a vertical resolution of 12800 virtual pixels. Therefore, the resolution of the virtual-pixel screen is 64 times higher than that of the physical-pixel screen.
The reason for the virtual-pixel screen has to do with the fact that the character-field-size dependent stroke attributes can take on fractional values. Since both the physical-pixel coordinate system and the virtual-pixel goof-donate system would truncate a fractional value into a disk Crete value when the end-points of a stroke are plotted based on either system, truncation errors would result. The trunk-anion error of plotting a stroke trajectory is equal to the sum or the accumulation of the truncation errors of plotting the composing strokes. However, since the virtual-pixel screen has in general a much better resolution than that of the physical-pixel screen each truncation error Lo niggle-giblet and the accumulated truncation errors is mirlimal.

I

~3~8~ 8~-5-049 Character Transformation_ Character transformations usually include the functions of character scaling, reflection, and rotation. A
desired transformation of a stroke is performed by the char-cater generator shown in FIG. 2 by applying a set of appear-private transformation adjustments to the involved stroke attributes. Except for the stroke visibility stouts all the character-shape dependent and character-field-size dependent stroke attributes are transformation adjustable.

The size scaling transformation of a character image and the corresponding size scaling transformation of a stroke it performed by scaling the size of the global attributes DX-LENGTH and DY-LENGTH which are directly proportional to the character field dimensions (and inversely proportional to the lo stroke resolution factor). Since a character image is defined within a character field, the horizontal and vertical character image scaling factors are described respectively by the horn-zontal and the vertical dimension ratios between two sets of character field dimensions. For a given set of horizontal and vertical stroke resolutions of the character field, the global stroke attributes are directly proportional to the character field dimensions. Therefore, size scaling transformation of a stroke is effected by employing the equivalent character image sealing factors in scaling the global stroke attributes Rev erring to the Table 5 below, the table illustrates the no-lationship between the scaling of the character field dime-sons and the scaling of the global stroke attributes for a ~3~6~3 stroke resolution factor of I.

Character Field Stroke Length Stroke Width DimensionsScaling(in pixels) Scaling in pixels ours. Vent. DO- DYE PELT- PLY-Field Field LENGTH LENGTH LENGTH LENGTH

g 15 1.5 1.5 1.5 1.5 3 8 0.5 0.8 0.5 0.8 Horizontal Scaling Factor = Ratio between Two Character Field horizontal Dimensions Vertical Scaling Factor = Ratio between Two Character Field Vertical Dimensions DX-LENGTH = Character Horizontal Field dimension/
Horizontal Stroke Resolution LENGTH = Character Vertical Field Dimension/Vertical Stroke Resolution The scaled DX-LBNGTH and DY-LENGTH are calculated by the trays-formation controller 101 using the relationships shown in Table 5. Table 5 lists just four sample character field dimensions and illustrates how the PELX-LENGTH, PELY-LENGTH, DX-LENGTH
and DY-LENGTH attributes are affected for a particular stroke resolution factor it 6 strokes by 10 strokes). For a dip-Errant stroke resolution factor the global attributes change accordingly. For example Table 6 below lists the same char-cater field dimensions and illustrates the pixel length of _42 the same global attributes for a stroke resolution factor of 2.

Character Field Stroke Length Stroke Width DimensionsScaling(in pixels) Scaling in pixels) ours. Vent. DO- DYE PELT- PLY-Field Field LENGTH LENGT~LENGTH LENGTH

6 lo 0.5 0.5 OHS 0.5 9 15 0.75 0.75 0.75 0.75 18 20 1.5 1 1.5 3 8 0.25 0.4 0.25 0.4 Rotational Transformation The rotation transformation of a character image about the character field origin is performed in the preferred embodiment by switching the signs and lengths of the DO and DYE
component vectors and of the logical-pels x and y displace-mints. In general, to rotate a point (zoo) in the character image through a counterclockwise angle A about the character field origin, the form of the rotation transformation is:
x' = x coy - y sin and y' = -x sin If the counter-clockwise ankle A is restricted to be 0, ~0, 180 or 270, the form of the rotation transformation it greatly simplified.
Referring to FIG. 18, the diagram illustrates, for a given no-station angle, the required transformation adjustments to the lengths and signs of the component vectors. Rerun to FIG.
13, the diagram illustrates, for a given rotation ankle, the required transformation adjustments of the lengths and signs of the logical-pel's displacements from the stroke locus. With respect to the stroke attributes of a non rotated stroke (0 no-station angle), the rotational transformation of a stroke is as follows: (1) switch the lengths of the horizontal and vertical component vectors when the rotation angle is either 90 or 270; (2) switch the sign of the horizontal component vector when the rotation angle is either 90 or 180; (3) switch the sign of the vertical component vector when the rotation angle is either 180 or 270; (~) switch the lengths of the logical-lo pot' 8 horizontal and vertical displacements from the stroke~locu~ when the rotation angle is either 90 or 270; (5) switch the sign of the logical-pel's horizontal displacement from the stroke locus when the rotation angle is either 90 or 180 and (6) switch the sin of the logical-pel's vertical displacement from the stroke locus when the rotation angle is either 180 or 270.

Reflection Transformation The reflection transformations to a character image about the vertical and horizontal central axes of the character e told can be performed by applying a sequence of two simple transformations: a scaling followed by a translation. A mire for image of a character is first generated by applying a seal-in transformation. Recall that the forms of the scaling transformation are: x' x * So and y' = y * Sty; where (zoo) and (zoo') are the respective old and new points. So and Sty are the horizontal and vertical scaling factors. Referring to FIX. 19, by choosing So = -l and Sty = l, a vertical mirror I

I 84-5-04g image is generated. Referring to FIG. 20, by choosing ox = l and Sty = -l, a horizontal mirror image is generated.
By applying translation transformation to tube vertical and horizontal mirror images, the desired reflected images about the vertical and horizontal axes of the character field can be obtained. Recall that the forms of the translation transformation are: x' = x + To and y' = y Try; where To and Try are the horizontal and vertical translation displacements.
Referring to FIG. lo, by choosing To = character field horizon-tat dimension, the desired reflected image about the vertical axis of the character field is obtained. Referring to FIG. 201 by choosing Try = character field vertical dimension, the desire Ed reflected image about the horizontal axis of the character field is obtained.
The reflection transformation of a stroke about the vertical central axis of the character field (i.e. with respect to the stroke attributes of a non-reflected stroke), is performed by: (l) switching the sign of the horizontal coupon-en vector; and (2) translating the initial stroke anchor point horizontally by a distance equal to the character field horn-zontal dimension. This is shown in FIG. lo.
The reflection transformation of a character about the horizontal central axis of the character field is best seen in FIG. 20. With respect to the stroke attributes ox a nunnery-floated stroke, the formulation of this particular transform-lion is: (l) switch the sign of the vertical component vector (DYE SIGN); and (2) translate the initial stroke anchor point vertically by a distance equal to the character field vertical dimension.

~3~8~ 84-5-049 For a given character image, the corresponding rota-tonal and reflectional transformation of each stroke of a character image it implemented involuntary and transparently by tile stroke decoder 102. The stroke decoder reconstructs the series of strokes of a character image by retrieving the kirk-ton shape dependent stroke attributive values through the inter-predation of the relative stroke-drawing directives encoded in the microprogram. And by applying the set of constant global attributive values which are applicable to each stroke if required.

Example of the Decoding Process While the junctional operation of character generator 100 has been explained with reference to FIG. 2, it is also helpful to follow a step-by-step example showing the decoding process for a complete character. The first example will show in detail the steps performed by the stroke decoder 102 in rev constructing and displaying the letter pry in an unrotated and unreflected configuration. FIG. 25 illustrates the binary microprogram containing the relative stroke drawing directives for the letter Pi The table in FIG. 14 lists etch encoded directive and the decoding of the drawing directives for the letter Pi in an unrotated and unreflected configuration. (As shown in FIG. 23 the DX-SIGN-QUALIFIER is 00 01 end the DYE
25 SIGN-QUALIFIER is 00 10 since these is no rotation.) FIG. 16 illustrates the composite stroke vector swearing of the letter as it would be plotted on a display screen.
swallower proceeding to decode the drawing directives, it is helpful to recall the steps that are applied in decoding each directive and then in drawing each stroke-trajectory. As explained in connection with the flow diagram of FIG. 6, the first step (1) is to decode the current nibble by using the de-coding instructions in Table 3 above. (2) Then carry out the specific instruction by switching the operative parameter specs flied by the decoded drawing directive. (3) Determine if a trajectory transition has occurred when the drawing directive was carried out. (4) If there is no trajectory transition, up-date the tail point of the present stroke-vector to the new position (zoo). (5) If a trajectory transition has occurred, draw the stroke-trajectory to the new tail point, update the starting point (xl,yl) to the tail point (zoo), and determine if a new stroke has been defined (i.e. test if the CURRENT NIBBLE is 01, 10, or 0000.) If a new stroke has been defined, update the tail point to the new (zoo) position.
Referring to FIG. 14, the bit pattern shown in column 2 is identical to the drawing directives encoded in the micro program shown in FIG. 25. The first byte of the microprogram contains the number of nibbles necessary to decode the char-cater and this number is first loaded into the nibble counter in the stroke decoder. Then the very next nibble contains the stroke resolution factor which is stored for use in scaling the global attributes. Referring again to FIG. 14, the code step I line shows the initial values for each of the five non global attributes. And in FIG. 16, a I is shown next to the initial anchor point as an aid in following what occurs at each code step. small "x" is also shown to signify a transit I
8~-5-049 lion point. Neither the "1," the Rx,R nor the arrowheads shown in FIG. 16 would actually appear on a physical screen.
At code step 1, the first code directive (00 11) is loaded into stroke decoder 102 which interprets the codes according to the encoding scheme provided in Table 3 above.
This table indicates that the (00 11) code means switch the attributive value of the VISIBILITY STATS On line 1 the ~ISIBILIT~-STATUS is switched to "invisible. This point defines a transition point since a change in one of the drawing directives has occurred. Normally a stroke-vector would be drawn, however, since the stroke starting point (xl,yl) and the stroke tail point (zoo) are the same no stroke is actually drawn.
At code step 2, the second code directive (01) is interpreted. Referring to Table 3 to interpret the code directive, the single nibble (01) means switch the attributive value of DX-EXIST-STATUS. The value of DX-EXIST-STATUS at step 1 is true, so at step 2 it is switched to false. This directive defines another transition at point "0,1~ since a change in one of the drawing directives has occurred. Nor-molly a stroke-vector would be drawn, however, since the stroke starting point (xl~yl) and the stroke tail point (zoo) are the same no stroke is actually drawn. also a irrupt stroke is now defined along with the new updated Retail point at point (i.e. the end point of a stroke-vector).
There is no x-component to the first stroke-vector wince the value of DX-EXIST-STATUS is false (does not exist, Nero value). The y-component is in the + direction (upward) since I

Lo DYSON is +. The tail point at point I defines the end of a stroke-vector of unit length. When the strokes are actually projected on a display screen the unit length would be factored by the value of the DX-LENGTH or the DY-LENGTH. The "2" in FIG. 16 designates the end of the first stroke-vector (albeit invisible).
At code step 3, the third coded directive (11) is in-terpreted. Referring to Table 3, the (11) code means no change in the value of either DX-EXIST-STATUS or DY-EXIST-STATUS.
There is no change and no stroke transition at this code step.
However, since DY-EXIST-STATUS is still true a new tail point (zoo) is defined which is shown in FIG. 16 as point aye.
At code step 4, the fourth coded directive (00 11~ is interpreted. Referring to Table 3, the (00 11) code means switch the VISIBILITY-STATUS. Since (00 11) is a change in a drawing directive, there is a stroke transition at point on the stroke is drawn (as an invisible stroke) from the starting point ("Oilier in FIG. 16~ to the transition point (3 in FIG.
16), and the starting point (xl,yl) is updated to the stroke transition point (zoo) i.e. tail point at point "3,4~.
At code step 5, the fifth coded directive (11) is in-terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
EXIST-5TATUS. Since these is no stroke transition, the third stroke-vecto~ is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point "5" as shown in FIG. 16.

I

At code step 6, the sixth coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DY-EXIST-STATUS. Since there is no stroke transition, the fourth stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point I
as shown in JIG. 16.
At code step 7, the seventh coded directive (11) is interpreted. Again referring to Table 3, the (11) code means lo no change in the attributive values of DX-EXIST-STATUS and `
DY-EXIST-STATUS. Since there is no stroke transition, the fifth stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point I
as shown in FIG. 16.
At code step 8, the eighth coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DY-EXIST-STATUS. Since there is no stroke transition, the sixth stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point "8"
as shown in FIG. 16.
At code step 9, the ninth coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE

EXIST-STATUS. Since there is no stroke transition, the seventh stroke-vector is not drawn, however, the tail point Ox that stroke is updated to a new (zoo), which is point "9" as shown in FIG. 16.

- ~3~6~ 84-5-049 At code step 10, the tenth coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DY-EXIST-STATUS. Since there is no stroke transition, the eighth stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which it point ~10~ as shown in FIG. 16.
At code step 11, a stroke transition occurs at point ~10~ since the eleventh code directive (00 00) means switch the attributive values of both DX-EXIST-STATUS and DY-EXIST-STATUS . The attributive values of DX-EXIST-STATUS and DYE
EXIST-STATUS are reversed so that DX-EXIST-STATUS is true and DY-EXIST-STATUS is false. When a stroke transition occurs, the stroke trajectory is drawn between the present starting point and the tail point. Therefore, a stroke starting at I (in FIG. 16) is drawn to the tail point ~10~, and a new stroke starting point (xl,yl) is updated to the tail point (x2, Ye) at point ~10~. Lastly since a new stroke has been defined by the ~00 00) code, a new tail point is created (at point 11 in FIG. 16~.
At code step 12, the twelfth coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of D~Y-EXIST-STATUS and DYE
EXIST-STATUS. Since there is no stroke transition, the stroke-vector starting at ~10~ in FIG. 16 is not drawn, however, the tail point ox that stroke is updated to a new (zoo), which it point ~12~ as shown in FIG. 16. The stroke-vector is a horizontal vector since the DX-~XI5T-STATUS is true and the DESIGN is I.
~51-I 84-5~0~
At code step 13, the next coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of D~-EXIST-STATUS and DYE
EXIST-STATUS. Since there is no stroke transition, the stroke-vector starting at R10~ in FIG. 16 is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point "13~ as shown in FIG. 16. The stroke-vector is another horizontal vector since the DX-EXIST-STATUS is still true and the DESIGN is still I.
At code step 14, the next code directive (00 10) is interpreted. Again referring to Table 3, the (00 10) code means change the attributive value of DYSON. At code step 13 DESIGN was + so it is changed to -. Since (00 10) is a change in a drawing directive, there is a stroke transition, the stroke is drawn (as three visible strokes) from the start-in point (10 in FIG. 16) to the transition point (13 in FIG.
16), and the starting point (xl,yl) is updated to the stroke transition point (zoo) at point ~13,14~. As before the small owe signifies a transition point.
At code step 15, the next code directive (10) is in-terpreted. Again referring to Table 3, the (10) code means change the attributive value of DY-EXIST-STATUS. Therefore DYE
EXIST-STATUS changes from false to true meaning that the y-com-potent of the stroke-vector is given a value. Since code directive (10) is a change in a drawing directive, there is a stroke transition at point Allah, and the stroke must be drawn. However since the starting point (13 in FIG. 16) and the transition point (14 in FIG. 16) are the same points, the ~3~8 84-5-049 stroke-vector reduces to a point. Lastly since the (10) nibble has defined a new stroke, the tail point is updated to the new (zoo) position which is indicated by the arrowhead at 15 in FIG. 16.
At code step 16, the next code directive (01) is in-terpreted. Referring to Table 3, the (01) code means switch the value of DX-EXIST-STATUS. At code step 15 the value of DX-EXIST-STATUS is true, and therefore, at code step 16 it is switched to false. This directive defines a transition at point ~15~ since a change in a drawing directive has occurred.
Since there is a stroke transition, the stroke is drawn from the starting point ~14 in FIG. 16) to the transition point (15 in FIG. 16). (Both x and y components are true, x is + and y is -, so the stroke-vector is a diagonal vector below the horizontal and pointing in the fourth quadrant.) Next the starting point (xl,yl) is updated to the stroke transition point (x2, Ye) at 15 in FIG. 16. Lastly the tail point of the new stroke is updated as shown by the arrowhead at 16.
At code step 17, the next code directive (00 01) is interpreted. Again referring to Table 3, the (00 01) code means change the attributive value of DESIGN At code step 16 DESIGN was + so it is changed to -. Since (00 01) is a change in a drawing directive, there is a stroke transition at point 116~, the stroke is drawn (as a visible stroke) from the starting point ~15 in FIG. 16) to the transition point (16 in FIG. 16), and the starting point (xl,yl) at 15 is updated to the stroke transition point (zoo) at 16. As before the small owe signifies a transition point. Lastly since a new stroke has not been defined (i.e. the CURRENT NIBBLE is not equal to 01, 10, or 0000) the tail point is not updated.
At code stew 18, the next code directive (01) is in-terpreted. Referring to Table 3, the (01) code means switch the value of DX-EXIST-STATUS. Since the value of DO EXIT-STATUS was false it is switched to true. This directive de-Hines a transition at point ~17" since a change in a drawing directive has occurred. Since there is a stroke transition, the stroke is drawn prom the starting point (17 in FIG. 16) to lo the transition point (17 in FIG. 16) so no stroke is actually drawn. The stroke tail point is changed to point 18 in FIG. 16 (x has + value and y has a - value).
At code step 19, the next coded directive (10) is interpreted. Again referring to Table 3, the (10~ code means change the attributive value of DY-EXIST-STATUS. Since the value of DY-EXIST-STATUS was true it is switched to false.
Since (10) is a change in a drawing directive, there is a stroke transition at point ~18", the stroke is drawn (as a visible stroke) prom the starting point (17 in FIG. 16) to the transition point (18 in FIG. 16), and the starting point (xl,yl) is updated to the stroke transition point (zoo) at point ~18~. The stroke tail point is updated to point 19 in FIG. 16 (x has a - value and has no value).
At code step 20, the next code directive (11) is in-terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-ST~TUS and DYE
EXIST-STATUS. Since there is no stroke transition, the stroke-vector is not drawn, however, the tail point of that stroke is :

updated to a new (zoo), which is point "20" as shown in FIG. 16, and the starting point (xl,yl) remains at point "18r as shown in FIG. 16.
At code step 21, the last code directive (11) is in-terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
EXIST-STATUS. The tail point of the last stroke is updated to the new (zoo), which is point "21" as shown in FIG. 16.
Although there is no stroke transition, the stroke-vector is drawn because when the last coded directive is detected, the stroke-vector is drawn. When the nibble counter is decrement Ed to zero, the final stroke is drawn from the current starting point to the tail point. Therefore the stroke-vector is drawn from point 18 in FIG 16 to point 21 in FIG. 16.

Second Example of the Decoding Process The first example showed in detail the steps performed by the stroke decoder 102 in reconstructing and displaying the letter "pi in an unrotated and unreflected configuration. This second example will illustrate the same process for the letter up" rotated by 90. As before the binary microprogram contain-in the relative stroke drawing directives for the letter Pi shown in FIG. 25) will be used by the stroke decoder 102. The table in FIG. 15 lists each encoded directive and the decoding ox the drawing directives for the letter "p" with a 90 rotation and in an unreflected configuration. As shown in FIG.
23 for a 90 rotation the DX-SIGN-QUALIFIER it 00 10 and the DY-SIGN-QUALIFIER is 00 01. It is now necessary to refer to ~23~ 84-5-049 Table 24b to determine ho to interpret the two drawing directives (00 01) and (0010). Table 24 shows that these two directives are given the opposite connotation prom an unrotated character, i.e. (00 01) means switch the value of DYSON and (00 10) means switch the value of DESIGN FIG. 17 illustrates the composite stroke vector drawing of the letter Pi as it would be plotted on a display screen.
Referring to FIG. 15, the bit pattern shown in column 2 is identical to the drawing directives encoded in the micro-program shown in FIG. 25. At code step I the initial values for each of the five non global attributes are loaded into the stroke decoder 102. The 10 attributes or an unreflected char-cater are found in FIG. aye in the second column for a char-cater rotation of 90. (The VISIBILITY-STATUS is always de-faulted to be VISIBLE.) Physically these values are stored in memory as part of the stroke decoder 102.
At code step 1, the first code directive (00 11) is loaded into stroke decoder 102 which interprets the codes according to the encoding scheme provided in Table 3 above and the table in FIG. 24b. Table 3 indicates that the (00 11) code means switch the attributive value of the VISIBILITY-STATUS. On line 1 the VISIBILITY-STATUS is switched to inviable. This point defines a transition point since a change in one of the drawing directives has occurred. Normal-lye a stroke-vector would be drawn, however, since the stroke Tarrytown point (xl,yl) and the stroke tail point (x2, Ye) are the same no stroke is actually drawn. Referring to FIX. 17, a I is placed next to the small I which signifies a transition point.

8~-5-049 At code step 2, the second code directive (01) is interpreted. Referring to Table 3 to interpret the code directive, the single nibble (01) means switch the attributive value of DX-EXIST-STATUS. The value of DX-EXIST-STATUS at step 1 is false, so at step 2 it is switched to true. This direct live defines another transition at point ROW I since a change in one of the drawing directives has occurred. Normally a stroke-vector would be drawn, however, since the stroke starting point (xl,y1) and the stroke tail point (x2, Lo Ye) are the same no stroke is actually drawn. Referring to`
FIG. 17, a I is placed next to the small I which signifies a transition point. Also a first stroke it now defined along with the new updated first tail point at point q2~ (i.e. the end point of a stroke-vector). There is no y-component to the first stroke-vector since the value of DY-EXIST-STATUS is false (does not exist, zero value). The x-component is in the Vega-live x direction since DESIGN is minus. The tail point here at point I defines the end of a stroke-vector of unit length. When the strokes are actually projected on a display screen the unit length would be factored by the value of the DX-LENGTH or the DY-LENGTH. The I in ERG. 17 designates the end of the first stroke-vector (albeit invisible), At code step 3, the third code directive (11) is in-terpreted. Referring to Table 3, the (11) code means no change in the value of either DX-EXIST-STATUS or DY-EXIST-STATUS.
There is no change and no stroke transition at this code step.
Louvre, since DX-EXIST-STATUS is still true a new tail point zoo is defined which is shown in FIG. 17 as 3, I 8~-5-049 At code step 4, the fourth code directive ( no 11) is interpreted. Referring to Table 3 the (00 11) code means switch the VISIBILITY-STATUS. Since I 11) is a change in a drawing directive, there is a stroke transition at point I
the stroke is drawn (as an invisible stroke) from the starting point (point "0,1" in FIG. 17) to the transition point (3 in FIG. 17), and the starting point (xl,yl) is updated to the stroke transition point (zoo) i.e. tail point at point n 3 At code step 5, the fifth code directive (11) is in-terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
EXIST-STATUS. Since there is no stroke transition, the third stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point I as shown in FIG. 17.
At code step 6, the sixth code directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and D~-EXIST-STATUS. Since there is no stroke transition, the fourth stroke-~ector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point I
as shown in JIG. 17.
At code step 7, the seventh code directive (11) is in--terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STA~US and DYE
EXIST-STATUS. Since there is no stroke transition, the fifth stroke-vector is not drawn, however, the tail point of that , stroke is updated to a new (zoo), which is point I as shown in FIG. 170 At code step 8, the eighth code directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
EXIST-STATUS. Since there is no stroke transition, the sixth stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point "81 as shown in FIG. 17.

I At code step 9, the ninth code directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
EXIST-STATUS. Since there is no stroke transition, the seventh stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point I as shown in FIG. 17.
At code step 10, the tenth code directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values ox DX-EXIST-STATUS and DYE

zoo EXIST-STATUS. Since there is no stroke transition, the eighth stroke-vector is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point ~10~ as shown in FIG. 17.
At code step 11, a stroke transition occurs since the eleventh code directive (00 00) means switch the attributive values of both DX-EXIST-S~ATUS and DY-EXIST-STATUS. The Atari-Batavia values of DX-EXIST-STATUS and DY-EXIST-STATUS are no-versed so that DX-EXIST-STATUS is false and DY-EXIST-STATUS is true. When a stroke transition occurs, the stroke trajectory is drawn between the present starting point and the tail point. Therefore, a stroke starting at I (in FIG. 17) is drawn to the tail point "10", and a new stroke starting point (xl,yl) is updated to the tail point (x2, I at point Lyon. Lastly since a new stroke has been defined by the (00 00) code, a new tail point is created (at point 11 in FIG. 17).
At code step 12, the twelfth coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
EXIST-STATUS. Since there is no stroke transition, the stroke-vector starting at 110~ in FIG. 17 is not drawn, however, the tail point of that stroke is updated to a new (zoo), which is point alp" as shown in FIG. 17. The stroke-vector is a vertical vector since the DX-EXIST-STATUS is false, DY-EXIST-STATUS is true and the DYSON is +.
At code step 13, the next coded directive (11) is interpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE

EXIST-STATUS. Since there is no stroke transition, the stroke-vector starting at "10" in FIG. 17 is not drawn, however, the tail point of that stroke is updated to a new (x2,~2), which is point "13" as shown in FIG. 17. The stroke-vector is another vertical vector since the DX-EXIST-STATUS is still false, the DY-EXIST-STATUS is still true, and the DYSON is still I.
At code step 14, the next code directive (00 10) is interpreted. Referring to the table in FIG. 24b, the (00 10) I

code means change the attributive value of DESIGN At code step 13 DESIGN was - so it is changed to I. Since (00 10) is a change in a drawing directive, there is a stroke transition, the stroke is drawn (as three visible strokes) from the start-in point (10 in FIG 17) to the transition point (13 in Fir 17), and the starting point (xl,yl) is updated to the stroke transition point (zoo) at point ~13,14~. As before the small owe signifies a transition point.
At code step 15, the next code directive (10) is in-terpreted. Again rerun to Table 3, the (10) code means change the attributive value of DY-EXIST-STATUS. Therefore DYE
EXIST-STATUS changes -prom true to false meaning that both DO-EXIST-STATUS and D'~-EXIST-STATUS are false. Referring to Table 2 above, when both DX-EXIST-STATUS and DY~EXIST-STATUS are false, the resultant stroke-vector is a diagonal stroke. To determine the direction of the diagonal stroke, examine the signs of DESIGN and DYSON. Since both signs are + the result lent vector is a diagonal vector pointing in the first quad-rant. Since code directive (10) is a change in a drawing directive, there is a stroke transition at point ~13,14~, and the stroke must be drawn. However since the starting point (13 in FIG. 17) and the transition point (14 in FIG. 17) are the same points, the stroke-vector reduces to a point. Icily lice the (10) nibble has defined a new stroke, the tail point is updated to the new (zoo) position which is indicated by the arrowhead at 15 in FIG. 17.
t code step 16, the next code directive (01) is in-terpreted. Referring to Table 3, the (01) code means switch .

I
~4-5-049 the value of DX-EXIST-STATUS. At code step 15 the value of DO-EXIST-STATUS is false, and therefore, at code step 16 it is switched to true. This directive defines a transition at point ~15~ since a change in a drawing directive has occurred. Since there is a stroke transition, the stroke is drawn from the starting point (14 in FIG. 17) to the transition point ~15 in FIG. 17). Since the DX-EXIST-STATUS is true and DY-EXIST-STATUS is false, the resultant stroke-vector is a vector horn-zontal line pointing in the direction. Next the starting point (xl,yl) is updated to the stroke transition point (x2~ Ye) at 15 in FIG. 17. Lastly the tail point of the new stroke is updated as shown by the arrowhead at 16.
At code step 17, the next code directive ~00 01) is interpreted. Again referring to the table in FIG. 24b, the (00 01) code means change the attributive value of DYSON. At code step 16 DYSON was + 50 it is changed to -. Since (00 01) is a change in a drawing directive, there is a stroke transition at point ~16~, the stroke is drawn (as a visible stroke) from the starting point (15 in FIG. 17) to the transit lion point (16 in FIG. 17), and the starting point (xl,yl) at 15 is updated to the stroke transition point (zoo) at 16. As before the small owe signifies a transition point.
Lastly since a new stroke has not been defined (i.e. the CURRENT NIBBLE is not equal to 01, 10, or 0000) the tail point I it not updated.
At code step 18, the next code directive (01) is in-turpitude. Referring to Table 3, the (01) code means switch the value of DX-EXIST-STATUS. Since the value ox DX-EXIST-STATUS was true it is switched to false meaning that again both DX-E~IST-STATUS and DY-ExIST-STATUS are false. Referring to Table 2 above, when both DX-EXIST-STATUS and DY-EXIST-STATUS
are false, the resultant stroke-vector is a diagonal stroke.
To determine the direction of the diagonal stroke, examine the signs of DESIGN and DYSON. Since DESIGN is + and DYSON
is -, the resultant vector is a diagonal vector pointing in the fourth quadrant. This directive defines a transition at point ~17~ since a change in a drawing directive has occurred. Since there is a stroke transition, the stroke is drawn from the starting point (17 in FIG. 17) to the transition point (17 in FIG. 17) so no stroke is actually drawn. The stroke tail point is changed to point 18 in FIG. 17.
At code step 19, the next coded directive (lo) is interpreted. Again referring to Table 3, the (10) code means change the attributive value of DY-EXIST-STATUS. Since the value of DY-EXIST-STATUS was false it is switched to true.
Since (10) is a change in a drawing directive, there is a I stroke transition at point Alec, the stroke is drawn as a visible stroke from the starting point (18 in FIG. 17) to the transition point (19 in FIG. 17~, and the starting point Al Ye) LO updated to the stroke transition point (zoo) at point "Len. The stroke tail point is updated to point 19 in FIG. 17 my has a - value and x has no value).

At code step 20, the next code directive (11) is in-terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-E~IST-STATUS and DYE

~23~ 8 '} - 5-0 4 9 EXIST-STATUS. Since there is no stroke transition, the stroke-vector is not drawn, however, the tail point of that stroke it updated to a new (zoo), which is point "20~ as shown in FIG. 17, and the starting point (xl,yl) remains at point "18~ as shown in FIG. 17~
At code step 21, the last code directive (11) is in-terpreted. Again referring to Table 3, the (11) code means no change in the attributive values of DX-EXIST-STATUS and DYE
~XIS'r-STATUS. The tail point of the last stroke is updated to I the new (zoo), which is point ~21" as shown in FIG. 17.
Although there is no stroke transition, the stroke-vector is drawn because when the last coded directive is detected, the stroke-vector is drawn. When the nibble counter is decrement Ed to zero, the final stroke is drawn from the current starting point to the tail point. Therefore the stroke-vector is drawn from point 18 in FIG 17 to point 21 in FIG. 17.
While a preferred embodiment ox the present invention is disclosed and described above, it is contemplated that those skilled in the art may make numerous changes thereto without departing from the spirit and scope thereof. For example, it is intended that the present invention be embodied in either a programmable digital computer-type apparatus (such as a micro-processor) or in an apparatus wherein the functions of the in-ventlon are performed by mixed circuit elements which may or may not include some programmable features. Obviously, the widest flexibility of the inventions will be obtained with pro-grumble ductile computer-type apparatus. For these reasons, it is intended that the present invention not be limited to the embodiment described above, but rather be determined solely by 0 reference to the ala my hereinafter provided.

Claims (11)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. In a stroke-vector character generation system capable of displaying characters wherein each stroke-vector is characterized by a plurality of character-shape dependent stroke attributes and a plurality of character-field-size dependent stroke attributes, a method of scaling characters comprising the steps of:
receiving a first data signal defining a character type, a horizontal X and a vertical Y character field dimension, and a character drawing point, said dimensions and drawing point being in the coordinate system of said display screen;
retrieving from memory a stroke-vector character mask corresponding to the character defined by said first data signal, said character mask containing a stroke resolution factor representing the number x of horizontal stroke-vectors in a straight line and the number y of vertical stroke-vectors in a straight line that are used by said character mask to represent said character within a normalized character field;
generating a horizontal length stroke-vector attribute DX-LENGTH by forming the quotient X/x, and generating a vertical length stroke-vector attribute DY-LENGTH by forming the quotient Y/y;
converting said DX-LENGTH attribute and said DY-LENGTH
attribute from the display screen coordinate system to a virtual screen coordinate system having a greater resolution than the display screen coordinate system;

scaling the length of each stroke-vector in said character mask by applying said DX-LENGTH and DY-LENGTH attributes in the virtual screen coordinate system to each of said stroke-vectors of said character mask; and translating the stroke-vectors of said character mask in the virtual screen coordinate system to the physical screen coordinate system, said translated stroke-vectors having those attributes that define a character image on the display screen having the desired X and Y field dimensions.
2. The method according to claim 1 wherein the scaling step is performed by calculating start/stop coordinate pairs for each stroke-vector in the virtual screen coordinate system.
3. The method according to claim 2 further including the step of projecting said translated stroke-vectors at said character drawing point onto said display screen and thereby generating the desired character display.
4. The method according to claim 3 wherein said character mask is comprised of a series of interconnected stroke-vectors wherein each horizontal stroke-vector is made uniform in length, where each vertical stroke-vector is made uniform in length, such that the horizontal stroke-vector span and the vertical stroke-vector span are made equal to their respective character field dimension specified by said first data signal.
5. The method according to claim 4 wherein said step of retrieving is performed by:
decoding said first data signal and generating a character code signal defining the character type;

addressing a location in said memory using said character code signal as a memory address; and reading out of said memory a plurality of stroke-vector attributes.
6. The method according to claim 5 further comprising applying logical pel attributes to said stroke-vector attributes prior to the step of projecting.
7. In a stroke-vector character generation system capable of displaying characters wherein each stroke-vector is characterized by a plurality of character-shape dependent stroke attributes and a plurality of character-field-size dependent stroke attributes, a method for scaling characters comprising:
receiving a first data signal defining a character type, a horizontal X and a vertical Y character field dimension, and a character drawing point, said dimensions and drawing point being in the coordinate system of said display screen;
retrieving from a first memory a stroke-vector character mask comprising a plurality of encoded binary valued stroke-drawing directives for the particular character type defined by said first data signal, said character mask also containing a stroke resolution factor representing the number x of horizontal stroke-vectors in a straight line and the number y of vertical stroke-vectors in a straight line that define the stroke span of a normalized character field;
retrieving from a second memory initial values for each character-shape-dependent stroke attribute, said initial values being independent of the character type;

decoding said encoded stroke-drawing directives and said encoded initial values and sequentially applying the decoded drawing directives to the decoded initial values thereby generating a series of stroke signals representing a series of interconnected stroke-vectors;
generating a horizontal length stroke-vector attribute DX-LENGTH by forming the quotient X/x and generating a vertical length stroke-vector attribute DY-LENGTH by forming the quotient Y/y;
converting said DX-LENGTH attribute and said DY-LENGTH
attribute from the display screen coordinate system to a virtual screen coordinate system having a greater resolution than the display screen coordinate system;
decoding said encoded stroke-drawing directives and said encoded initial values and sequentially applying the decoded drawing directives to the decoded initial values thereby generating a series of interconnected stroke-vectors;
scaling the length of each interconnected stroke-vector in said character mask by applying said DX-LENGTH and DY-LENGTH
attributes in the virtual screen coordinate system to each of said interconnected stroke-vectors;
translating each stroke-vector in the virtual screen coor-dinate system to the physical screen coordinate system and thereby generating a set of scaled stroke-vectors having those attributes that will define a character image having the desired X and Y field dimensions; and converting each scaled stroke-vector into a series of signals designating start/stop coordinate pairs for each intercon-nected stroke-vector, said series of signals defining a character mask for the character type defined by said first data signal.
8. The method according to claim 7 further including the step of projecting said scaled stroke-vectors at said character drawing point onto said display screen and thereby generating the desired character display.
9. The method according to claim 8, wherein the first retrieving step is performed by:
decoding said first data signal and generating a character code signal defining the character type;
addressing a location in said first memory using said character code signal as a memory address; and reading out of said first memory a plurality of encoded binary valued stroke-drawing directives.
10. The method according to claim 9 further comprising:
applying logical pel attributes to said scaled stroke-vectors prior to the step of projecting.
11. The method of claim 10 wherein said stroke resolu-tion factor is encoded as two-bit binary code.
CA000474312A 1984-11-01 1985-02-14 Technique for scaling characters in a stroke-vector display system Expired CA1230688A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US667,320 1984-11-01
US06/667,320 US4672370A (en) 1984-11-01 1984-11-01 Technique for scaling characters in a stroke-vector display system

Publications (1)

Publication Number Publication Date
CA1230688A true CA1230688A (en) 1987-12-22

Family

ID=24677748

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000474312A Expired CA1230688A (en) 1984-11-01 1985-02-14 Technique for scaling characters in a stroke-vector display system

Country Status (2)

Country Link
US (1) US4672370A (en)
CA (1) CA1230688A (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4939673A (en) * 1986-07-22 1990-07-03 Hewlett-Packard Company Method and apparatus for enhancement of display screen resolution
JPS63271290A (en) * 1987-04-30 1988-11-09 株式会社日立製作所 Character pattern generation system
US4941116A (en) * 1988-07-15 1990-07-10 Honeywell Inc. Elliptical arc generator for display systems
CA2025782A1 (en) * 1989-10-16 1991-04-17 Sampo Kaasila Method for determining the optimum angle for displaying a line on raster output devices
JPH0493894A (en) * 1990-08-03 1992-03-26 Canon Inc Method and device for character processing
US5293472A (en) * 1991-04-22 1994-03-08 International Business Machines Corporation Method of generating lines and curves of user specified thicknesses on a raster device
US7068286B2 (en) * 2003-10-17 2006-06-27 Leapfrog Enterprises, Inc. Edge smoothing systems and methods
US20050171558A1 (en) * 2003-10-17 2005-08-04 Abovitz Rony A. Neurosurgery targeting and delivery system for brain structures
DE102007039446A1 (en) * 2007-08-21 2009-02-26 Volkswagen Ag A method of displaying information in a variable scale vehicle and display device
DE102007039444A1 (en) * 2007-08-21 2009-02-26 Volkswagen Ag Method for displaying information in a motor vehicle and display device for a motor vehicle
US20110176154A1 (en) * 2010-01-18 2011-07-21 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and storage medium
US9396540B1 (en) * 2012-03-28 2016-07-19 Emc Corporation Method and system for identifying anchors for fields using optical character recognition data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4205309A (en) * 1978-02-21 1980-05-27 Documation Incorporated Character generator
FR2426296A1 (en) * 1978-05-18 1979-12-14 Thomson Csf VECTOR GENERATOR FOR GRAPHIC CONSOLE
FR2458849A1 (en) * 1979-05-23 1981-01-02 Telediffusion Fse METHOD FOR ALIGNING TELETEXT CHARACTERS AND DEVICE FOR IMPLEMENTING SAID METHOD
US4491836A (en) * 1980-02-29 1985-01-01 Calma Company Graphics display system and method including two-dimensional cache
US4321597A (en) * 1980-07-22 1982-03-23 Documation Incorporated Expanded character generator
US4331955A (en) * 1980-08-07 1982-05-25 Eltra Corporation Method and apparatus for smoothing outlines
US4455554A (en) * 1980-12-30 1984-06-19 International Business Machines Corporation Proportionality in minature displays
US4439761A (en) * 1981-05-19 1984-03-27 Bell Telephone Laboratories, Incorporated Terminal generation of dynamically redefinable character sets
US4553214A (en) * 1982-07-01 1985-11-12 Sperry Corporation Angle based stroke generator
US4507656A (en) * 1982-09-13 1985-03-26 Rockwell International Corporation Character/vector controller for stroke written CRT displays

Also Published As

Publication number Publication date
US4672370A (en) 1987-06-09

Similar Documents

Publication Publication Date Title
CA1230688A (en) Technique for scaling characters in a stroke-vector display system
CA1236603A (en) Data display systems
US4396989A (en) Method and apparatus for providing a video display of concatenated lines and filled polygons
US4862154A (en) Image display processor for graphics workstation
EP0279229B1 (en) A graphics display system
US5696947A (en) Two dimensional frame buffer memory interface system and method of operation thereof
JPH0631937B2 (en) Display device
JPS6235679B2 (en)
CA1230687A (en) Stroke-vector character generator
US4594587A (en) Character oriented RAM mapping system and method therefor
US4346377A (en) Method and apparatus for encoding and generating characters in a display
JPH0664619B2 (en) Method for detecting and filling closed area in raster display system
US4633243A (en) Method of storing characters in a display system
CA1231475A (en) Method for generating stroke-vector characters for use in a display system
US5341472A (en) Efficient area description for raster displays
EP0062669B1 (en) Graphic and textual image generator for a raster scan display
US4626839A (en) Programmable video display generator
US5317684A (en) Method of storing character data in a display device
US5266933A (en) Method and apparatus for displaying a screen separator line
JP2889572B2 (en) Font data processing device
US4647923A (en) True object generation system and method for a video display generator
EP0422294A1 (en) Display system
US3641556A (en) Character addressing system
KR940002331B1 (en) Character drawing method
Ninke Design considerations of NAPLPS, the data syntax for VIDEOTEX and TELETEXT in North America

Legal Events

Date Code Title Description
MKEX Expiry