(19)
(11) EP 1 113 413 A2

(12) EUROPEAN PATENT APPLICATION

(43) Date of publication:
04.07.2001 Bulletin 2001/27

(21) Application number: 00311648.0

(22) Date of filing: 22.12.2000
(51) International Patent Classification (IPC)7G09G 5/36
(84) Designated Contracting States:
AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR
Designated Extension States:
AL LT LV MK RO SI

(30) Priority: 28.12.1999 US 473401

(71) Applicant: GE Medical Systems Global Technology Company LLC
Waukesha, Wisconsin 53188 (US)

(72) Inventors:
  • Turek, Matthew W.
    Glenville, New York 12302 (US)
  • Stoval, William Murray (III)
    Menomonee Falls, Wisconsin 53051 (US)

(74) Representative: Pedder, James Cuthbert 
GE London Patent Operation, Essex House, 12/13 Essex Street
London WC2R 3AA
London WC2R 3AA (GB)

   


(54) Workstation with text font cache


(57) A workstation performs one or more application programs which generate text rendering commands identifying characters. A font cache stores font bitmaps for a plurality of different fonts and these are used to render characters on a display . New font bitmaps are generated when different fonts are identified in a text rendering command and the new font bitmaps are added to the font cache or replace less used font bitmaps.


Description


[0001] The field of the invention is display systems, and particularly the display of text characters in workstations and the like.

[0002] In order to display text on a screen it is necessary to generate a bitmap of each character in the selected font. Generating the font bitmaps is a slow process compared to actually rendering the text on the display screen. This is a particular problem in object oriented architectures with distributed rendering where multiple font bitmap copies may be produced. This generation of font bitmaps can become a bottleneck in high performance graphic workstations.

[0003] The problem is compounded when multiple applications using many different fonts are run on the workstation. This can result in having multiple copies of the font bitmaps stored in memory, since each application generates the font bitmaps which it needs to display text. Therefore, present systems that display textual information can be very inefficient in both the use of processing time and of available memory space.

[0004] The present invention is a method and means for rendering text on a display using a plurality of different fonts. Bitmaps for each font being displayed are stored in a font cache, and as text rendering commands are generated to display a character of a particular font, the corresponding bitmap stored in the font cache is used. When a new font is requested by a text rendering command, the corresponding set of bitmaps for that font are generated and stored in the font cache. When the font cache is full, the least often used font is removed from the font cache to make room for new fonts.

[0005] The invention will now be described in greater detail, by way of example, with reference to the drawings, in which:-

Fig. 1 is a perspective view of a workstation which has been modified to practice the preferred embodiment of the invention;

Fig. 2 is an electrical block diagram of the workstation of Fig. 1;

Fig. 3 is an electrical block diagram of a graphics controller which forms part of the workstation of Figs. 1 and 2; and

Fig. 4 is a schematic representation of data structures stored in the workstation of Fig. 1 and used to practice the present invention; and

Fig. 5 is a flow chart of the steps performed by the workstation of Fig. 1 to practice the preferred embodiment of the invention.



[0006] The preferred embodiment of the invention is employed in a workstation. As shown in Fig. 1 the workstation includes a mini-tower 10 which houses a processor and associated circuitry, memory, and peripheral interface circuits. One of the peripheral devices is a commercially available CRT monitor 12 which connects to a graphics circuit housed in the mini-tower 10, and another peripheral device is a keyboard and mouse 14 that connects to a PCI-based controller in the mini-tower 10. An operator may input data through the keyboard and control the position of a cursor on the monitor display 12 using the mouse. The workstation 10 may operate as a stand alone graphic display system, or it may be connected to receive digitised image data directly from a medical imaging system such as an x-ray system, x-ray CT system, MRI system, PET scanner system or nuclear medicine system. The workstation 10 typically contains application programs which perform image processing functions, such as, filtering the medical images, transforming the size and orientation of the medical images and adding textual information to the medical images.

