Type | Name | Description |
SHORT | numberOfContours | If the number of contours is greater than or equal to zero, this is a single glyph; if negative, this is a composite glyph. |
FWord | xMin | Minimum x for coordinate data. |
FWord | yMin | Minimum y for coordinate data. |
FWord | xMax | Maximum x for coordinate data. |
FWord | yMax | Maximum y for coordinate data. |
Type | Name | Description |
USHORT | endPtsOfContours[n] | Array of last points of each contour; n is the number of contours. |
USHORT | instructionLength | Total number of bytes for instructions. |
BYTE | instructions[n] | Array of instructions for each glyph; n is the number of instructions. |
BYTE | flags[n] | Array of flags for each coordinate in outline; n is the number of flags. |
BYTE or SHORT | xCoordinates[ ] | First coordinates relative to (0,0); others are relative to previous point. |
BYTE or SHORT | yCoordinates[ ] | First coordinates relative to (0,0); others are relative to previous point. |
Flags | Bit | Description |
On Curve | 0 | If set, the point is on the curve; otherwise, it is off the curve. |
x-Short Vector | 1 | If set, the corresponding x-coordinate is 1 byte long, not 2. |
y-Short Vector | 2 | If set, the corresponding y-coordinate is 1 byte long, not 2. |
Repeat | 3 | If set, the next byte specifies the number of additional times this set of flags is to be repeated. In this way, the number of flags listed can be smaller than the number of points in a character. |
This x is same (Positive x-Short Vector) | 4 | This flag has two meanings, depending on how the x-Short Vector flag is set. If x-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. If the x-Short Vector bit is not set and this bit is set, then the current x-coordinate is the same as the previous x-coordinate. If the x-Short Vector bit is not set and this bit is also not set, the current x-coordinate is a signed 16-bit delta vector. |
This y is same (Positive y-Short Vector) | 5 | This flag has two meanings, depending on how the y-Short Vector flag is set. If y-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. If the x-Short Vector bit is not set and this bit is set, then the current y-coordinate is the same as the previous y-coordinate. If the x-Short Vector bit is not set and this bit is also not set, the current y-coordinate is a signed 16-bit delta vector. |
Reserved | 6 | This bit is reserved. Set it to zero. |
Reserved | 7 | This bit is reserved. Set it to zero. |
Flags | Bit | Description |
ARG_1_AND_2_ARE_WORDS | 0 | If this is set, the arguments are words; otherwise, they are bytes. |
ARGS_ARE_XY_VALUES | 1 | If this is set, the arguments are xy values; otherwise, they are points. |
ROUND_XY_TO_GRID | 2 | For the xy values if the preceding is true. |
WE_HAVE_A_SCALE | 3 | This indicates that there is a simple scale for the component. Otherwise, scale = 1.0. |
RESERVED | 4 | This bit is reserved. Set it to 0. |
MORE_COMPONENTS | 5 | Indicates at least one more glyph after this one. |
WE_HAVE_AN_X_AND_Y_SCALE | 6 | The x direction will use a different scale from the y direction. |
WE_HAVE_A_TWO_BY_TWO | 7 | There is a 2 by 2 transformation that will be used to scale the component. |
WE_HAVE_INSTRUCTIONS | 8 | Following the last component are instructions for the composite character. |
USE_MY_METRICS | 9 | If set, this forces the aw and lsb (and rsb) for the composite to be equal to those from this original glyph. This works for hinted and unhinted characters. |