CA1301365C - Method and apparatus for generating a character image - Google Patents

Method and apparatus for generating a character image

Info

Publication number
CA1301365C
CA1301365C CA000560860A CA560860A CA1301365C CA 1301365 C CA1301365 C CA 1301365C CA 000560860 A CA000560860 A CA 000560860A CA 560860 A CA560860 A CA 560860A CA 1301365 C CA1301365 C CA 1301365C
Authority
CA
Canada
Prior art keywords
character
print
slices
state
mask
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 - Fee Related
Application number
CA000560860A
Other languages
French (fr)
Inventor
Carol Elizabeth Wyke
Ronald Wade Willis
Ronnie Chi-On Tong
Karen Kaye Kellam
Phuc Ky Do
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.)
Lexmark International Inc
Original Assignee
Lexmark International Inc
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 Lexmark International Inc filed Critical Lexmark International Inc
Application granted granted Critical
Publication of CA1301365C publication Critical patent/CA1301365C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers

Abstract

ABSTRACT

This invention relates to a method for generating character images using a font compression algorithm that reduces the storage requirements associated with low-cost, high resolution printers. An expanded character image has original print slices and duplicate print slices identical to one or more of the original print slices where the duplicate print slices are eliminated in the compressed character image. The compressed character is expanded using a repetition mask that identifies the number and location of the duplicate print slices. The technique for expanding the compressed character is such that printing can be performed in real time, in either a forward or reverse direction with only minimal effects on processing. This invention also provides a means for supporting multiple pitches, such as 10 CPI, 12 CPI and Proportional Space Mode (PSM), within those storage constraints. The technique of this invention is efficient enough to be performed by microcode in real time, yet provides for significant reduction in the overall memory required for storing the font data.

Description