[0007] Referring particularly to Fig. 2, the workstation includes a processor 20 which executes instructions stored in a memory 22. The processor 20 is a commercially available device sold by Sun Microsystems, Inc. under the trademark UltraSPARC-IIi. It incorporates on-chip memory and I/O control to facilitate system integration. It is a superscalar processor implementing the SPARC-V9 64-bit RISC architecture and executing the instruction set sold commercially under the trademark "VIS". It also includes an integral PCI bus driver which provides a direct interface with a 32-bit PCI bus 24. It also includes integral memory management circuitry for handling all external memory 22.

[0008] The PCI bus 24 is an industry standard bus that transfers 32-bits of data at 33MHz between the processor 20 and a number of peripheral controller cards. These include a PCI EIDE controller 26 which provides a high-speed transfer of data to and from a CD ROM drive 28 and a disc drive 30. A keyboard and Ethernet controller 32 supports data transfer with a number of peripheral devices, including input from the keyboard and mouse 14 and communication with Ethernet ports on medical imaging equipment. And finally, a graphics controller 34 couples the PCI bus 24 to the CRT monitor 12 through a standard VGA connection 36.

[0009] Referring particularly to Fig. 3, the graphics controller 34 is interfaced with the PCI bus 24 by a PCI interface 38. The graphics controller 34 provides 8-bit or 24-bit color high performance graphics functions to the user. In the preferred embodiment the graphics functions defined under the standard identified with the Silicon Graphics, Inc. trademark "OpenGL" are supported by the graphics controller 34. The graphics controller 34 includes a frame buffer controller 40 that operates in response to instructions stored in a PROM memory 42 to perform requested graphic functions. These functions include providing the latter half of 3D graphics rendering pipeline functions, providing acceleration for windowing functions and complex graphics applications. It also performs pixel processing to accelerate functionality such as transparency and antialiasing. It also provides rendering acceleration for dot, line, text, triangles, and fill patterns, as well as windowing functions, including fill, scroll, text, two and three dimensional vectors, and polygons.

[0010] Image data which is processed by the frame buffer controller 40 is stored in a frame buffer memory 44. The frame buffer 44 is coupled to the controller 40 by a 36-bit data bus 46, and image data is written to and read from the frame buffer 44 under the direction of control signals and address signals on a control bus 48. The frame buffer memory 44 is also connected to a RAMDAC circuit 50 which converts the digital pixel values stored in the frame buffer memory 44 into analog signals and sends them through standard VGA connection 36 to the monitor 12. The RAMDAC 50 supports the simultaneous display of 8-bit and 24-bit color images and provides video timing for a number of different image resolutions.

[0011] Referring particularly to Fig. 2, medical images may be input to the workstation in a number of ways. In the preferred embodiment the workstation is connected directly to the medical imaging equipment through an Ethernet link. The image data is downloaded to the workstation through the Ethernet controller 32 and stored in memory 22. A number of image processing functions may be performed on the image data in the memory 22. A two-dimensional image may then be displayed on the monitor 12 by transferring a two-dimensional array of pixel data to the graphics controller 34 which automatically produces the corresponding analog signals for the monitor 12.

[0012] Referring particularly to Figs. 3 and 4, the array of image pixel data to be displayed is stored in the frame buffer memory 44. The frame buffer controller 40 operates in concert with the RAMDAC 50 to produce a corresponding display on monitor 12 as indicated at process block 100. Using the keyboard and mouse 14 the operator may create textual information or labels which are to be added to the displayed image as indicated at process block 102. This textual information may be, for example, information concerning the medical imaging system and the prescription used to acquire the image data, or it may be information about the patient or the anatomy depicted in the image.

