Method and apparatus for generating character patterns in an output memory

Abstract: An output apparatus comprises a discriminating means to discriminate whether a pattern to be developed at a predetermined position in an output memory (12a) was already developed in the memory (12a) or not; a copying means for copying an already developed same character pattern at the predetermined position; a memory (12b) to store code information, attribute information, and position information of the pattern developed in the output memory; a cache memory to store the most frequently used patterns; and a checking means to check whether the pattern in the output memory overlaps another pattern or not.

Description: The present invention relates to a pattern developing method and, more particularly, to outputting method and apparatus in which character symbol patterns corresponding to information comprising character symbol codes and their decoration data which have been supplied are generated and the character symbol patterns are sequentially developed at the relevant positions in an outputting memory. In recent years, due to the development of a DTP (Desk Top Publishing), a more complicated print format is required and many characters of different sizes are needed. To individually prepare images of tens of kinds of character sizes for this purpose, a memory of an extremely large capacity is necessary, so that an efficiency is low. To solve such a drawback, in recent years, there is used a method whereby an outline or a frame of a character is defined by a set of numerical value coordinates and is developed by a numerical value arithmetic operation as necessary and is converted into an image and is generated. Such character data is called an outline font, a vector font, or the like. Generally, however, it takes a fairly long calculating time to develop from the vector data to the image. In general, therefore, a method called a character cache in which the image of the character which has been developed is temporarily stored and is again used is , commonly used. In the character cache mechanism, however, since it is necessary to store image data, a necessary memory capacity is large. Therefore, in the actual system, many characters cannot be stored. On the other hand, even if the memory capacity is sufficiently large, retrieving and updating efficiencies of the cache deteriorate. Therefore, it is improper to set the memory capacity to a remarkably large capacity. Generally, type styles and sizes which are used are different every user or every job. Therefore, in the character cache mechanism of a printer (laser beam printer or the like) which is commonly used by a few host machines, the character cache is updated for a period of time when outputs of a plurality of users are alternately generated. For the user whose printing order has come, a hit ratio of the character patterns registered in the cache memory decreases, so that the effect of the character cache mechanism is not obtained. As mentioned above, the memory assigned to the character cache is not effectively used and an efficiency is low. Particularly, such a phenomenon is remarkable in Japanese having a large number of characters. In an image forming apparatus which is frequently accessed from a plurality of users or jobs, it will be understood from the above description that the ordinary character font cache mechanism is not so effective in terms of an amount of consumption of the memory. A printing apparatus with a conventional font cache as described above is proposed for example in GB-A-2218550. Another document EP-A-0339654 proposes that vector font processing time can be reduced by registering the position where a character pattern has previously been written to the page memory, and copying the pattern to a new position in the page memory each time the same pattern is desired to be written. The present invention provides an output apparatus comprising: memory means for storing character pattern information; pattern generating means for generating character pattern information based on vector font data; and writing means for writing new character pattern information at a desired position in said memory means using previously stored character pattern information if identical character pattern information has been stored elsewhere in said memory means, and for writing character pattern information generated by said pattern generating means in said memory means if no such identical character pattern information is stored elsewhere in said memory means, characterised in that said apparatus further comprises means for discriminating whether the previously stored identical character pattern information overlaps another pattern information; and even if the identical character pattern information has been stored previously in said memory means, said writing means executes the writing without using the identical character pattern information when said discriminating means discriminates that the identical character pattern information overlaps another pattern information. The invention further provides an output method in which memory means is used for storing character pattern information generated from vector font data, the method comprising writing new character pattern information at a desired position in said memory means using previously stored character pattern information if identical character pattern information has been stored elsewhere in said memory means, and writing character pattern information generated based on vector font data in said memory means if no such identical character pattern information has been stored elsewhere in said memory means, characterised by: discriminating whether the previously stored identical character pattern information overlaps another pattern information; and even if the identical character patten information has been stored previously in said memory means, writing the new character pattern information without using the previously stored identical character pattern information when the identical character pattern information overlaps another pattern information. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block constructional diagram,of a laser beam printer of an embodiment; Fig. 2 is a diagram showing an example of a character attribute area in the embodiment; Fig. 3 is a flowchart for a developing process of a character pattern in an apparatus of the embodiment; Fig. 4 is a diagram showing the relation between a page buffer and a character attribute area in the embodiment; Fig. 5 is a diagram showing a character attribute area in the second embodiment; Fig. 6 is a flowchart showing changed portions of a character pattern developing process in the second embodiment; Fig. 7 is a diagram showing a character attribute area in the third embodiment; Fig. 8 is a flowchart showing changed portions of a character pattern developing process in the third embodiment; Fig. 9 is a flowchart showing changed portions of a character pattern developing process in the fourth embodiment; and Fig. 10 is a flowchart in the case where a cache memory is added to the invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of the invention will be described in detail hereinbelow with reference to the drawings. The invention can be applied to an apparatus or a system or can be also accomplished by supplying a program to an apparatus or a system. Fig. 1 shows a block constructional diagram of an image processing section of a laser beam printer of an embodiment. In the diagram, reference numeral 10 denotes a CPU to control a whole apparatus; 11 a ROM in which operation processing procedures (flowcharts of Figs. 3, 6, and 8) of the CPU 10 have been stored; 12 a, RAM which is used as a work area of the CPU 10 and has a page buffer 12a to develop image data of one page and a character attribute area 12b as shown in the diagram; 13 a font ROM in which vector font data (data of the coordinate format) has been stored; 14 a video interface (video I/F) to supply the data which has been developed in the page buffer 12a to a printer engine section (not shown) as a video signal; and 200 to 203 input/output units (hereinafter, abbreviated to I/O) to receive print data from an outside. A plurality of host computers can be connected as shown in the diagram. Each of the above component elements is electrically connected to a system bus 100 (comprising a data bus, an address bus, and a control bus). In the above construction, the print data which has been received through the I/O is analized and a character pattern is generated in accordance with a designated control command and developed into the page buffer 12a. After the image data of one page was developed into the page buffer 12a, the image data is sequentially supplied to the printer engine through the video I/F 14. It is now assumed that the operation of the printer engine is executed in accordance with a well-known electrophotograph technique. The operation is not described in detail here. Fig. 2 shows the content in the character attribute area 12b of the embodiment. Among the character patterns to be developed into the page buffer 12a, attribute information of characters which are not yet drawn is stored into the character attribute area 12b. The diagram shows the content of the attribute information corresponding to one of those characters. As shown in the diagram, one attribute information includes: a code 20 to store a character code; information 21 regarding a size of character and an attribute such as a tilted type and the like; a coordinate position 22 (X and Y coordinates in the page buffer 12a or an address and bit position information) in the page buffer 12a of the character pattern; and size information 23 in the vertical and lateral directions of a rectangular area of the character pattern. Fig. 4 shows an example of a mapping of the page buffer 12a. The address continuously increases in the X direction and the address increases by "K" at a time in the Y direction. Bits in a word are arragned in a line in the lateral direction. For instance, in the case of forming an image for a printer to output the image onto a paper of the A4 size at a resolution of 300 d.p.i., coordinate points such as X ≃ 2500 and Y ≃ 3600 are necessary. Therefore, assuming that one word consists of 16 bits, a value of K is set to about 160. Data of a rectangular area is transferred on a bit unit basis instead of a simple word unit basis, so that a bit shift or the like is needed. However, in the recent CPU, a command for such a bit shift or the like is supported and the data can be processed at a high speed. A high-speed process can be realized by adding a hardware for a graphic process or a special LSI as necessary. A procedure for drawing a character in the embodiment will now be described with reference to a flowchart of Fig. 3. First, in step S1, a check is made to see if a character of the same character code and the same attribute (including the size) as those of a character to be drawn (developed) has already been developed in the page buffer 12a or not by retrieving the character attribute area 12b. If the character having the same character code and the same attribute exists, step S2 follows and the coordinates of such a character are calculated. Step S3 then follows and an area to be transferred is determined on the basis of the size information 23 in the vertical and lateral directions of the rectangular area of the character pattern. After that, in step S4, the pattern of the rectangular image obtained at the developing position (printing position) of the target character is transferred. In the page buffer 12a of the construction as shown in Fig. 4, the addresses in the X direction are continuous. Even in the case of transferring by a hardware or by a software, the construction is very simple. However, the address in the Y direction is added on a predetermined value unit basis. According to the method of the invention, a common value can be used as an addition address value in the Y direction because the transfer destination side of the data transfer and the data transferring side are in the same page memory, so that the construction is simple. However, different addition values are needed in the case of the conventional character cache mechanism. If it is determined in step S1 that the target character is not yet registered in the character attribute area 12b, that is, it is not yet cached, step S5 follows and the printing position of the target character in the page buffer 12a is calculated. In step S6, a check is made to see if another figure has been drawn in the rectangular area in the page buffer 12a calculated from the attribute data of the designated character or not. If such a figure has already existed at the position where the data is newly printed (in the case of collision), a normal character image cannot be transferred at a stage at which the same character will be developed later. In such a case, therefore, the processing routine advances to step S9 and the character pattern is merely drawn at the calculated position. If any other figure doesn't exist in the developing area of the target character, namely, if the character pattern can be used as an image of a character cache, step S7 follows and the vector data is selected on the basis of the character code and the attribute-data and the character is drawn in the page memory (the same as step S9). In step S8, further, the attribute data is registered into each area in the character attribute area 12b. The laser beam printer in the embodiment draws not only characters but also graphics. If the necessity of the writing operation has occurred in the rectangular area registered in the character attribute area 12b when a graphic pattern is drawn, the image of the character is broken. In such a case, by eliminating the information regarding such a character from the area 12b, the transfer of the wrong image is prevented. In this case, the collision of the character and the figure is detected by comparing the position of the image of the character of the attribute data with the rectangular area instead of the inside of the page buffer 12a. This is because in the case where a character pattern has been printed onto a blank portion in the rectangular area, the collision cannot be detected in the page memory. A graphic process such as drawing of a curve, painting, or the like can be finally dissolved until a combination of drawing of straight lines. By comparing the straight line and the rectangle, the collision of the figure and the character is detected. [Second embodiment] In the foregoing first embodiment, in the case where after a charachter had been drawn, a graphic pattern has been overwritten onto the rectangular area of the character, the character is deleted from the storage area of the character attribute, so that the cache effect becomes invalid. That is, if the character is again needed, it is necessary to develop from the vector data to the image. In the second embodiment, therefore, a plurality of coordinate positions 22 are prepared in the character attribute area 12b. Even if one character has collided with the graphic pattern and has been deleted, the data of another image area construction is used to thereby continue the cache effect. In the above case, the character attribute area 12b has a content as shown in Fig. 5 In the diagram, four coordinate positions 22-1 to 22-4 are provided. However, the number of position data can be varied within an arbitrary range. Among the four position data, as position data which doesn't designate a character in the page buffer 12a, special coordinate values or the like which actually cannot exist are stored, thereby enabling such position data to be distinguished. In the above case, the process in step S4 in the printing procedure of Fig. 3 is changed as shown in Fig. 6. In step S61, a check is made to see if another figure exists at the developing position (printing position) of the target character or not. If the presence of another figure has been detected, it is meaningless to register the development coordinates of the target character. Therefore, in this case, the processing routine advances to step S62 and the pattern of the rectangular area stored at a coordinate position 22-i in the character attribute area 12b is transferred to the developing position of the target character. At this time, since another figure exists near the developing position of the target character, when the character pattern is developed at such a position, the OR is calculated and the character pattern is developed. This is because unless otherwise, another figure at that position is deleted. On the other hand, if the existence of another figure is not detected at the developing position (printing position) of the target character in step S61, step S63 follows and a process similar to step S62 is executed. In this case, there is no need to calculate the OR. After that, step S64 follows and a check is made to see if in the table of the target character in the character attribute area 12b, an idle pointer which indicates nothing exists at the coordinate positions 22-1 to 22-4 or not. If there is no idle pointer, the processing routine if finished. If an idle pointer exists, step S65 follows and the coordinates of the development destination side of the target character are registered to the idle pointer. By the above processes, even if a plurality of data of character images have been prepared and even if either one of the character images has collided with another figure, the cache effect is continued. In this case, if all of the coordinate position areas 22-1 to 22-4 are empty, the whole attribute data of the characters is eliminated from the character attribute area 12b. By the above construction, a ratio at which the cache effect of the character is continued rises and the cache can be efficiently used. [ Third embodiment ] Generally, a probability such that a character drawn collides with another figure drawn and cannot be used as a cache image is higher for a character which has been drawn at the initial stage. Therefore, as a third embodiment, there is shown an example in which the position data of a character is sequentially replaced to the coordinates of the new character, thereby maintaining the effect of the cache. In the third embodiment, a pointer to update the address is further added to the attribute data of the character. Fig. 7 shows a structure of the attribute data in the character attribute area 12b in the third embodiment. One of a plurality of coordiate position data is indicated by a pointer 26 to update the address. In the third embodiment, if the pointer of the address in the page buffer in which the character pattern has been stored is set to a value which is the power of 2, the system is simplified. In the third embodiment, therefore, four coordinate positions 22-0 to 22-3 shown in the diagram are set and a counter of two bits is used as a pointer 26. Each time the cached character is used, a check is made to see if the new character drawn has collided with another figure or not (corresponding to step S6 in Fig. 3 and step S61 in Fig. 6). If NO, the coordinates of the character image indicated by the pointer 26 are updated to the coordinates of the character which has newly been drawn and the value of the pointer 26 is counted up. In the case of the third embodiment, the process in step S4 in Fig. 3 is likewise changed as shown in Fig. 8. In step S81, the coollision is detected and a check is made to see if the developing position area of the target character can be registered as a character image on the transferring side or not. In steps S82 and S83, the rectangular area of the character image is transferred to the developing position (printing position). In the case where the newly developed character is transferred as a source of the character image, step S84 follows and the coordinate position which has at present been developed is registered into the coordinate position 22-i indicated by the pointer 26. In the next step S85, the value of the pointer 26 is counted up so as to indicate the new coordinate position and is updated by the following process. The address registered as a character cache in the page memory is sequentially updated by the above construction, thereby maintaining the character image. Thus, a probability such that the cache is eliminated further decreases. [Fourth embodiment] Generally, when a graphic pattern is drawn, it takes a long arithmetic operating time to detect the collision with the rectangular area of a character image. Therefore, if a character is first drawn (developed) and a graphic pattern is finally drawn to thereby omit the collision detecting step, the processing speed is remarkably improved. In the fourth embodiment, it is possible to select whether the collision detecting step is executed or not by a command given from an external apparatus such as a computer or the like. Practically speaking, a variable F indicating whether the collision detection is performed or not is provided in a predetermined address in the RAM. A value of the variable F is set to ON or OFF by an ON command of the collision detection and an OFF command of the collision detection which are supplied from the input sections shown by the I/O units 200 to 203 in Fig. 1. According to the above process, the collision detecting processes shown in step S6 in Fig. 3, step S61 in Fig. 6, step S81 in Fig. 8, and the like are changed as shown in Fig. 9. That is, in the case where the variable F is set to OFF and the collision detecting routine is not used, a processing routine B corresponding to the case where no collision occurs is always executed. When the variable F is set to ON, that is, if the collision detecting process is executed, the ordinary collision detecting routine is performed. The occurrence of the collision is discriminated and either one of the process B in the case where no collision occurs and the process C in the case where the collision has occurred is executed. There is no need to detect the collision under a special condition such that a character is printed after all of the figures were drawn or that, contrarily, a figure is drawn after all of the characters were printed or the like. Therefore, as a default value of the variable F, ON is selected and, ordinarily, the collision detecting mechanism is always made operative. The processing speed of the image forming system can be improved by the fourth embodiment. According to the embodiment, the memory capacity can be saved and a cache having a high executing performance can be formed. Since it is sufficient to use only the storage area of the character attribute as a use area in the memory, an overflow of the cache hardly occurs in such a page. The producing speed of the character at the first time and the transferring effect of the character can be improved. In the ordinary character cache mechanism, a rectangular area is provided in the character cache and a character image is first drawn there and, after that, the image is transferred to the print area in the page memory. That is, this is because it takes an additional time corresponding to only such a transferring time according to conventional method. As described above, according to the invention, to process to develop the character symbol pattern into the outputting memory can be efficiently executed. It is also possible to combine the ordinary cache memory and the invention and to store characters whose addresses are frequently updated, namely, whose use frequencies are high in the invention into the cache memory. In such a case, retrieval frequency data in step S1 in Fig. 3 is stored in the RAM 12 in Fig. 1 or the like. When the use frequency is relatively high, it is registered into a cache memory (not shown) (provided in, for example, the RAM 12 in fig. 1). With the above construction, only the necessary minimum number of patterns whose appearing frequencies are very high can be registered into the cache memory. The patterns in the outputting memory other than those patterns are used. Therefore, the conventional drawbacks can be sufficiently solved. In this case, when executing a pattern development, as shown in Fig. 10, a check is first made to see if a pattern to be developed exists in the cache memory or not (step S0 in fig. 10) before step S1 in Fig. 3 is performed. If YES, the developing process is executed (step S10 in Fig. 10). If NO, a check is made in step S1 in Fig. 3 to see if such a pattern exists in the outputting memory or not.

