Visual TrueType 4.2 release notes

New features

  • VTT will install itself into the registry such that you can right-click a font and open it in VTT, as soon as you have used VTT once.

  • The UI elements, and separately, the control point size, are now scalable in a range of 50% to 200%. Choose Tools => Options => Appearance => Scale Visual instructions. Recommended settings for 96 dpi W95: 100% for control points, 75% for all other symbols. The smaller the symbols, the less space they use up on small screens, but the harder they may be to grab.

  • Gray scaling now has a 4th option, NT-compatible, performing gamma correction in much the same way Windows 2000 does.

  • VTT contains the TT Secure Rasterizer 1.7 as used in Windows 2000.

  • In collaboration with Monotype's Jelle Bosma and Thomas Rickner, new variants of the Align and Stroke commands have been implemented. (For the TT savvy users: The command's functioning is somewhat proprietary, but their behavior is much more predictable and sensible, as far as the choice of the freedom vector is concerned.) The UI will automatically generate the new align and stroke commands, since we think they're superior to the old ones, but the old ones will continue to work.

  • The new align and stroke commands come in two flavors, a strict one, and a somewhat more relaxed one. The reason behind this is that at small ppem sizes we cannot render ink traps and similar deviations from straight lines, hence we'd prefer to strictly align the respective points for the benefit of a more regular pixel pattern. At some (user-defined) ppem size, we'd rather unlock this strict grip for the align command to render the ink trap more truthfully. To decide at which ppem size this transition should happen, choose Tools => Options => Glyph visuals => Ppem Limits. The align and stroke commands will appear with a padlock on them. Go to the ppem size at which you'd like to unlock the strict grip, right click the padlock, and choose the open padlock.

    Screenshot showing padlock variations.
    A padlock currently set to open at 27 ppem, giving the option to open it at 23 ppem (which happens to be the current ppem size of the main window) or to close the padlock

If the padlock was already open, you can choose to lock it up again, or to open it at a different ppem size. Note: To use this feature you will need to import the new FpgmTmpl.txt, as it generates a call to function 82 that has been added recently.

  • The UI for the new stroke command will allow to "stroke" characters "outside in", as depicted in the "v" below:

    Screenshot showing the outside in option.
    A "v" with the strokes "outside-in"

This method is sometimes preferred to "inside-out". For either case, there are tradeoffs. "Outside-in" will faithfully render the "outside" of the "v" and let you control the joint of the strokes, while it may fill in the ink trap too much at unfortunate sizes. "Inside-out" will faithfully render the counter, not filling in the ink trap, but may result in the joint being too wide or too narrow.

  • The aligns and particularly the strokes being somewhat bulky, as far as their graphical representation is concerned, a short-cut has been added to quickly turn them on or off. Choose Ctrl+Shift+A for toggling the aligns, Ctrl+Shift+S for the strokes. Note that for the aligns and strokes to be visible at all, both x and y directions must be turned on (short-cuts Ctrl+Shift+X and Ctrl+Shift+Y respectively).

  • The delta commands have been optimized for the size of the code generated. Note: To use this feature you will need to import the new FpgmTmpl.txt, as it generates a call to functions 70 through 73 that have been added recently.

  • The delta tool has been enhanced to allow to apply deltas that are specific to either black-and-white or grey-scale mode. To use a black-and-white specific delta, make sure grey-scaling is turned off, and right-click the point to delta. You'll get a slightly different panel indicating the fact that this delta will apply to "b/w only":

    Screenshot of the delta tool with black and white only.
    A 2/8 pixel inline black-and-white only delta

To use a grey-scaling only delta, make sure that grey-scaling is turned on, and right-click the point to delta. Now the panel indicates that this delta will apply to "grey only":