-` ~L3~
MET~OD AND APPARATUS FOR ~ENERATING A CHARACTER IMAGE

Technical Fleld 1 This invention relates to character generatiOn in matrix printers and more specifically to a method and apparatus for bidirectionally printing characters in various pitches from compressed character data.

Background Art ~ith the increasing popularity of high resolution printers, also known as letter quality printers, such as 24 wire, resistive ribbon, ink jet and electrophotographic printers the amount of storage requixed to store the character generator has risen exponentially. Moreover, no~r that output of the printer is of a much higher quality there is a demand bv users for greater variety in the number of type ~onts that are available to them and also a desire to have the characters print in di~erent pitches. The conventional way of supporting multiple type fonts and pitches is to create a character generator ~or each font and for each individual pitch. Each character generator, howev~r, req~ir~s a certain quantity of memory and for hi~her resolutions, that quantity can be substantial.
Although the cost of memorv per bvte is decreasing, it nevertheless remains a significant factor in the design of computer printers. As an example, a 24 wire printer with a 24 X ~4 character cell size increases the memory requirements by approximately 600% as compared to the popular 9 wire printers having a 9 X 12 character cell size. This increase is then multiplied by the number of fonts and pitches that must be included with the printer.
To accommodate the large character generator storage requirements, additional storage has to be added to the printer. Often the available storage is insufficient to store all characters which could be included lf storage were not a concern. If the character generator storage requirements are reduced, significant efficiencies are achieved in that the ~3~3~5 , 1 o~rerall storage requirements are reduced making more storage available for additional characters and printer microcode.
In United State.s Patent No. 4,353,653 to Zimmerman for Font Selection and Compression For Printer Subsvstem a method is taught for storina a base font with the blan~. slices eliminated, see col. 37 llne 53 through col. 38, line 28. The printer responds to a character data stream bv selecting the desiqnated font and the appropriate character ln real time, however, no provision is made for dynamically changing the character pitch in real time. IBM Technical Disclosure Bulletin, January l986, paqe 3563, entitled Compression/Decompression of Font Patterns also describes a technique for eliminating blank ~ata slices. The technique of this TDB article teaches constructing a compressed character comprised of control bytes follot~ed by data bytes. The control bytes designate the number and location of the blank slices.
Another techni~ue for compressing printer font data is described in`United States Patent No.~,458,333 to Smith for Dot Matrix Character Printing Using Constrained Memory. The method described in that patent includes the step of prestoring only a portion of the dot matri.x defining the character, together with information designating at least one axis of reflective s,ymmetry. ~nly those characters having at least one axis of reflective symmetr~ are amenable to the compression scheme of this patent. Two methods for decompressing the font data are described depending on the print head's direction of travel.
No provision is made for changlng the character pitch in real time.
In United States Patent No. 4,467,363 to Tench for Graphic Data Compression a technique is described that constructs characters using onlv a seauence of commands. Each command consists of a prefix code and a content code. The prefix code determines'one of three modes: continuous string, repeat column c or bit-for-bit specification. The content code is a numerical parameter for the prefix code. ~sing the techni~ue of this patent, characters are stored as a set of instructions and to reconstruct the character the entire instruction set must be executed. For examp]e, if the prefix code designates the repeat column mode, the content code specifies the number of repetitions. Prior commands would generate the column; data depictin~ the character image is not stored, only instructions i3~L3~5 ,, .~
1 to the processor on where to place dot elements. Then a command to repeat the column a certain number of times would be processed. Such a method requires a substantial amour.t of processing time to reconstruct a character and no provisions are ~ade for printiny the character in different pitches or in either a forward or reverse direction.
United States Patent No. 4,181,973 to Tseng for Complex Character ~-enerator together with United States Patent No.
4,573,199 to Chen et al. for Kanji/Chinese Font Generation By Scaling teach a technique for compressing font characters and scaling those characters for printing in different pitches. In the patent to Tseng, a set of symbols tor sub-matrices) are defined for the entire set of characters in the character set.
For each character, a set of addresses pointing to the svmhols necessarv for generating a character are stored. The Chen et al. patent adds to the Tseng patent bv inserting hori~ontal and vertical lines into the stored font to effect vertical and horizontal expansion.
A teehnique similar to that disclosed in the Tseng patent is described in IBM Technical Disclosure Bulletin, February 1983l page 4582 entitled Font Compression In High Resolution Printers. There, a table is eon~tructed eontaining vertieal sliees of charaeter data which eommonly oeeur in se~lenee in the font. For example, the sequenee of sliees representing the vertieal stroke at the li.ft of a 'B' or 'D'. The eharaeters in the font ~re represented by strings of table addresses.
Summarv of the ~nvention While each of the foregoing techniques do achieve the ob~ective of reducing the font data required bv the printer for producing characters, they have certain disadvantages. First, the techniques of the prior art generally reauire significant amounts of processing time to perform decompression. One of the advantages of this invention is that a minimal amount of processing is required for expanding the compressed eharacter.
Another disadvantage of the prior art is the difficulty in printing characters in multiple pitches. This invention offers a greater number of character pitches than was hitherto available, all lith little or no increase in the base charaeter data or increasing the time required to decompress the eharacter. ~nother significant disadvantage of the ~rior art is the inabilitv to e~pand the characters in a ~ay that is CT9-~7-003 3 1 readily amenable to bidirectional printing. With this invention printina the expanded characters in either a for~lard or reverse direction is accomplished with little effect on processing time. This invention for a method and apparatus for generating character images provides a way for economically storing font data with the synergistic result that multiple pitches are readily available in an efficient way that is readily amenable to printing characters bidirectionally.
A printer incorporating this invention includes a character generator containing the character images for the printer's internal font. A character image consists of a series of print slices each print slice having one or more print positions each print slice defining only one dot column of the character. In a 2~ wire printer, for example three bytes are require~ to define the 24 possible print positions in a column or print slice. A 1 bit in a print position corresponds to a dot being printed in that print position. A 0 bit in a print position corresponds to a dot not heing printed in that print position. Character font design involves the arranging of print positions or dots in such a manner as to produce the character image by printing a series of print slices that comprise the entire character.
In a majority of characters, marlv situations exist where a print slice is followed by one or more print slices that are identical to the preceding print slice. This means that when viewing the print slices of a character there may be consecutive print slices that are identical. Consecutive identical print slices are rore common with the higher resol~tion printers now available; since the size of the printed dot has decreased, so multiple identical print slices must be printed in order to produce an acceptable character.
Since no new data is ~btained from the consecutive and ecual print slices, these duplicate print slices are not required and therefore do not need to occupy valuable storage.
In this invention only the first print slice of a series of repetitive print slices is actually stored in the character generator. By storing only the first print slice of a series of equal print slices only the non-repetitive prlnt slice data is stored in the character generator. Since the number of print slices that can be elimina~ed for each character varies the amount of storaae required for each character will also 1 vary. Each character in the font has a corresponding entry in a character pointer table which points to the actual start position of the character ln the character qeneratox storage.
The first three bytes stored in the character generator for each character are attribute bytes. These three attribute bytes are used as the repetition mask for reconstructing the eliminated print slices.
The processin~ required to expand the reduced font is greatly simplified with the addition of the three attribute bytes for each character. The 24 bits of -the three attribute bytes are used to define the 24 print slices of the character.
~or each print slice to be printed, the corresponding attribute bit will be examined. If the attribute bit for a print slice is a 0 bit, then the print slice to be printed is a new print slice and must he fetched :Erom the character generator storage.
If the attribute bit for a print slice is a 1 bit, ~hen the print slice to be printed is a duplicate print slice which i5 the same as the last print slice fetched from the character ~enerator and so no fetching of a print slice occurs. Since no print slices ~re fetched when the attribute bit is a 1 bit, processing time is freed for other activities. As an example o~ the benefits offered by this invention, eliminating the repetitive prink slice data of a ~ hv 20 dot matrix character font will reduce the character generator storage requirements from approximately 15K bytes to approximately 8.964K bytes, even after adding back the three attribute bytes per character and a 512 byte character pointer tab]e. In t.hat example, by elimlnating repetitive print slice data, a savings of ~0.~ or 6.03K bytes is achieved.
This inv~ntion also provides an efficient means of reducing the amount of memory required to store multiple pitches of a particular character font. By eliminating or adding one or more of excess duplicate print slices, characters can be narrowed or widened to correspond to different pitches.
The print slices to be added or eliminated are identified in the repetition maskO Thus, additional character pitches are made available b~ storing only additional mask information. As an e~ample, if three pitches (10 pitch, 1~ pitch and proportional spaced mode (PSM) ) were implemented in the conventional ~ay, 50K bytes of memory would be required to store one font in three pitches. ~ith this invention, it ~3~3~3~5 74460~2 only take approximately 9K bytes to store the character image and 1.25K bytes each for the character pointers and the repetition masks. This total is approximately 13K bytes, which is only 25% of the conventional storage requirement and amounts to a substantial benefit.
This invention further provides a technique for printiny the expanded character image in either a forward or reverse direction. This is accomplished by rotating the repetition mask one position to the left when printing occurs in the reverse direction. By definition, the first print slice of a new character image is new, as the data is stored with the presumption of printing from left to right the first bit of the repetition mask always signifies a unique or new print slice.
By translating the first bit of the mask to the end position of the mask, thus always treating the last print slice as unique when printing from right to left, and then constructing the character in reverse order, bidirectional printing is accomplished with no effect on the real time processing capabilities of the system.
The lnvention may be summarized, according to a first broad aspect, a~ a method of constructing a fully formed charaater out of print slice.~ for a matrix printer comprising the steps of: (a) selecting a character to be printed from a plurality of characters; (b) selecting a compressed character, associated with said selected character, containing a set of only tha first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character; ~c) selecting a mask, associated with said compressed character, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or second state, each of said bits beiny as50ciated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character; (d) testing each bit of said mask, to detect for either said first state or said second state; (e) fetching a new one of said first or unique print slices, when said first state is detected;
(f) omitting the previous step when said second state is detected; and (g~ printing the fetched prin~ slices.
According to a second aspect, the invention provides ~3~

a method for constructing a full formed character out of print slices for a matrix printer comprising the steps ofs (a) selecting a character to be printed from a plurality of charac~ers; (b~ selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said full formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character; (c) selecting a mask, associated with said character to be printed, form a plurality of said masks, each of said masks having a plurality of bits in either a first s~ate or second state, each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character; (d) testing each bit of said mask, to detect for either said first state or said second state; (e) fetching a new one of said first or unique print slicest when said firsk state is detected; (f) storing the ~etched print slices in a print sli~e buffer; (g) duplicating the fetched print sliae and storiny said duplicated print slice in said print slice buffer when said se~ond state is detected;
and (h) printing said print slice buffer, when said print slice buffer is full.
Brief Des_riptlon o~ the~D.rawinqs Referring now to the drawingsr wherein like reference numerals are used to designate like parts, a preferred embodiment of the invention is described.
Fiy. 1 shows an enlargement of a full character printed at 10 cpi;
Fig. 2 shows an enlargement of the full character of Fig. 1, as printed, illustrating the results of inter-dot elimination;
Fig. 3 shows an enlargement of the full character of Fig. 1 printed at 12 cpi;
Fig. 4 shows an enlargement of the full character of Fig. 1 printed in proportional spaced mode (PSM);
Fig. 5 shows an enlargement of the full character of Fig. 4, as printed, illustratincJ the reqults of inter-dot elimination;
Fig. 6 shows an enlargement of the stored character data used to generate the characters of Flgs. 1 through 5;
5a ~,~

~3~3~S

Fig. 7 shows an enlargement of a full graphic character printed at 10 cpi;

6b 13~365 1 Fiq. 8 shows an enlargement of the character of Fig. 8, as printed, illustrating the results of inter-dot elimination;
Fig. 9 sh~ws an enlargement of the stored character data used to generate the graphic character of Figs. 7 and 8;
Fig. 10 illustrates the masks used to ger.erate Figs. 1 through 5, 7 and 8;
Fig. 11 illustrates the compensated masks for printing the characters of Figs. 1 through 5, 7 and 8 in a reverse direction;
Figs. 12 through 14 are flow charts illustrating a method for practicing the invention;
Fig. 15 shows an apparatus for practicing the invention;
and Figs. 16~, 16B and 16C illustrate a design consideration resulting from the effect of inter-dot elimination on bidirectional printing.

Detailed nescri~-tion of the Preferred Embodiment The details of making a printer incorpor~ting this invention are well ]cnown to those skille~ in the art and will not be ~up~icated here. An example o~ prior art printers that could usefull~ adopt this invention are the ~M Models 4201 and ~202 Proprinter.
Throughout the detailed description of this invention, the characters ~ill be described on the basis of a 2~ x 24 dot matri~. The concepts of this invention, however, apply equally well to matrices having different dimensions.
Figure 1 is an enlargement showing the normal character image for a B printed at 10 cpi. The row positlons are identified on the left side of the figure and the column positions, or print slices, are identified along the top of the figure. The mask for generatlng the character image according to the invention ls shown at the bottom of the figure. A 0 bit in the repetition mask signifies a new print slice, while a 1 bit in the mask signifies duplicating the previous print slice. Print slice 1 and print .slice 2 are equal, so only ~3~136~
l print slice 1 would be stored in the reduced character generator. Print slices 3, 4 and 5 are equal, so onlv print slice 3 is stored in the reduced character generator. Print slices 6, 7 and 8 are equal so only print slice 6 is stored in the reduced character generator. Since print slices 9 through 17 are equal, only print slice 9 is stored in the reduced character generator. Print slices 18 through 22 are unique so each will ~e stored in the reduced character generator. Print slices ~3 and 24 are e~ual, 50 onl~ print slice 23 will be stored in the reduced charac~er generator. Figure 6 shows the reduced character image actually stored for the B of Fig. 1.
It is evident that all consecutive identical print slices have been eliminated.
In a dot printer, the operation of placing dots on the record medium prevents the production of dots in consecutive print columns. This is known as inter-dot elimination and is fully explained in United States Patent No. 3,627,096 to Finnegan for ~ire Printing ~ethod. ~ecause of inter-dot elimination, the actual character imaqe printed on the record medium is depicted in Fi~. 2. In actual operation, the dots are close enough toqether to make ~or a high ~uality output.
In designing the font characters, it is important to note that in an expanded character consecutive horizontal print positions should be stored ~in odd number multiples to avoid any detrimental e~fects of inter-dot elimination on bidirectional printing.
Referring to Fig. 16A, an expanded character is depicted having an even number of duplicate horizontal print positions in sli.ces four through seven. In Fig. 16B, printing ]eft to right produces a properly formed character while in Fig. 16C, printinq from right to left, the dots in print position ten are out of alignment producin an improperly formed character. This problem is avoided bv selecting an expanded character ~here there is alwavs an od~ number of dot positions in the hor~zontal direction.
Fig. 3 shows an enlarged R printed at 12 cpi and thus four print slices are e]iminated to produce a character matrix of ~4 x ~0 dots. The eliminated slices are determined by the repetition mask. The mask of Fig. 3 operates on the character image data of Fig. 6 in the same way the re~etition mask of Fig. 1 operates on the data of Fig. 6. sy constructina the appropriate mas~.s, the entire character set of the font-can be printed in different pitches. A~ain, note that in the e~pan~ed 1 character all groups of horizontal print positions occur in odd numbered multiples.
Figs. 4 and 5 illustrate another pitch, in this case the character is printed in Proportional Space Mode ~PSM) using 28 print slices. Once again, the image data of Fig. 6 is expanded using an appropriate mask, bottom row of Fig. 4, to produce the B in PSM. Fig. 5 is an enlarqed view of the actual printed cha~acter illustratinq inter-dot elimination.
Fig. 7 shows the character im~ge for a left hracket [.
Print slices 1 through 5 are equal, so only print slice 1 is stored in the reduced character generator. ~rint slices 6 through 8 are e~ual, so only print slice 6 is stored in the reduced character qenerator. ~rint slices 9 through 16 are equal, so onlv print slice 9 is stored in the reduced character generator. Print slices 17 through 24 are equal, so only print slice 17 i~ storecl in the reduced character generator. In this example, a character image consisting of 24 print slices is reduced to a 4 slice character image by eliminating repetitive print slices. Fig. ~ i~ an enlarged view of the actual printed eharacter illustrating inter-dot elimination and Fi~. 9 shows the actual reduced character image for the left bracket [ that is stored in memory.
Referrin~ now to Fig. 10, the function of the repetitlon mask is explained in more d~tail. The ~ blt of the repetition mas]c is used to deEine the x print slice of the character ~for examp]e, bit 1 gives informati~n about slice 1 of the character; bit ~ refers to slice 2, etc.). If the repetition mas~ bit for a print slice is a n, then the print slice to be printed is a new print slice, meaning it is d~fferent from the prcvious slice, and must he fetched from the character aenerator storage. If the repetition mask bit for a print slice is a 1 bit then the print s] ce to be printed is a dupllcate print slice, meaning that it is the same as the last print slice that was fetched from the character ~enerator so no fetching of a print slice occurs.
By appropriate design of the repetition mask, multiple pitches can be made available to the user. For example, suppose, after compression, only 12 slices of a character were stored using the above method, where the original character had 24 slices. In addition, suppose the printer resolution is 240 dots/inch. Th~s means tha- 'o produce a 10 pitch char~cter, 24 3~S