Claims: An output apparatus comprising: memory means (12a) for storing character pattern information; pattern generating means (CPU 10) for generating character pattern information based on vector font data; and writing means (CPU 10; S1, S4, S7) for writing new character pattern information at a desired position in said memory means using previously stored character pattern information if identical character pattern information has been stored elsewhere in said memory means, and for writing character pattern information generated by said pattern generating means in said memory means if no such identical character pattern information is stored elsewhere in said memory means, characterised in that said apparatus further comprises means (CPU 10; S6) for discriminating whether the previously stored identical character pattern information overlaps another pattern information; and even if the identical character pattern information has been stored previously in said memory means, said writing means executes the writing without using the identical character pattern information when said discriminating means discriminates that the identical character pattern information overlaps another pattern information. An apparatus according to claim 1, further comprising: registration means (CPU 10; 126; S8) for registering a position (22, 23) at which character pattern information written by said writing means is developed as corresponding to a given character type (20, 21). An apparatus according to claim 2 wherein said registration means does not register the position of the new character pattern information when that position overlaps previously stored pattern information in the memory means (S6). An apparatus according to claims 1, 2 or 3, wherein said registration means de-registers a registered position in the event that subsequently written pattern information overlaps the registered position. An apparatus according to claim 2, 3 or 4, wherein said registration means provides for a plurality of positions (22-1 to 22-4) to be registered as corresponding to the given character type. An apparatus according to claim 5, wherein the recently written positions are registered for the given character type in preference to less recently written positions. An apparatus according to claim 6, wherein the registration means includes registration spaces for a predetermined number of positions to be registered as corresponding to the given character type and means (26) whereby said registration spaces are updated in sequence. An apparatus according to any preceding claim, further comprising means (14) for outputting the pattern information written in said memory means. An apparatus according to claim 8, wherein said output means comprises a printer. An apparatus according to any preceding claim, further comprising means (F) for instructing whether said discriminating means is to be actuated or not. An apparatus according to any preceding claim, wherein if previously stored pattern information exists in an area where said new character pattern information is to be written, said writing means writes an OR combination of the previously stored pattern information and the new character pattern information. An apparatus according to any preceding claim, wherein said memory means comprises a page memory. An output method in which memory means (12a) is used for storing character pattern information generated from vector font data, the method comprising writing (S1, S4) new character pattern information at a desired position in said memory means using previously stored character pattern information if identical character pattern information has been stored elsewhere in said memory means, and writing (S7, S9) character pattern information generated based on vector font data in said memory means if no such identical character pattern information has been stored elsewhere in said memory means, characterised by: discriminating (S6) whether the previously stored identical character pattern information overlaps another pattern information; and even if the identical character pattern information has been stored previously in said memory means, writing the new character pattern information without using the previously stored identical character pattern information when the identical character pattern information overlaps another pattern information. A method according to claim 13, wherein the position (22, 23) at which the new character pattern information is developed is registered (S8) as corresponding to a given character type (20, 21). A method according to claim 14 wherein the position of the new character pattern information is not registered when that position overlaps previously stored pattern information in the memory means (S6). A method according to claims 13, 14 or 15, wherein a registered position is de-registered in the event that subsequently written pattern information overlaps the registered position. A method according to claim 14, 15 or 16, wherein a plurality of positions (22-1 to 22-4) are registered as corresponding to the given character type. A method according to claim 17, wherein only the most recently written positions are registered for the given character type. A method according to claim 18, wherein the registration spaces are provided for a predetermined number of positions to be registered as corresponding to the given character type, and wherein said registration spaces are updated in sequence. A method according to any preceding claim, further comprising outputting (14) the pattern information written in said memory means. A method according to claim 20, wherein said outputting is by means of a printer. A method according to any of claims 13 to 21, further comprising a preliminary step of instructing whether said discriminating means is to be actuated or not. A method according to any of claims 13 to 22, wherein if previously stored pattern information exists in an area where said new character pattern information is to be written, said OR combination of the previously stored pattern information and the new character pattern information is written. A method according to any of claims 13 to 23, wherein said memory means comprises a page memory.

Inventors: SHOJI ATSUSHI, SHOJI, ATSUSHI, SHOJI, ATSUSHI, CANON KABUSHIKI KAISHA
Applicants: CANON KK, CANON KABUSHIKI KAISHA
Application year: 1991
Main classification: G06K15
IPC codes: G09G5, G06F3, B41J2, G06K15, B41J5