Microsoft Visual TrueType (VTT)

Microsoft Visual TrueType (VTT) is a professional-level tool for graphically instructing TrueType and OpenType TM fonts.

Screenshot of VTT showing visual tools for controlling hinting behavior.

Download Visual TrueType

Download VTT from the Microsoft Download Center.

(Just follow the link and click the download button.)

Is Visual TrueType the right tool for you?

Although the graphical user-interface of VTT dramatically simplifies the task of font hinting, the tool is not for the novice. The learning curve is fairly steep, simply because hinting requires professional skills regardless of the tools. Even accomplished type designers who have been using font editors for years to design fonts have evaluated VTT and decided that professional hinting is not for them.

Instructions and tutorials

Release notes

Version 6.35 [July, 2021 release]

The following are changes since 6.34 [December, 2020 release]

  • VTTShell. Add option to compile range of glyphs.
  • Various bug fixes.
    • Fix windows scroll issue when editing CVT variations.
    • Fix VTTShell not compiling last glyph.
    • Fix issue with cvar table generation with CVT number greater than 256.
    • Fix issue with character set sync across views if sync charset with main is disabled.

Version 6.34 [December, 2020 release]

The following are changes since 6.33 [November, 2019 release]

  • Per display DPI awareness. Support per display DPI when rendering visual elements. This is noticeable when dragging VTT from one display to another on a multi display system.
  • Various bug fixes.
    • Fix undo/redo that was not working in the main view.
    • Fix issue with composite detection change detection in variation font.
    • Fix issue where VTT was not opening on display where last closed.
    • Fix IDEF definition limit issue.
    • Fix issue with cvar table generation where tuple records have more than 63 CVT entries.
    • Fix issue with Light Latin auto hinter on complex glyphs.

Version 6.33 [November, 2019 release]

The following are changes since 6.32 [October, 2019 release]

  • Bug fix in Variation CVT view preventing user editing of some instances.

Version 6.32 [October, 2019 release]

The following are changes since 6.31 [October, 2018 release]

  • Enhanced vertical accent placement. Update autohinter and hinting template files for enhanced vertical accent placement. Positions marks in composites with greater precision using logic similar to Res*() functions.
  • VTTShell command line tool updates. Enhance VTTShell with more complete error reporting and ability to strip TSI tables from a font that has already been compiled.
  • Prevent composite glyph definition from changing. VTT will no longer overwrite composite glyph definitions (i.e. OFFSET[] and USEMYMETRICS[] pseudo-instructions) that are inconsistent with VTT source. Instead, VTT will leave the composite definition as is in the glyf table, and report an error.
  • User interface enhancements and bug fixes.
    • Fix point drawing problems in main view for coincident adjacent points.
    • Variation main view will now update after changing the CVT program and compiling.
    • Change variation UI to allow scrolling the CVTs listed in the non-editable default instance of a variation font.
    • Fix bug when opening a font in VTT after closing another font when sometimes the default instance CVT data was editable when it should not have been.
  • Various bug fixes.
    • Fix reported autohinter crashing bug.
    • Create cvar from source when compiling all programs in both VTT and VTTShell.

Version 6.31 [October, 2018 release]

The following are changes since the 6.30 [August, 2018 release]

  • Introduction of “follow gasp” mode where text displayed in VTT can follow gasp table settings. Previously, VTT supported editing of the gasp table but text displayed in VTT would not follow gasp table settings. The “follow gasp” mode is an optional mode where text displayed in the main windows, sample text view, waterfall view and charset view will render according to appropriate gasp table settings.
  • Various bug fixes. Bug fixes including fix bug when importing glyphs from a “large” font, fix tag swap bug in TSIC table which is source table for cvar variation table, fix autohinter bug.

Version 6.30 [August, 2018 release]

The following are the changes since the 6.20 [March, 2017 release] release of VTT:

  • Support for Open Type Font Variations including Intermediates. Previously, VTT only supported varying CVTs at the extremes of axes in the design space. VTT now can vary CVTs anywhere in the design space, including intermediate points between axis masters, and the corners of the design space.
  • Updated UI in Variation CVT Windows. The Variation CVT window now clearly shows you how CVTs change at the selected point in the design space: it tells you which CVTs you have edited at that point, which CVTs are varying due to nearby deltas, and which CVTs are unchanged. You can also add, edit and remove instances represented in the cvar table. You can create temporary instances without deltas so you can quickly switch between points in the design space to proof your work. Finally, any can name any instance you create to make it easy to keep track of them.
  • Visual TrueType and FontTools. Visual TrueType uses a port of the FontTools varLib library when computing variation delta data for the cvar table.
  • Visual TrueType includes a command line utility vttshell.exe. This utility can be used to compile and/or strip sources from a font containing Visual TrueType source data. Usage options are available using the command vttshell.exe -?.

