Return to Index
The Graphics State
Contents
Introduction
The graphics state variables establish the context in which TrueType instructions
are executed. This chapter provides an alphabetical listing of the variables
that make up the graphics state along with a brief description of their
purpose and the essential facts needed to understand their role. In particular
it provides information on each variable's default value, the instruction
used to set its value and a list of instructions affected by its setting.
An overall discussion of the role of the graphics state variables can be
found in Chapter 2, "The Font Engine."
Most of the graphics state variables have a default value as shown below.
That value is established the first time a particular font is accessed and
again at the start of interpretation of any glyph.
It is possible to change the default values of the graphics state variables
using instructions. If the value is changed in the control value program,
that value becomes the new default value. If the value of a state variable
is changed by instructions associated with a particular glyph, the new value
is not a new default value and will hold only for that glyph.
Return to Contents
auto flip
Default TRUE
Set with FLIPOFF[]
FLIPON[]
Affects MIRP[]
Controls whether the sign of control value table entries will be changed
to match the sign of the actual distance measurement with which it is compared.
Setting auto flip to TRUE makes it possible to control distances measured
with or against the projection vector with a single control value table
entry. When auto flip is set to FALSE, distances must be measured with the
projection vector.
Return to Contents
control
value cut-in
Default 17/16 pixels (F26Dot6)
Set with LCVTCI[]
Affects MIAP[]
MIRP[]
Limits the regularizing effects of control value table entries to cases
where the difference between the table value and the measurement taken from
the original outline is sufficiently small.
Return to Contents
delta base
Default 9
Set with SDB[]
Affects DELTAP1[]
DELTAP2[]
DELTAP3[]
DELTAC1[]
DELTAC2[]
DELTAC3[]
Establishes the base value used to calculate the range of point sizes
to which a given DELTAC[] or DELTAP[] instruction will apply. The formulas
given below are used to calculate the range of the various DELTA instructions.
DELTAC1 DELTAP1 (delta_base) through (delta_base + 15)
DELTAC2 DELTAP2 (delta_base + 16) through (delta_base + 31)
DELTAC3 DELTAP3 (delta_base + 32) through (delta_base + 47)
Return to Contents
delta shift
Default 3
Set with SDS[]
Affects DELTAP1[]
DELTAP2[]
DELTAP3[]
DELTAC1[]
DELTAC2[]
DELTAC3[]
Determines the range of movement and smallest magnitude of movement (the
step) in a DELTAC[] or DELTAP[] instruction. Changing the value of the delta
shift makes it possible to trade off fine control of point movement for
range of movement. A low delta shift favors range of movement over fine
control. A high delta shift favors fine control over range of movement.
The step has the value 1/2 to the power delta shift. The range of movement
is calculated by taking the number of steps allowed (16) and multiplying
it by the step.
The legal range for delta shift is zero through six. Negative values
are illegal.
Return to Contents
dual
projection vector
Default none
Set with SDPVTL[]
Affects IP[]
GC[]
MD[]
MDRP[]
MIRP[]
A second projection vector set to a line defined by the original outline
location of two points. The dual projection vector is used when it is necessary
to measure distances from the scaled outline before any instructions were
executed.
Return to Contents
freedom
vector
Default x-axis
Set with SFVTCA[]
SFVTL[]
SFTPV[]
SVTCA[]
SFVFS[]
Affects ALIGNPTS[]
ALIGNRP[]
DELTAP1[]
DELTAP2[]
DELTAP3[]
IP[]
MDAP[]
MDRP[]
MIAP[]
MIRP[]
MSIRP[]
ROUND[]
SCFS[]
SHC[]
SHPIX[]
SHZ[]
UTP[]
A unit vector that establishes an axis along which points can move.
Return to Contents
instruct
control
Default 0
Set with INSTCTRL[]
Affects all instructions
Makes it possible to turn off instructions under some circumstances.
When set to TRUE, no instructions will be executed.
Return to Contents
loop
Default 1
Set with SLOOP[]
Affects ALIGNRP[]
FLIPPT[]
IP[]
SHP[]
SHPIX[]
Makes it possible to repeat certain instructions a designated number
of times. The default value of one assures that unless the value of loop
is altered, these instructions will execute one time.
Return to Contents
minimum
distance
Default 1 pixel (F26Dot6)
Set with SMD[]
Affects MDRP[]
MIRP[]
Establishes the smallest possible value to which a distance will be rounded.
Return to Contents
projection
vector
Default x-axis
Set with SPVTCA[]
SPVTL[]
SVTCA[]
SPVFS[]
Affects ALIGNPTS[]
ALIGNRP[]
DELTAP1[]
DELTAP2[]
DELTAP3[]
GC[]
IP[]
MD[]
MDAP[]
MDRP[]
MIAP[]
MIRP[]
MSIRP[]
SCFS[]
SHC[]
SHP[]
SHZ[]
A unit vector whose direction establishes an axis along which distances
are measured.
Return to Contents
round state
Default 1 (grid)
Set with RDTG[]
ROFF[]
RTDG[]
RTG[]
RTHG[]
RUTG[]
SROUND[]
S45ROUND[]
Affects EVEN[]
ODD[]
MDAP[]
MIAP[]
MDRP[]
MIRP[]
ROUND[]
Determines the manner in which values are rounded. Can be set to a number
of predefined states or to a customized state with the SROUND or S45ROUND
instructions.
Return to Contents
rp0
Default 0
Set with SRP0[], MDRP[], MIAP[], MSIRP[]
Affects ALIGNRP[]
MDRP[]
MIRP[]
MSIRP[]
The first of three reference points. References a point number that together
with a zone designation specifies a point in either the glyph zone or the
twilight zone.
Return to Contents
rp1
Default 0
Set with SRP1[], MDAP[], MDRP[], MIRP[]
Affects IP[]
SHC[]
SHP[]
SHZ[]
The second of three reference points. References a point number that
together with a zone designation specifies a point in either the glyph zone
or the twilight zone.
Return to Contents
rp2
Default 0
Set with SRP2[], MDRP[], MIRP[]
Affects IP[]
SHC[]
SHP[]
SHZ[]
The third of three reference points. References a point number that together
with a zone designation specifies a point in to either the glyph zone or
the twilight zone.
Return to Contents
scan control
Default FALSE
Set with SCANCTRL[]
Determines whether the interpreter will activate dropout control for
the current glyph. Use of the dropout control mode can depend upon the currently
prevailing combination of the following three conditions:
- Is the glyph rotated?
- Is the glyph stretched?
- Is the current pixel per em setting less than a specified threshold?
It is also possible to block dropout control if one of the above conditions
is false.
Return to Contents
single_width_cut_in
Default 0 pixels (F26Dot6)
Set with SSWCI[]
Affects MDRP[]
MIRP[]
The distance difference below which the interpreter will replace a CVT
distance or an actual distance in favor of the single width value.
Return to Contents
single_width_value
Default 0 pixels (F26Dot6)
Set with SSW[]
Affects MDRP[]
MIRP[]
The value used in place of the control value table distance or the actual
distance value when the difference between that distance and the single
width value is less than the single width cut-in.
Return to Contents
zp0
Default 1
Set with SZP0[]
SZPS[]
Affects ALIGNPTS[]
ALIGNRP[]
DELTAP1[]
DELTAP2[]
DELTAP3[]
FLIPPT[]
FLIPRGOFF[]
FLIPRGON[]
IP[]
ISECT[]
MD[]
MDAP[]
MDRP[]
MIAP[]
MIRP[]
MSIRP
SHC[]
SHP[]
UTP[]
The first of three zone pointers. Can be set to reference either the
glyph zone (Z0) or the twilight zone (Z1).
Return to Contents
zp1
Default 1
Set with SZP1[]
SZPS[]
Affects ALIGNPTS[]
ALIGNRP[]
IP[]
ISECT[]
MD[]
MDRP[]
MIRP[]
MSIRP[]
SDPVTL[]
SFVTL[]
SHC[]
SHP[]
SHZ[]
SPVTL[]
The second of three zone pointers. Can be set to reference either the
twilight zone (Z0) or the glyph zone (Z1).
Return to Contents
zp2
Default 1
Set with SZP2[]
SZPS[]
Affects GC[]
IP[]
ISECT[]
IUP[]
SCFS[]
SDPVTL[]
SFVTL[]
SHC[]
SHP[]
SHPIX[]
SPVTL[]
The third of three zone pointers. Can be set to reference either the
twilight zone (Z0) or the glyph zone (Z1).
Return to Contents
Return to Index
|