1 slices m~lst be printed. Therefore, in order to print the character that was ccmpressed to 12 slices, an additional 12 slices mus~ be selectively inserted. This selective insertion i5 accomplished hy using the repetition mask as described above.
Continuing the example above, suppose a 12 pitch character is to he printed using the same compressed character data of 12 slices. This ~eans that 20 s]ices need to be printed, instead o 24. Onlv B slices must be selectively inserted. In other words, by tlsing a different repetition mask from the one used to generate the 10 pitch character, a 1~ pitch character can be printed using the same character qenerator data. This new mask is created by finding sequences of 1 bits in the original mask and removin~ enough of those 1 hits to get the desired pitch --for this example, four 1 bits need to be removed. To furtherillustrate, suppose the original mask ~las 010110110111111110000001. To make a 12 pitch character, one duplicate slice of hlank data can be omitted, two slices of duplicate data can be remo~ed from the group of eiqht 1 bits, so that the slice is repeated only six times, instead of eight and one duplicate hlank slice at the end is eliminated. The new mas}c would be: 00110110111111000000. ~here the 1 bits should be removed is a sub~ective decision, lar~el~ based upon the character desiqn and aesthetics. The rotated masks for proclucin~ the e~panded character ima~es of Figs. 1 throu~h 5, 7 and 8 in the reverse direction are shotm in Fig. 11.
With this method, the change in pitches will only require a chan~e in construction o,F ~he repetition mask so that each pitch will have its own repetition mask that works on one character generator. This method can be used to deri~e ary pitch desired, as long as there are enough repetitive slices in the characters that can be removed to give the desi~ed pltch.
Referring now to Figs. 12, 13 and 14, a flo~ chart for implement-nq a method for practicing the invention will be described. When a selected character to be printed is recei~ed, block lO0 gets the address of the selected character from an address table. The character address identifies the start memor~ location, for that character, t~herein is stored the mask an~ the compressed print data in the form of unique print slices.
Next, the repetition mask ~or the selected character is fetched, hlock 102. Then, decision hlock loa determines tr~hether printing i5 in either the fortJard or rever~e ~irection.