[0013] When an application running on the workstation requires that text be rendered on the display 12, it produces a text rendering command. This command indicates the particular text font to be used and the particular character within that font. For example, the particular character might be identified by an 8-bit ASCII code. When such a text rendering command is produced, a program indicated in Fig. 5 is performed to render the text and manage the data structures stored in memory as shown in Fig. 4.

[0014] Referring particularly to Fig. 5, when a text rendering command is produced a test is made at decision block 200 to determine if it is the first request of the current session. If so, a font cache object is created as indicated at process block 202 to initialize the required data structures. As shown in Fig. 4, these data structures include a font cache 204 which is a block of memory reserved to store the bitmap data needed to render the characters. The size of this font cache 204 is configurable and can be changed at any time to optimize the workstation performance for the particular tasks being performed. For example, if large amounts of textual information in many different fonts is being displayed on the monitor 12, a larger font cache 204 can be configured by entering appropriate data through keyboard 14.

[0015] In addition to the font cache 204, a number of data structures are initialised that are required to manage the font cache 204. One of these is a use counter 206 which retains a number indicative of the number of times a particular font stored in the font cache 204 has been used. This count is initialised to zero when a font is first requested by a TEXT render command. Another data structure is a time requested number 208 which indicates the last time a particular font stored in font cache 204 was used. It is updated with the value of a real-time clock (not shown) maintained by the workstation each time its associated font stored in font cache 204 is used.

[0016] Text render commands are examined at decision block 210 to determine if the bitmaps for the requested font is stored in the font cache 204. If so, the use counter 206 for the requested font is incremented and its associated time requested data 208 is updated with the current time as indicated at process block 212. The bitmap for the requested character is then read from the font cache 204 as indicated at process block 214 and rendered on the display as indicated at process block 216.

[0017] All text rendering commands regardless of the application are processed using the same font cache object. As a result, only one copy of the bitmaps for any particular font are stored in the workstation memory at any point in time. If the font cache object is used by more than one application, suitable flags and locks are provided to ensure that font bitmap data being used by another application is not replaced. It should be apparent that the present invention may also be used within a single application to prevent duplicate font bitmap data from being produced.

[0018] When a text rendering command requires a font which has not been stored in the font cache 204 as detected at decision block 210, the bitmap data for the newly requested font must be produced as indicated at process block 220. The creation of bitmaps is relatively time consuming process in which the font is loaded into memory from disc drive 30, memory space is allocated for the font bitmaps and each font character is rasterized into a corresponding bitmap. The result is a set of bitmaps along with a list of pointers to their locations in the block of memory in which they are stored.

[0019] The newly created font bitmaps are stored in the font cache 204. As indicated by decision 222, the present contents of the font cache 204 is checked to determine if there is room for the new bitmaps. If so, the newly created font bitmaps are added to the font cache 204 as indicated at process block 224. On the other hand, if the font cache 204 is already full, the use counters 206 for each font currently stored in the font cache 204 are checked to determine the least often used font. As indicated at decision block 226, if there is a single least used font, that font is replaced with the newly created font bitmaps as indicated at process block 228. On the other hand, if two or more fonts have the same use number, their time requested data 208 are checked and the least recently used of the two fonts is identified and replaced as indicated by process block 230. In any case, the newly created font bitmaps are stored in the font cache 204 and the text rendering command is performed as indicated by process blocks 212, 214 and 216 as described above.

[0020] The present invention thus enables a more efficient use of available memory and a reduction in processing needed to generate font bitmaps. The common font cache 204 may be shared by all applications producing text rendering commands, thus requiring only one copy of the font bitmaps being used. Font bitmaps are saved in the font cache 204 as long as memory space therein is available, making them available for later use by the same applications that prompted their generation or other applications. This reduces the instances in which font bitmaps must be generated with a consequent reduction in processing time.


Claims

1. A method for producing text objects on a display, the steps comprising:

a) storing a plurality of sets of font bitmaps in a font cache (204);

b) receiving a text rendering command (200) which identifies a character in a designated font to be displayed;

