IP Library Granted Patent US 6,897,870
Granted Patent B1
US 6,897,870 · App. 10/642,353 · Granted May 24, 2005

Glyph rendering quantization for subpixel positioning

Assignee: Apple Computer Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,897,870
App. No.
10/642,353
Granted
May 24, 2005
Kind
B1
Abstract

A Font Quantization Engine receives layout data including font, font matrix, glyphs and position data. This received position data includes non-integer positions for the glyphs to be rendered. According to a tolerance that is either pre-specified, or selected at run time an appropriate quantization level is determined by the Font Quantization Engine. This quantization level and the fractional position data is then used to determine quantized positions for the glyphs. Once the quantized positions are determined, a rendering engine either renders the bitmaps for the glyphs, or retrieves cached versions of the bitmaps. In this manner, glyphs are positioned at non-integer locations, yet a different bitmap is not required for each possible non-integer location. This allows for both efficiency of operation and the use of higher quality bitmaps.

Claims (38)

1. A method for positioning glyphs at non-integer positions, the method comprising:

receiving glyph data, the glyph data including a glyph, and position data; and

determining a quantized position for the glyph according to a quantization level and the position data.

2. The method of claim 1 , further comprising determining a quantization level.

3. The method of claim 2 wherein each position has an associated plurality of components, the method further comprising:

determining the quantization level for each of the plurality of components.

4. The method of claim 3 wherein the quantized position for the glyph is a position in a device space, and determining a quantization level for a component (i) further comprises:

selecting an initial quantization level n;

selecting a point s in the device space such that s[i]=1/n;

using a font matrix, determining a point s′ in an ideal space corresponding to the point s, and a point z in the ideal space corresponding to the origin in the device space;

determining a distance between the point s and the point z; and

responsive to the distance between the point s and the point z not being less than a threshold amount

selecting a new quantization level such that the distance between the point s and the point z is less than the threshold amount.

5. The method of claim 3 wherein the quantized position for the glyph is a position in a device space, and determining a quantization level for a component (i) further comprises:

selecting an initial quantization level n;

selecting a point s in the device space such that s[i]=1/n;

using a font matrix, determining a point s′ in an ideal space corresponding to the point s, and a point z in the ideal space corresponding to the origin in the device space;

determining a distance between the point s and the point z; and

responsive to the distance between the point s and the point z being less than a threshold amount:

selecting the initial quantization level to be the quantization level.

6. The method of claim 1 , further comprising rendering the quantized glyph.

7. The method of claim 1 , wherein determining the quantized position for the glyph further comprises:

determining a quantized position associated with the glyph position data;

selecting as the quantized position for the glyph the determined quantized position.

8. The method of claim 7 wherein determining the quantized position p′[i] associated with the glyph position data further comprises:

determining a value a[i], such that a[i] is a fractional portion of the glyph position data, p[i];

determining a value b[i], such that b[i] is a product of the quantization level and a[i];

determining p′[i] such that p′[i] is a sum of an integer portion of p′[i] and a quotient of an integer portion of b[i] divided by the quantization level.

9. The method of claim 8 , wherein determining the quantized position associated with the glyph position data further comprises determining a quantized position for each of a plurality of components associated with the glyph position data.

10. A font quantization engine comprising:

a quantization level calculator for determining a quantization level; and

a position quantizer, communicatively coupled to the quantization level calculator, for quantizing glyphs according to their position in an ideal space, the determined quantization level, and a positioning function.

11. A computer program product for positioning glyphs at non-integer positions, the program product stored on a computer readable medium and adapted to perform the operations of:

receiving glyph data, the glyph data including a glyph, and position data; and

determining a quantized position for the glyph according to a quantization level and the position data.

12. A font quantization engine comprising:

receiving means for receiving glyph data, the glyph data including a glyph, and position data; and

determining means, communicatively coupled to the receiving means, for determining a quantized position for the glyph according to a quantization level and the position data.

Assignments (2)
CHANGE OF NAME Recorded Mar 7, 2008
From: APPLE COMPUTER, INC.
To: APPLE INC.
Reel/Frame 020638/0127 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2004
From: CLEGG, DEREK B.
To: APPLE COMPUTER, INC.
Reel/Frame 014253/0529 →