I If printing forward, there is a branch to b'ock 106 to set the mask pointer to point at the most significant h t of the repetition mask. If printinq in the reverse direction, a set of three steps are executed to rotate the mask.
In block 108, the repetition mask is shifted by one bit to the left. In block 110 a 0 bit, signifying a new print slice, is inserted into the first rightward position, or least significant bit, of the repetition mask. Ne~t, the mask pointer is reset to point to the least significant bit of the repetition mask, block 112. In block 114, the repetition mask bit pointed to by the mask pointer is identified as either a 1 b~t or O bit.
Referrlng now to Fig. 13, if the bit is a 0, then decision block 134 determines that there is a need to get a new slice.
The new slice is fetched in block 136. If the bit is a 1, no new print slice iS needed and the step of block 136 is omitted.
The print s]ice is printed in block 138.
In decision block 140, the print direction is again determined. If printing forward, or rightward, the mask is shi~ted by one bit to the left in block 144. If printing leftward, or in the reverse direction, the ~ask is shifted one bit to the right, block 1~?. In block 146, the print slice eounter, which i9 initially set to a predetermined value equal to the number of print sliees in a character, is decremented by on~ in block l~G. If the counter is zero, clecision block 148, the eharacter has been printed and the method ends. If there are more print slices to be printedr the counter is greater than 2ero, there i9 a return to entry point 1, Fig. 1~. It will be understood by those having skill in the art that printing oÇ bit slices need not be performed at bloc~ 138, but rather all print slices for a character or a pluralitv of characters may be accumulated in a print slice buffer and printed ~7hen the buffer is fu]l.
Referring now to Fig. 14, the invention for providing printed characters in one of a plurality of pitches will be ~escribed. A character is selected in block 116 and the character address is fetched in block 118. ln block 1~0, a pitch is selected from a multiplicity of pitches and in block 122, the appropriate ~ask for the selected character and pitch is fetched.