c) determining (210) if the font bitmap corresponding to the character is stored in the font cache and either

i) reading the corresponding font bitmap (214) from the font cache (204); or

ii) generating another set of font bitmaps (220) corresponding to the designated font and storing (224, 228, 230) the same in the font cache (204), and reading (214) the corresponding font bitmap therein from the font cache; and

d) displaying the character by rendering (216) the font bitmap read from the font cache on a display.


 
2. The method as recited in claim 1 which includes the further steps of:

e) determining if the font cache is full (222); and if it is full;

f) removing one of the sets of font bitmaps (228, 230) stored in the font cache (204).


 
3. The method as recited in claim 2 in which said one set of font bitmaps removed in step f) is the least used set of font bitmaps (228).
 
4. The method as recited in claim 2 which includes:

g) counting (212) the number of times a font bitmap in each set of font bitmaps is read from the font cache; and

the one set of font bitmaps removed in step f) is a set of font bitmaps having the lowest count (228).


 
5. The method as recited in claim 2 which includes:

h) storing (212) the time at which a font bitmap is read from each of said sets of font bitmaps stored in the font cache (204); and

the one set of font bitmaps removed in step f) is determined by the stored time (230) for that set of font bitmaps.


 
6. The method as recited in claim 4 which includes:

h) storing (212) the time at which a font bitmap is read from each of said sets of font bitmaps stored in the font cache (204); and

the one set of font bitmaps removed in step f) is determined by the stored time when two or more sets of font bitmaps have the same lowest count (226).


 
7. A workstation which comprises:

a memory for storing a font cache (204) containing a plurality of sets of font bitmaps;

means for producing a text rendering command (14, 20) which identifies a character in a designated font to be displayed;

means for comparing (210, 20) the designated font in the text rendering command with the fonts stored in the font cache (204);

means for reading (214, 20) the font bitmap corresponding to the character from the font cache (204) if the designated font is stored in the font cache;

means for producing (220, 20) a new set of font bitmaps corresponding to the designated font in the text rendering command if the designated font is not stored in the font cache (204), including means for storing (224, 228, 230, 20) the new set of font bitmaps in the font cache, and means for reading (214, 20) the font bitmap from the font cache (204) corresponding to the character;

a display device (12) for producing an image; and

means for rendering the character (34) on the display device using the font bitmap read from the font cache (204).


 
8. The workstation as recited in claim 7 in which the means for producing a text rendering command includes:

memory (22) for storing a plurality of application programs; and

a processor (20) for executing the stored programs and producing text rendering commands.


 
9. The workstation as recited in claim 7 which includes:

a keyboard (14) through which data may be manually entered; and

configuration means (202, 20) for receiving data input through the keyboard (14) and determining therefrom the size of the font cache (204).


 
10. The workstation as recited in claim 7 which further includes:

means (222, 20) for determining if the font cache (204) is full; and

means (228, 230, 20) responsive to the last named means for removing one of said sets of font bitmaps if the font cache (204) is full.


 
11. The workstation as recited in claim 10 which includes:

means (206) for counting the number of times a font bitmap in each of said sets of font bitmaps is read from the font cache (204); and

the means (228, 20) for removing one of said sets of font bitmaps is operable to remove a set of font bitmaps having the lowest count.


 
12. The workstation as recited in claim 10 which includes:

timer means (208) for storing the time at which a font bitmap is read from each of said sets of font bitmaps stored in the font cache (204); and

the means for removing (230, 20) one of said sets of font bitmaps is responsive to the stored times for determining which set of font bitmaps to remove.


 
13. The workstation as recited in claim 11 which includes:

timer means for storing (208) the time at which a font bitmap is read from each of said sets of font bitmaps stored in the font cache (204); and

the one set of font bitmaps removed from the font cache (204) is determined by the stored times (208) when two or more sets of font bitmaps have the same lowest count.


 




Drawing