Screenshot of the delta tool showing grey only.
A 6/8 pixel inline grey only delta

  • The size of the code is now displayed in the glyf, prep, and fpgm windows for your reference. It may be illustrative to try out different linking strategies, which are equivalent as to the pixel pattern yielded, but which differ in size. It may also be illustrative to know, how much code is generated by possibly too many deltas, and how that compares to the amount of code resulting from a smarter linking strategy.

  • An option has been added to visualize the VDMX for the current glyph at the current size. To use this option, choose Tools => Options => Glyph visuals => VDMX Heights. If present and in gridfit mode, the respective values will appear as a pair of green lines.

  • An option has been added to visualize the instructed metrics for the current glyph at the current size. Choose Tools => Options => Glyph visuals => instructed metrics, and if in gridfit mode, the respective values will appear as a pair of green lines.

  • An option has been added to fix the orientation of contours. TrueType expects outer contours to run clockwise, and inner contours to run counter-clockwise. When importing files produced by Fontographer, this may sometimes be wrong. Choose Tools => Options => Glyph visuals => outline errors, and VTT will check each glyph as it appears in the main window, alert if there is a problem, and ask for permission to fix the orientation. If denied, the offending contour(s) will be displayed in red. If granted, VTT will fix the orientation. VTT will preserve any hints that may be present on that outline, if all the hints have been generated visually. If some commands were entered into the VTT talk window manually, and if these commands don't have a visual representation (such as ASM statements or function CALLs), VTT will not be able to preserve the hints and ask for permission to remove them on that particular glyph.

  • CVT categories have been added for absolute (square, flat) heights and relative (round, overshoot) heights. This permits the UI to automatically choose a CVT for control points that are rounded in y-direction. Note: to use this feature you will need to import the new CvtTmpl.txt, as it is already set up with the appropriate attributes. If you like to add the attributes to your own old template manually (cf. below regarding the new control program), choose Edit => Edit CVT attributes, set the link color to "grey", the link direction to "Y", and for the cvt category choose either "Square Height" or "Round Height", depending on whether it's the actual height or the overshoot.

  • Sometimes, you may wish to round a control point in y-direction without using a CVT. To do so, right-click the anchor symbol, and choose no cvt.

    Screenshot showing the anchor toggle.
    Cvt (right) or not (left)?
  • VTT now supports an IntelliMouseTM as short-cut to certain navigational operations. To use this device under Windows 95, the respective driver will have to be installed. Windows NT supports it by default. Refer to the Quick Reference Guide below for a description of the short-cuts.

  • Last but not least, the main window now has a 16 level undo/redo feature. It is activated in "the usual way", i.e. Ctrl+Z undoes the previous modification, hitting Ctrl+Z up to 16 times undoes up to 16 modifications, and likewise, Ctrl+Y redoes them. This might come in handy in such situations where a newly added link or interpolation has caused another link to be removed.

Control Program

A high-level language integrated control value and preparation program table has been added. Its main goal is to simplify the definition of control values and the specification of their behavior under scaling ("inheritance") by combining VTT's current private "cvt" and "prep" tables into a single private table (named "control program", contracted from "control values" and "preparation program") and avoid the typographers having to program in an assembly language. The new control program replaces the current private "cvt" and is compiled into the "prep" table. The control program is declarative in nature, making it easier to learn for non-programmers since it avoids having to sequence commands. Previous versions of the "cvt" will continue to work, but will not benefit from automatic generation of the "prep" out of the control program. It is therefore strongly recommended that users give it a try, as it comes with the following features:

  • It increases the range of cvt attributes by allowing user definable character groups and feature categories, simply because in today's WGL-4 fonts (let alone expert sets) not all glyphs fall into the 4 hard-wired categories "uppercase", "lowercase", "figure", and "other". Further character groups and feature categories can be added into the new control program, along with the sequence of glyphs needed to visualize the spacing.

  • It increases the granularity level at which the glyphs' stroke angle can be declared and used. Previously, this was declared on a per glyph basis in VTT Talk and used on a per font basis in the cvt (hard-wired cvts 2 and 36). Now it is done in the control program on a per character group basis, or on the basis of subgroups within a character group that share the same stroke angle. Furthermore, the stroke angle declaration now allows for regularizing varying stroke angles into a single stroke angle at sufficiently small ppem sizes, since standard "inheritance" can be used on the respective cvts for the italic runs.

  • Along with the increased granularity of the glyph stroke angle, the graphical user-interface has been adjusted. The stroke angle tool now produces a pair of arrows as illustrated below:

    Screenshot showing the stroke angle tool arrows.
    Glyph stroke angle with italic run cvt 38 and rise cvt 39

Left click and drag the mouse to draw the angle, right click the cvts to change them. Be sure to turn on both x and y direction, and to turn off grid-fitting and pixels.

  • The control program allows "relative" inheritance, as previously used for heights and their overshoots only, on all other cvts, too. This permits e.g. to easily force a round stroke to be at least 1 pixel thicker than a straight stroke, at and above a given ppem size.
  • It uses the same high-level syntax for the cvt-deltas as is used for the regular deltas in VTT Talk, making it easier to use and permitting the compiler to perform the same optimizations it does already for the regular deltas.
  • It simplifies the management of global settings, such as cvt cut-ins, drop-out control cut-off ppem size, and the range of ppem sizes within which to have instructions turned on, as they are now done in 3 simple high-level language statements.
  • It eliminates the need for the embarrassing hex numbers previously used to specify cvt attributes.

Note: To use the new control program, you will need to import the new FpgmTmpl.txt, as it generates calls to functions 83, 84, 85, and 88 that have been added recently. The CvtTmpl.txt has been updated accordingly, along with the CharGrp.txt template. The CvtTmpl.txt explains the syntax of the control program step-by-step, using real examples and lots of comments. It will be easy to learn merely by extending the examples given. The CharGrp.txt has been adapted slightly to match all other textual tables.