CT~-87-003 11 L3~
1 Decision block 124 determ-nes the condition of the mask bi~. If the mask bit is in a first condition or state, signifying a duplicate print slice, the steps of blocks 126 and 128 are omitted. If the mask bit is in a second condi-tion or state, signifying a new print slice, the print sllce pointer is incremented by one, block 126 and the new print slice is fetched.
In block 130, the mask pointer is incremented b~ one and in decision block 132 the mask pointer is tested to determine whether the last print slice has been generated.
The pitch selection feature has been described ~Jithout reference to the details of bidirectional printing to point out this specific feature of the invention more clearly. Those skilled in the art are fully capable of integxating the methods of Figs. 12 and 13 with Fia. 14.
Referri.ng now to Fig. 1~, an apparatus fox practicing the invention will be described. A host 200, such as an I~M
Personal Computer, communicates with a printer of the present invention via printer interface 202. Receive parser 204 receives a data stream comprised of character and pitch information, from interface 202 anfl identifies the characters to be printed and the selected Pitch. The character information is loaded into character builder 206 and the pitch information is loaded in pitch selector 214. Builder 206 selects the appropriate character address from addrcss table 208. The character address identified in table 208 is the start address of the character area in memory 212 associated with the selected character. The particular mask to be uced in generating the character image is identifie~ by pitch selector 214, which communicates w~th memory 212, to select a repetition mask for the selected charact.er. The selected character image ~ata, comprise~. of a mask ~nd print slice data is loaded into character image generator ?14. A bit of mask 216, identified by mask pointer 220, is examined. The first bit of mask 216 will always be a 0 bit signifying a new print slice. Character image generator 234 passes the print slice to driver means 221 which controls motor 228 and print element 222 for printing on record medi~lm 224.
Print element 2?,? is bidirectionally moveahle across record medium 2;24 along helix 226 driven bv stepper motor 228.
Stepper motor 228 i5 under the control of direction flag 230.

