Introducing VTT 6.10, with Autohinting.


VTT

Hi, Mike Duggan here. I am a Program Manager/Typographer, at Microsoft.

Today I would like to introduce some of the features in the latest version of VTT, (Visual TrueType), designed to make hinting fonts, easier and faster than ever.

The download is available here

The download can be installed as a fresh install, or as an upgrade from the last release 6.01 August 2015.

Whether you have some experience with Hinting, or are new to VTT, the new version will allow you to easily add and edit hints using a combination of Autohinting and editing via the Graphical User Interface.

Over the next few weeks, I will be writing some posts to cover the following topics

  • Best settings in VTT for Hinting and Proofing Webfonts
  • Recommendations and best practices, to achieve great results using a Lighter Hinting approach to control common stems, and covering details of the reduced set of Hinting Instructions.
  • Using the New Autohinter, to add and edit Hints, for great Webfont results, and using the new CVT (Control Value Table) creation mode.
  • Setting the GASP table

The first post is to introduce the new Version of VTT, and to talk about the new features. VTT 6.10 now includes an Autohinter for Latin and East Asian fonts, that automatically generates a set of Hinting instructions for all glyphs in a font. The automatically generated Hints can easily be edited via the Graphical User Interface, or by directly editing the High Level VTT Talk code. The Autohinter makes use of a new lightweight hinting strategy, that is best suited to today’s rendering environments, such as DirectWrite.

When adding hints from scratch, instead of using the Autohinter, VTT 6.10 can now also automatically generate a ‘Control Value Table’ for Latin fonts, saving you time, so that you can begin adding Visual hints to your font straight away, without the need to measure the font, and manually fill in the relevant CVT entries.

What’s new?

Version 6.10 [February, 2016 release]
The following are the changes since the 6.01 [August 31, 2015 release] release of VTT:
New: Brand new Icon for VTT, & new icons for the Graphical Hinting interface.
New: Autohinter for Latin and East Asian fonts. Most Autohinters generate low level hinting instructions that you cannot easily edit or improve. The new Autohinter in VTT, generates high-level hints that you can easily edit via VTT’s graphical user interface. Some details below.
Note: No Autohinter, including this one, is perfect; the intent is that this Autohinter works well enough for most glyphs. Autohinting for all glyphs in the font should be carefully checked and proofed, and certain glyphs may need to be re-hinted manually, either by using the Visual Hinting tools, or by editing the VTT talk. You can study the sample font VTTDemo.ttf, that ships with VTT as a reference on best practices for hinting.
New: Ability to automatically generate a ‘Control Value Table’ for Latin fonts, saving you time, so that you can begin adding ‘Visual hints’ to your font straight away, without the need to measure the font, and manually fill in the relevant CVT entries.
New: Error and Warnings Limit. When you open a font, VTT will show a list of errors and warnings it detects in a font. If there are many errors and warnings in the font, this may slow down the process of opening a font file. To speed up opening time, you can set a limit on how many errors and warnings to display.
New: Legacy Compile. Set this option to ensure that your font will compile exactly the same as it did in Versions 4 and below of VTT.
New: Check box added to allow future suppression of Import binary hints message when opening a font with no source data.
Various bug fixes related to performance.

Light Latin Autohint

VTT 6.10 now includes an Autohinter for Latin fonts, which makes use of a new lightweight hinting strategy. The new Autohinter generates high-level hints that can easily be edited via VTT’s graphical user interface. The ease of use of the Autohinter, combined with the ease of editing, makes crafting fonts for onscreen use, faster and more intuitive then ever. The simpler set of instructions, added by the Autohinter, focuses on grid-fitting common heights, such as x-height, Cap Height, Ascender & Descender heights, using CVT (Control Value Table) Height measurements, as reference, and linking across common stems and rounds, such as Cap H horizontal crossbar, E, F, horizontals, O, Q, C, G, Rounds, lowercase ‘e’ rounds and horizontal bar, and lowercase ‘n’, ‘o’ rounds etc. This strategy, takes advantage of Windows symmetric DirectWrite rendering modes. Key heights are anchored to the Grid, using Control Value Table references, thereby maintaining consistency in gridfitted Heights of common characters across a font family. I will go delve into more detail on how to use the simpler set of instructions to achieve great quality for Webfonts, in a later post.

Follow these steps to Autohint a Latin font:
1. Start Visual True Type.
2. File > Open. Navigate to font file you would like to Autohint.
3. Select Font File and Open.
4. From the Tools menu, select Autohint > Light Latin Autohint.
5. When Autohinting is complete choose Save from File Menu
Note: No Autohinter, including this one, is perfect; the intent is that this Autohinter works well enough for most glyphs. Autohinting for all glyphs in the font should be carefully checked and proofed, and certain glyphs may need to be re-hinted manually, either by using the Visual Hinting tools, or by editing the VTT talk. Please see the sample font VTTDemo.ttf, that ships with VTT as a reference on best practices for hinting.