Version 6.20 [March, 2017 release]

The following are the changes since the 6.10 [February, 2016 release] release of VTT:

  • Support for Open Type Font Variations. You can use VTT to hint variable fonts using the new Variation CVT and Variation Windows, described below. VTT will generate a cvar table based on CVTs shown in the Variation CVT window. Currently, VTT only supports varying CVTs for masters at the extrema of variable font axes. Support for intermediate cvar variations (e.g. for named instances) is in the plans for a future release. Documentation is forthcoming, but a blog post with workflow and instructions is available at http://aka.ms/vtt-variations.
  • Variation CVT Window. You can use this window to select which variable font instance you would like to proof in the Waterfall, Text Sample, and Variation Windows (see below). When you select a master instance, you can adjust the CVTs for that instance; just type a change and hit Ctrl-R to recompile. The Variation CVT window will show you which CVTs vary across the font and how they differ from the default instance. If you select an intermediate instance, you can inspect the interpolated CVTs for that instance. VTT does not yet support editing intermediate instance CVTs.
  • Variation Window. The Variation window shows you the current glyph outline and hints, just like the Main window, for the instance selected variable font instance (see above). With both the Main and Variation windows up, you can edit hints in the Main window and see the impact on variations in the Variation window. Because hints in a variable font are associated with the default instance and merely follow interpolated CVTs for other instances, you can only edit hints in the Main window.
  • Exporting Control Program to XML. VTT 6.01 added the ability to dump a fonts hints to an XML file for import into other fonts. Unfortunately, this did not include the Control Program. VTT 6.20 will now include the Control Program in XML export and import.

Version 6.10 [February, 2016 release]

  • The following are the changes since the 6.01 [August 31, 2015 release] release of VTT:
  • Autohinter for Latin and East Asian fonts. The new Autohinting modes makes use of a new lightweight hinting strategy, that is best suited to today's rendering environments, such as DirectWrite. Most Autohinters generate low level hinting instructions that you cannot easily edit or improve. This new Autohinter generates high-level hints that you can easily edit via VTT's graphical user interface.
  • 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.
  • 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.
  • 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.
  • Check box added to allow future suppression of Import binary hints message when opening a font with no source data.
  • Brand new Icon for VTT, & new icons for the Graphical Hinting interface.
  • Various bug fixes related to performance.

Version 6.01 [August 31, 2015 release]

  • Now available via the download center! This and future releases will be freely available on the Microsoft Download Center. No more faxing in license agreements
  • Color font support (COLR/CPAL tables). Glyphs with color layers defined in the COLR and CPAL tables render in color throughout VTT so you can proof color glyphs.
  • Updated rasterizer. The rasterizer has been updated to be even more accurate, and now includes the ClearType Grey rendering mode used by default in Windows 8 and 10.
  • Export / Import hints from XML. Export or import VTTTalk and all low-level code to/from an XLM file. Handy for doing global find and replace operations in a text editor, or for moving hints to another point-for-point compatible font. See the help file within VTT for more details.
  • Import binary font hints. When opening fonts without VTT source data, you can import the binary data to low-level code you can edit.
  • Unicode sample text. Sample text and test strings now support Unicode characters, including surrogates. You can also jump to any character by entering its Unicode value in the Goto Character dialog, or by typing or pasting in the main window.
  • New keyboard shortcuts. You can press Ctrl + Up arrow and Ctrl + Down arrow to quickly change resolutions. We also added shortcuts to turn off many of the rasterization options (e.g. Ctrl + Shift + G for ClearType Grey, Ctrl + Shift + F for subpixel positioning, etc). For details, see the keyboard shortcut section of the online help within VTT.
  • Use the space bar to pan. Like many other font design applications, you can now hold down the space bar and drag the mouse cursor in order to pan the main window. The left shift key continues to work for panning as in past versions of VTT.
  • Single test string. The main window now only shows one test string. This test string shows text with hinted advance widths. The second test string, which showed text with unhinted advance widths (i.e. metrics), has been removed.
  • PostScript names now visible. If present, the PostScript name for the current glyph is shown in the status area at the top of the main window.
  • New pixel grid display. The Show Grid display option now shows a border around all pixels, not just activated pixels
  • Support for high-dpi display. VTT renders everything without any operating system display scaling, so that the rasterizations you see are exactly what you would get.