SetFScaleDisable
without having them scaled.
dontScale is a Boolean flag specifying whether to enable or disable off-size
character scaling. It is one of:
FALSE Enables scaling (the normal status) TRUE Disables scaling. When a font size does not exist, a larger or smaller size font is drawn, but the space between
characters is expanded or condensed to simulate the
spacing of a scaled font.
Notes: When a nonexistent font size is used for drawing text, a
smaller or larger font is normally scaled to match the specified size. For
instance, the following shows two examples of 14-pt Chicago:
In the first example, the normal scaling is performed. Before the second
Note that the width of the two examples is the same, but the characters of the
second are actually drawn in 12-pt, with additional spacing. Even so, the
widths are only the same because fractional widths were enabled, the font
doesn't have a font character-width table and is a member of a family
record with a family character-width table. Without all of that, there
would be no guarantee that the two examples would be equally wide.
When the nearest actual size happens to be larger rather than smaller (as
in the example above), then the characters are drawn compressed together,
even overlapping. Even so, it may be more pleasing to the eye:
programmers have gotten the same affect by changing the byte-length global
variable FScaleDisable (at 0x0A63). We are now warned to NOT change
this address to read the current status (non-zero=scaling is disabled,
0= enabled).
There is no certainty that requesting a doubled point size or a scale factor
of 2 will get you characters with doubled widths. What you get will depend
on how QuickDraw measures and spaces the characters--especially algorithmically-derived characters like boldface where the character
strike is one pixel wider regardless of point size. For fonts with a family
character-width table, there is no problem since character spacing is
accurately described from the table.
Condensing and expanding are more commonly performed by calling the
TextFace function with the condense or extend bit set. A technique used in justifying lines of text is to use SpaceExtra to widen the spaces between words.
requests measure the same, or proportionaly. Normally, SpaceExtra is adequate if you pass it the difference of the two measures (divided by the
number of spaces on the line). Use CharExtra if there aren't enough spaces on the line or if the difference between the two measures is either
too great or too little.