~L3~3~Ei5 1 When flag 230 is set to drive print element 222 in a left~Jard or reverse. direction, mask pointer rotator 23~ is acti~atcd to rotate mask pointer ~20 and print slice pointer 231 to point initially to the opposite position of buffer 218.
Still referring now to Fi.g. 15, reconstruction of the original character ~mage is made verv easv with the repetition mask 216. With reference ~o the mask, a 0 indicates a new or unique slice whil.e a l indicates ~ rep~ated slice. In nrder to print the character B, memor~r 21~ receives the addrecs for the B character from the address table 208. The address in the address table points to the st.art of the character ~ area. The first three bvtes in the character ~ area are the repetition mac.k for that character The character image generator examines the first hit of the three byte mask which will alwavs equal 0, since an initial print slice of data has to be fetched from the character gener~tor. After fetching the initial print slice the character generator will then e~amine the next bit of the repetition mask. If the hit is a l then the print slice that was previouslv fetched is to be printed again and no fetch o~ pr.int sli.ce data occurs. ~s long as the repetltion mask bit for a print slic~ is a l, no print slice data .is fetched from the character generator. When a pri.nt slice has a repetition mas]c hit equal to 0, then the print slice to he printed is a new print slice that. must be fetched from the character generator.
From the above ~escription it will be ur.cerstood by those having skill in the art. that according to the present i.nvention, characters mav be stored in a printer with reduced character storage aeneration size compared to prior art storage techniques. ~v storing only the non-repet.itive bit slices and the unique mask of the present invention, various character pitches and bidirectlonal printing may also be accommodated ~^?ith little overhead.
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that variou.s other changes in form ard cetail may be made ~ithout departing from the spirit and scope of the invention.

CT~-87-003 13

Claims (8)

1. A method of constructing a fully formed character out of print slices for a matrix printer comprising the steps of:

(a) selecting a character to be printed from a plurality of characters;
(b) Selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(c) selecting a mask, associated with said compressed character, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or second state, each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character;
(d) testing each bit of said mask, to detect for either said first state or said second state;
(e) fetching a new one of said first or unique print slices, when said first state is detected;
(f) omitting the previous step when said second state is detected; and (g) printing the fetched print slices.
2. A method of constructing a fully formed character out of print slices for a matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of characters;
(b) selecting a pitch, for said character to be printed, from a plurality of pitches;

?-87-003 (c) selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(d) selecting a mask, determined by said selected character to be printed and said selected pitch, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or second state, each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character;
(e) testing each bit of said mask, to detect for either said first state or said second state;
(f) fetching a new one of said first or unique print slices, when said first state is detected;
(g) omitting the previous step when said second state is detected; and (h) printing the fetched print slices.
3. A method of constructing a fully formed character out of print slices for a bidirectional matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of characters;
(b) selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character, (c) selecting a mask, associated with said character to be printed, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or second state, each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed characters;
(d) determining whether said selected character is to be printed in either a forward direction or a reverse direction;
(e) testing a first bit of said mask and thereafter testing the remaining bits of said mask in a forward order for said forward direction and in a reverse order for said reverse direction to detect for either said first state or said second state;
(f) fetching a new one of said first or unique print slices, when said first state is detected;
(g) omitting the previous step then said second state is detected; and (h) printing the fetched print slices.
4. A method of constructing a fully formed character out of print slices for a bidirectional matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of characters;
(b) selecting a pitch, for said character to be printed, from a plurality of pitches;
(c) selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(d) selecting a mask, associated with said character to be printed and said selected pitch, from a plurality of said masks, each of said mask having a plurality of bits in either a first condition or a second condition each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character;

(e) determining whether said selected character is to be printed in either a forward direction or a reverse direction;
(f) testing a first bit of said mask and thereafter testing the remaining bits of said mask in a forward order for said forward direction and in a reverse order for said reverse direction to detect for either said first condition or said second condition;
(g) fetching a new one of said first or unique print slices when said first condition is detected;
(h) omitting the previous step when said second state is detected; and (i) printing the fetched print slices.
5. A method for constructing a full formed character out of print slices for a matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of characters;
(b) selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said full formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(c) selecting a mask, associated with said character to be printed, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or second state, each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character;
(d) testing each bit of said mask, to detect for either said first state or said second state;
(e) fetching a new one of said first or unique print slices, when said first state is detected;
(f) storing the fetched print slices in a print slice buffer;

