Microsoft Typography | Developer... | OpenType specification | OpenType tables | The gasp table


gasp - Grid-fitting
And Scan-conversion Procedure

This table contains information which describes the preferred rasterization techniques for the typeface when it is rendered on grayscale-capable devices. This table also has some use for monochrome devices, which may use the table to turn off hinting at very large or small sizes, to improve performance.

At very small sizes, the best appearance on grayscale devices can usually be achieved by rendering the glyphs in grayscale without using hints. At intermediate sizes, hinting and monochrome rendering will usually produce the best appearance. At large sizes, the combination of hinting and grayscale rendering will typically produce the best appearance.

If the 'gasp' table is not present in a typeface, the rasterizer may apply default rules to decide how to render the glyphs on grayscale devices.

The 'gasp' table consists of a header followed by groupings of 'gasp' records:


gasp Table

Type Name Description
USHORT version Version number (set to 0)
USHORT numRanges Number of records to follow
GASPRANGE gaspRange[numRanges] Sorted by ppem

Each GASPRANGE record looks like this:

Type Name Description
USHORT rangeMaxPPEM Upper limit of range, in PPEM
USHORT rangeGaspBehavior Flags describing desired rasterizer behavior.

There are two flags for the rangeGaspBehavior flags:

Flag Meaning
GASP_GRIDFIT Use gridfitting
GASP_DOGRAY Use grayscale rendering

The set of bit flags may be extended in the future.The four currently defined values of rangeGaspBehavior would have the following uses:

Flag Value Meaning
GASP_DOGRAY 0x0002 small sizes, typically ppem<9
GASP_GRIDFIT 0x0001 medium sizes, typically 9<=ppem<=16
GASP_DOGRAY|GASP_GRIDFIT 0x0003 large sizes, typically ppem>16
(neither) 0x0000 optional for very large sizes, typically ppem>2048

The records in the gaspRange[] array must be sorted in order of increasing rangeMaxPPEM value. The last record should use 0xFFFF as a sentinel value for rangeMaxPPEM and should describe the behavior desired at all sizes larger than the previous record's upper limit. If the only entry in 'gasp' is the 0xFFFF sentinel value, the behavior described will be used for all sizes.


Sample 'gasp' table

Flag Value Meaning
version 0x0000  
numRanges 0x0003  
Range[0], Flag 0x0008 0x0002 ppem<=8, grayscale only
Range[1], Flag 0x0010 0x0001 9<=ppem<=16, gridfit only
Range[2], Flag 0xFFFF 0x0003 16<ppem, gridfit and grayscale



this page was last updated 27 March 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of use.
comments to the MST group: how to contact us.

 

Microsoft Typography | Developer... | OpenType specification | OpenType tables | The gasp table