The present invention relates to generally to a computer system and more particularly to rendering font characters into memory in a computer system in an efficient manner.
The constant emphasis in the design of computer systems has been on making such systems faster and able to handle larger amounts of information so that they may accomplish more work. The ability of computers to do more work is also enhanced by their ability to do more different kinds of work. For example, computers have become of much more use in many more activities with the advent of computer graphics displays which allow the presentation of not only numbers and text materials but pictures and graphs representing the meanings of those numbers and adding tot he meaning of the text material. It has gradually become the belief of a great number of people in the computer industry that a graphical output should be presented on almost all computer systems.
In a typical computer system, a graphics controller sends video signals to monitors and also controls a frame buffer memory system. Fonts representing text, for example, are written into a frame buffer associated with the computer system. The graphics controller typically extracts the characters of the font to scan them onto a display or monitor of the computer system. A first system for rendering font characters into the frame buffer on system memory requires that the font characters be downloaded directly from a central processing unit (CPU) via the graphics controller. Downloading the characters directly from the CPU can be a very slow process because an image of a character typically requires many bytes per pixel.
In a second embodiment, a glyph is provided. A glyph is a compressed representation of the font for each byte of a font. Typically, in a glyph a bit represents a pixel of information. Accordingly, each pixel represented on the frame buffer is represented by one bit of information provided by the CPU, rather than a byte or bytes of information being rendered in to the memory as required in the first above-mentioned system. Accordingly, it is possible in accordance with the second embodiment to provide for lossless compression and therefore a faster render rate is possible.
In such a system, the graphics controller will select between two color registers, typically referred to as a foreground register and a background register. The graphics controller receives the bits from the CPU representative of the particular character of a particular font and based upon the whether a bit represents foreground or background color, the appropriate register renders the byte or bytes of information for that pixel. The lossless compression is possible because font characters are typically one color (for example, black) and therefore only two different colors need to be provided (i.e., black for foreground and white for background). Although the second embodiment has some advantages over the first above described embodiment, it still has some significant disadvantages which will be described below.
A system in accordance with the second embodiment, requires that the CPU transfer several pieces of information to graphics controller for every font character that is to be rendered into memory. Accordingly, the CPU must find the fonts, find the character in the font, and then figure out how many bytes to transfer and transfer this information across the bus. In so doing, several different transfers are required to render a group of font characters into memory. Therefore, the bandwidth required for the transfers becomes a significant issue.
Accordingly, what is needed is a system that allows for increased throughput of fonts in a computer system to allow more efficient rendering of font characters thereof. The system must be efficient, easily implemented and a cost effective alternative to existing systems.
The present invention addresses such a need.
A system and method for rendering fonts into a memory is disclosed. The system and method comprises a data structure located within the memory. The data structure includes at least one font array. The method and system includes a graphics controller for accessing at least one font array in the memory and for rendering characters of at least one font array into the appropriate locations in the memory to be scanned onto a monitor.
Accordingly, a system and method in accordance with the present invention provides for a plurality of font arrays to be provided within a memory of a computer system. The memory could be the frame buffer, system memory or any other memory within the computer system. The graphics controller includes a mechanism which allows for a font array to be accessed by the graphics controller. The graphics controller also includes a mechanism for allowing each font character to be rendered into the memory. In so doing, the number of transfers from the CPU is significantly reduced.