(g) duplicating the fetched print slice and storing said duplicated print slice in said print slice buffer when said second state is detected; and (h) printing said print slice buffer, when said print slice buffer is full.
6. A method for constructing a full formed character out of print slices for a matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of character;
(b) selecting a pitch, for said characters to be printed, from a plurality of pitches;
(c) selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(d) selecting a mask, determined by said selected character to be printed and said selected pitch, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or a second state each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character (e) testing each bit of said mask, to detect for either said first state or second state;
(f) fetching a new one of said first or unique print slices, when said first state is detected;
(g) storing the fetched print slice in a print slice buffer;
(h) duplicating and storing the fetched print slice in said print slice buffer when said second state is detected; and (i) printing said print slice buffer when said buffer is full.
7. A method for constructing a fully formed character out of print slices for a bidirectional matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of characters;
(b) selecting a compressed character, associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(c) selecting a mask, associated with said character to be printed, from a plurality of said masks each of said masks having a plurality of bits in either a first state or a second state each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bit of said mask and the number of slices of said fully formed character;
(d) determining whether said selected character is to be printed in either a forward direction or a reverse direction;
(e) testing a first bit of said mask and thereafter testing the remaining bits of said mask in a forward order for said first direction and in a reverse order for said second direction to detect for either said first state or said second state;
(f) fetching a new one of said first or unique print slices, when said first state is detected;
(g) storing the fetched print slice in a print slice buffer;
(h) duplicating and storing the fetched print slice in said print slice buffer when said second state is detected; and (i) printing said print slice buffer when said buffer is full.
8. A method for constructing a full formed character out of print slices for a bidirectional matrix printer comprising the steps of:
(a) selecting a character to be printed from a plurality of characters;
(b) selecting a pitch, for said character to be printed, from a plurality of pitches;
(c) selecting a compressed character associated with said selected character, containing a set of only the first print slice of a series of repetitive print slices and any unique print slices of said fully formed character wherein said set of print slices of said compressed character are fewer in number than said print slices of said fully formed character;
(d) selecting a mask, determined by said selected character to be printed and said selected pitch, from a plurality of said masks, each of said masks having a plurality of bits in either a first state or a second state each of said bits being associated with one of said print slices so that there is a one-to-one correspondence between the number of bits of said mask and the number of slices of said fully formed character;
(e) determining whether said selected character is to be printed in either a forward direction or a reverse direction;
(f) testing a first bit of said mask and thereafter testing the remaining bits of said mask in a forward order for said forward direction and in a reverse order for said reverse direction to detect for either said first state or said second state;
(g) fetching a new one of said first or unique print slices, from a group of print slices associated with said character to be printed, when said first state is detected;
(h) storing the fetched print slice in a print slice buffer;
(i) duplicating and storing the fetched print slice in said print slice buffer when said second state is detected; and (j) printing said print slice buffer when said buffer is full.
CA000560860A 1987-04-01 1988-03-08 Method and apparatus for generating a character image Expired - Fee Related CA1301365C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US03/3296 1987-04-01
US07/033,296 US4942390A (en) 1987-04-01 1987-04-01 Method and apparatus for generating a character image

Publications (1)

Publication Number Publication Date
CA1301365C true CA1301365C (en) 1992-05-19

Family

ID=21869604

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000560860A Expired - Fee Related CA1301365C (en) 1987-04-01 1988-03-08 Method and apparatus for generating a character image

Country Status (7)