East Asian Autohinter

VTT 6.10 also includes an Autohinter for East Asian fonts. This Autohinter makes use of a new lightweight hinting strategy that focuses on the horizontal strokes common in East Asian scripts. This strategy, takes advantage of Windows symmetric rendering modes and locks the bottom of strokes to the pixel grid while letting the top of strokes float, by using a ‘Shift’ command. This strategy balances edge contrast vs. blur and produces a good distribution of strokes with balanced counters.
Note: When the East Asian autohinter is run, on an EA font, the Latin portion of the font will be automatically hinted using the same hinting strategy as used by the Light Latin Autohinter.
Follow these steps to Autohint an East Asian font:

1. Start Visual True Type.
2. File > Open. Navigate to font file you would like to Autohint.
3. Select Font File and Open.
4. From the Tools menu, select Autohint > East Asian AutoHint.
5. When Autohinting is complete choose Save from File Menu
Note: This simpler automatically generated instruction set will allow for easier editing by a typographer. The intent is that the Autohinter works well enough for most glyphs, leaving a smaller percentage that will need manual touch-up. These fixes might include changes to fix symmetry or proportion issues. No Autohinter, method can produce perfect results. Extensive Proofing of the Automatically generated hints, is highly recommended before shipping a font file.
Note: On complex fonts, the progress indictor may stop updating and the Autohinter may appear to have hung. Generally, the Autohinter is still running and will complete in just a few moments. As a time reference, Autohinting a 28,000 glyph Asian font on an average laptop takes just under one minute.

Control Program Only

TrueType allows control over the regularity of features through the use of values stored in the ‘CVT’ table. Control values are measurements of features, such as lowercase stem widths. These stems, although similar to one another, may have slightly different outline distances. With Cvt’s, these distances can be controlled so they are the same pixel width at a low resolution. At a higher resolution the control value won’t be used but the natural distance will display in the stems. The Control Value table doesn’t require these values to be glyph feature distances. The values are an integer and can be accessed from many TrueType instructions. The table also can be written to as well as read from other tables. Other examples of glyph and font features that can be stored in the control value table are: cap heights, x-heights, overshoot distances, ascender heights, baselines, figure heights, serif lengths and heights, italic angle, group (uppercase, lowercase, etc.) stem distances, group round distances. Other features might be: smaller group distances such as a math sign stem distance, braces, brackets, or parentheses distances.
VTT 6.10 can now automatically generate a Control Value Table for Latin Fonts. The above mentioned measurements will be automatically generated. Visual hints can then be added straight away without the need to measure the font, and manually fill in the relevant CVT entries. This makes it easy for intermediate and advanced hinters to get started on a font, saving significant setup time.

Note: Selecting Tools> Autohint > Control Program Only, is similar to Tools > Prepare font > Import Templates method of generating tables in older versions of VTT. Selecting, Tools> Autohint > Control Program only, will automatically generate a compiled completed Control Program, Pre Program and Font Program.
Follow these steps to Automatically Generate a Control Program

1. Start Visual True Type.
2. File > Open. Navigate to font file you would like to Generate a Control Program for
3. Select Font File and Open.
4. From the Tools menu, select Autohint > Control Program Only
5. When complete choose Save from File Menu
You can now begin hinting, either using the Graphical User Interface or by adding instructions in the VTT talk window and compiling.

You can study the sample font, VTTDemo.ttf, that ships with VTT 6.10 as a reference on best practices for hinting.

the next post will look at how to use the appropriate setting up VTT, when Hinting fonts for the Web.

Mike Duggan

 


Comments (2)

  1. Ola says:

    Thanks Mike for your work and making VTT download public!
    I have had a couple of issues with 6.10 such that it doesn’t include VTTDemo.ttf, and function calls in the font program are missing such as CALL[] 20 and CALL[] 65 needed for hinting diagonal strokes (italics and A and V diagonals).

    I am new at hinting but don’t want to give up.
    Enterting something like this in the VTT Talk window:

    DStroke>>(19,8,20,30,76) /* Points 19, 8 and 20, 30 using cvt 76 */

    Will give this critical error:

    Critical Error: Inst: CALL Function not defined. Function = 65

    Or using the Stroke button in the toolbar will give this critical error:

    Critical Error: Inst: CALL Function not defined. Function = 20

    Hopefully this can be fixed?

    1. fbcontrb says:

      Hi Ola, could you contact me directly mikedu(at)microsoft.com. I would like to understand why you are not seeing the VTTDemo.ttf on your system. If you could also in the email, describe where you got the reference for Dstroke>> and what type of hinting you are trying to do. The more details you can provide the better.

      instead of DStroke>>, can you try Diagonal>>(19,8,20,30,76). this is the code the stroke button produces, and I do not get an error when I try it in VTT 6.10
      MIKE

Skip to main content