Quick Reference Guide to VTT's secret short-cuts for power users

Main Window

Shortcut Description
Left-click+Shift+drag mouse Pans main window
Left-click+Alt Zooms in main window (zooming will continue in small increments while mouse button and Alt key are depressed)
Left-click+Ctrl Zooms out main window (zooming will continue in small increments while mouse button and Alt key are depressed)
Left-click+Ctrl+Alt Toggles between zoom-to-fUnit (zooms in main window enough such that one fUnit equals one pixel) and zoom-to-fit (zooms out main window enough such that font height will fit in window)
Left-click+Alt+drag mouse Zooms in and pans main window
Left-click+Ctrl+drag mouse Zooms out and pans main window
Left-click+Ctrl+Alt+drag mouse Toggles between zoom-to-fUnit and zoom-to-fit and pans main window
Click wheel+drag mouse Pans main window
Rotate wheel towards you Zooms in main window
Rotate wheel away from you Zooms out main window
Click+rotate wheel towards you+drag mouse Zooms in and pans main window
Click+rotate wheel away+drag mouse Zooms out and pans main window
Up arrow Increase ppem size by 1
Down arrow Decrease ppem size by 1
Shift+up arrow Increase ppem size by 10
Shift+down arrow Decrease ppem size by 10
Right arrow Go to next glyph/character
Left arrow Go to previous glyph/character
any character Go to that character

While using the move control points tool

Shortcut Description
Left click control point Selects control point for subsequent moving, deselecting any previously selected control point
Right click control point Selects control point without deselecting any previously selected control points
Left double-click control point Selects all control points of the contour, deselecting any previously selected control point
Right double-click control point Selects all control points of the contour_ without_ deselecting any previously selected control points
Left click and drag marquee Selects all control points in marquee, deselecting any previously selected control point
Right click and drag marquee Selects all control points in marquee, without deselecting any previously selected control points
Left, up, right, or down arrow Moves the selected control points by 1 fUnit. This is used typically for cleanup up outlines after they have been converted from a different outline format
Shift+left, up, right, or down arrow Moves the selected control point by 10 fUnits

While using the insert control points tool

Shortcut Description
Left click Inserts a control point into the closest contours; if "Show fewer points" is on, then inserts an on-curve point, else an off-curve point
Right click Starts a new contour with a single control point. This will always create an on-curve point and is used typically for adding an attachment point for composite glyphs

While using the link tool and while right mouse button is depressed on minimum distance symbol

Shortcut Description
Alt Increase minimum distance resolution from 1/8 of a pixel, in turn, to 1/16, 1/32, and 1/64 of a pixel
Ctrl Decrease minimum distance resolution from 1/8 of a pixel, in turn, to 1/4, 1/2, and 1/1 of a pixel
Rotate wheel towards you Increase minimum distance resolution from 1/8 of a pixel, in turn, to 1/16, 1/32, and 1/64 of a pixel
Rotate wheel away from you Decrease minimum distance resolution from 1/8 of a pixel, in turn, to 1/4, 1/2, and 1/1 of a pixel

While using the link, shift, interpolate, or stroke tool, and while the right mouse button is depressed on the cvt symbol

Shortcut Description
Shift Toggles between the CVT numbers sorted in numerical order or sorted by CVT attribute
Click wheel Toggles between the CVT numbers sorted in numerical order or sorted by CVT attribute

While using the delta or move tools and while left or right mouse button is depressed

Shortcut Description
Alt Increase delta or move resolution from 1/8 of a pixel, in turn, to 1/16, 1/32, and 1/64 of a pixel
Ctrl Decrease delta or move resolution from 1/8 of a pixel, in turn, to 1/4, 1/2, and 1/1 of a pixel
Shift Change delta or move from post-IUP, in turn, to inline, pre-IUP, and back to post-IUP
Rotate wheel towards you Increase delta or move resolution from 1/8 of a pixel, in turn, to 1/16, 1/32, and 1/64 of a pixel
Rotate wheel away from you Decrease delta or move resolution from 1/8 of a pixel, in turn, to 1/4, 1/2, and 1/1 of a pixel
Click wheel Change delta or move from post-IUP, in turn, to inline, pre-IUP, and back to post-IUP

Bugs fixed

  • On W95 platforms, zooming in with pixels displayed occasionally would crash, this has been tracked down to a restriction in a W95 API and a workaround was implemented
  • VTT wouldn't let you open read-only fonts, now it will
  • Always forces integer ppem sizes in the HEAD table
  • Correctly updates the "modified" date in the HEAD table
  • Correctly handles larger format 4 CMAPs
  • Correctly handles format 6 CMAPs
  • Numerous other cosmetic issues have been fixed, all of which I don't remember