Country Link
US (1) US4942390A (en)
EP (1) EP0284980B1 (en)
JP (1) JPH0723008B2 (en)
AU (1) AU603198B2 (en)
BR (1) BR8801577A (en)
CA (1) CA1301365C (en)
DE (1) DE3882063T2 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02143874A (en) * 1988-09-16 1990-06-01 Ncr Corp Printing controller for dot printer
DE68927008T2 (en) * 1988-09-26 1997-03-20 Oki Electric Ind Co Ltd METHOD FOR COMPRESSING AND DECOMPRESSING DOT MATRIX CHARACTERS
JP3016515B2 (en) * 1989-01-31 2000-03-06 キヤノン株式会社 Character processing apparatus and method
JPH0396996A (en) * 1989-09-08 1991-04-22 Tokyo Electric Co Ltd Character output device
US5471676A (en) * 1989-10-17 1995-11-28 Nakajima All Precision Co., Ltd. Character data compressing method and character modifying method
JP2647226B2 (en) * 1990-03-23 1997-08-27 沖電気工業株式会社 Dot pattern compression method and decompression method
JPH04237099A (en) * 1991-01-21 1992-08-25 Mitsubishi Electric Corp Screen display element
US5548687A (en) * 1992-04-30 1996-08-20 Ricoh Company, Ltd. Method and apparatus for controlling a printer using the N/2r format
US5420965A (en) * 1992-06-05 1995-05-30 Software Projects, Inc. Single pass method of compressing data transmitted to command driven terminal
US5483625A (en) * 1993-04-26 1996-01-09 Hewlett-Packard Company Method and apparatus for adjusting density in digital images
EP0655706B1 (en) * 1993-11-29 2003-05-14 Canon Kabushiki Kaisha A data transfer circuit and a recording apparatus and method
EP0672982B1 (en) * 1994-03-18 2002-07-31 Hewlett-Packard Company, A Delaware Corporation Printer system with compressed font procedure that enables memory conservation
US5519824A (en) * 1994-03-18 1996-05-21 Timex Corporation System and method for storing and displaying font data representing fixed-width and compressed characters
US5535311A (en) * 1994-07-28 1996-07-09 Hewlett-Packard Company Method and apparatus for image-type determination to enable choice of an optimum data compression procedure
JPH11283043A (en) * 1998-03-27 1999-10-15 Seiko Epson Corp Image forming device, printing device provided with the same and image forming method
US7999950B1 (en) 1998-11-12 2011-08-16 International Business Machines Corporation Method and apparatus for providing backup font support for missing device glyphs
JP5100070B2 (en) * 2005-09-22 2012-12-19 株式会社半導体エネルギー研究所 Method for manufacturing semiconductor device
JP4785625B2 (en) * 2006-06-02 2011-10-05 キヤノン株式会社 Image processing apparatus, image processing method, program, recording medium, and system
CN114179505B (en) * 2020-09-14 2023-01-10 森大(深圳)技术有限公司 Print data processing method, device, equipment and storage medium

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1162398B (en) * 1961-10-24 1964-02-06 Ibm Compressor for data consisting of bits with different values
US3893100A (en) * 1973-12-20 1975-07-01 Data Royal Inc Variable size character generator with constant display density method
DE2460147C2 (en) * 1974-12-19 1983-05-05 Ibm Deutschland Gmbh, 7000 Stuttgart Arrangement for decompressing compressed information for characters to be displayed which are composed of black and white areas
US4181973A (en) * 1977-12-23 1980-01-01 International Business Machines Corporation Complex character generator
US4168489A (en) * 1978-02-13 1979-09-18 Lexitron Corp. Full page mode system for certain word processing devices
JPS5654489A (en) * 1979-10-09 1981-05-14 Epson Corp Character formation system
US4353653A (en) * 1979-10-19 1982-10-12 International Business Machines Corporation Font selection and compression for printer subsystem
JPS5660983A (en) * 1979-10-25 1981-05-26 Nippon Telegr & Teleph Corp <Ntt> Compression system for dot-string data
JPS57101888A (en) * 1980-12-16 1982-06-24 Sony Corp Character display
US4458333A (en) * 1981-12-21 1984-07-03 International Business Machines Corporation Dot matrix character printing using constrained memory
US4467363A (en) * 1982-09-27 1984-08-21 International Business Machines Corporation Graphic data compression
US4508463A (en) * 1982-11-01 1985-04-02 Wang Laboratories, Inc. High density dot matrix printer
JPS60230867A (en) * 1984-05-02 1985-11-16 Oki Electric Ind Co Ltd Printing system of dot matrix type printer
US4573199A (en) * 1984-05-09 1986-02-25 International Business Machines Corp. Kanji/Chinese font generation by scaling
JPH0643135B2 (en) * 1984-06-05 1994-06-08 沖電気工業株式会社 Dot printer dot pattern storage method
JPS6158749A (en) * 1984-08-31 1986-03-26 Toshiba Corp Printing processing apparatus
JPS6277633A (en) * 1985-09-30 1987-04-09 Hitachi Ltd Printer controller
DE3706468A1 (en) * 1987-02-27 1988-09-08 Siemens Ag CHARACTER STORAGE METHOD AND ARRANGEMENT FOR REDUCING THE REDUNDANCY OF CHARACTERS FOR MATRIX PRINTERS WITH MULTIPASS PRINTING

Also Published As

Publication number Publication date
JPH0723008B2 (en) 1995-03-15
AU1382588A (en) 1988-10-06
BR8801577A (en) 1988-11-08
EP0284980B1 (en) 1993-06-30
JPS63251248A (en) 1988-10-18
AU603198B2 (en) 1990-11-08
EP0284980A2 (en) 1988-10-05
DE3882063D1 (en) 1993-08-05
US4942390A (en) 1990-07-17
EP0284980A3 (en) 1990-06-13
DE3882063T2 (en) 1994-02-03

Similar Documents

Publication Publication Date Title
CA1301365C (en) Method and apparatus for generating a character image
US4254409A (en) Control system for full line variable height and width character and symbol printing
US3893100A (en) Variable size character generator with constant display density method
US4187031A (en) Korean (hangul) electronic typewriter and communication equipment system
US7753283B2 (en) On-demand printing of coding patterns
JP3504331B2 (en) Print quality improvement method and apparatus for improving dot print image quality
US4600920A (en) Display device for producing overlapped display of character patterns
JPH0337697A (en) Character generator
JPS60195637A (en) Character generator for dot matrix printer
JPH06222747A (en) Font compression device and font restoration device
CA1066949A (en) Impact line printer having graphics plotting capability
JPS58193582A (en) Character generation method and apparatus
GB2157865A (en) Dot printer
JPS6230436B2 (en)
JPH0226234B2 (en)
JPS59167748A (en) Information storage device
JPS61209167A (en) Printing control circuit in wire dotline printer
KR890003283B1 (en) The korean alphabet printing method
JP3109727B2 (en) Character processing method and character processing device
JPH05323938A (en) Character pattern generator
JPS61292674A (en) Character pattern generator
JPH058454A (en) Bar code printer
JPS62262089A (en) Character display system
JPH02287739A (en) Memory access method
CN85101056A (en) Character encoder and code translator

Legal Events

Date Code Title Description
MKLA Lapsed