VOLT release notes

1.4

Since the last public Visual OpenType Layout Tool (VOLT) release, we have added various features and made improvements across the product. Here is quick list of changes, followed by a detailed description of each:

  • Compiler optimizations enabling significant savings in compiled table size
  • Compiler optimizations to support fonts containing extensive anchor or cursive attachment lookups
  • Support for mark filtering sets in compiler and user interface
  • Speed improvements for project compilation, loading, and saving
  • User interface improvements
  • Multiple bug fixes across VOLT including the compiler, project import and export, and across the UI

Compiler improvements

New optimizations towards reducing the size of generated layout tables, including contextual and pair positioning lookups. Savings in size are significant especially with fonts containing a large number of complex contextual lookups. In some cases, savings allowed 4x reduction in compiled table size.

The compiler is now able to compile GPOS lookups with a large number of defined attachment anchors. This was one of the most serious compiler limitations without any workaround for font developers to overcome.

VOLT now implements mark filter glyph sets introduced in OpenType specification 1.6. Using mark glyph sets is almost the same as mark attachment classes, except the user is required to put '*' in front of mark group name in lookup editing window. This syntax is intentional, to prevent a user from accidentally creating overlapping mark classes.

In addition to automatic optimizations, VOLT added ability to manually control format of pair positioning lookups. User can specify format explicitly by adding _PPF1 or _PPF2 at the end of lookup name.

User interface

Extended proofing tool to support fonts with more than 100 lookups. Fixed form layout problems when content is obstructed by thick window borders. Fixed positioning lookup window so position inside grids is preserved during window resize. Added menu item for importing project ignoring glyph definitions.

Various fixes

Fixed project corruption when editing lookups with EXCEPT context. Fixed VOLT crash involving caret attachment lookups in some situations. Fixed compilation error of projects using very long anchor names. Other fixes in VOLT compiler and user interface.

1.3

Since the last public VOLT release two years ago, we have added various features and made improvements across the entire product. Here is quick list of changes, followed by detailed description:

  • Font Explorer, allowing users to quickly search for glyph references inside lookups.
  • Usability improvements, including lookup comments, new UI options and detailed error messages.
  • Compilation improvements in quality, compatibility, and performance.
  • Overall performance improvements, including import, export, and font size.
  • Updated supplemental files and tags list.
  • Multiple bug fixes across VOLT including the compiler, project import and export and across the UI.

Font Explorer

Font Explorer allows font designer to instantly search project lookups for any appearance of the glyph, wherever it referenced directly or as part of glyph group. Users may also search for a sequence of glyphs. Search can be controlled by several parameters in the Explorer window.

From search results, a font developer can quickly jump to a particular line inside a lookup input or context. This can be done by Ctrl-clicking on the corresponding line in the search results. By Alt-clicking on a lookup or group name, user can open the corresponding lookup or glyph group. When user clicks on glyph name, VOLT will jump to glyph definition inside glyph editor. Same Alt-Click is also enabled in the lookup window (inside both input or context fields).

Font Explorer can be accessed by clicking 'Explore' button on the toolbar or from Tools menu.

Lookup comments

Font designers can now add comments to each lookup in font project. If one of comment lines starts with "TODO:", it is considered special to-do item for this lookup. Lookup comments can be added from lookup window menu.

Main window

Main window now supports view options allowing the display of detailed information about lookups and glyph groups right inside main project window. Lookup list can also display lookup content, comments, or to-do action items. Glyph group can show group content. View options can be controlled from the redesigned options dialog.

VOLT now remembers main form size and position, view options, and font sizes used in other VOLT windows. Overall form layout had changed, giving more space to lookup and group lists. Feature tree opens in compact state, with lookup lists collapsed by default.

Project improvements

Performance is significantly improved for project compilation, loading and saving. It is now several times or even tens of times faster on complex fonts. Font file size is also improved by avoiding keeping intermediate compilation tables.

Option had been added to avoid overwriting the cmap table from VOLT, allowing cmap editing by other font tool like FontLab.

Support had been added for FontLab glyph syntax in lookups and the proofing tool. ‘/’ is now allowed as a separator between glyph along with space and comma, enabling simple copy-paste from FontLab.

Detailed error messages for various problems with project import and editing have been added.

Compilation

Detailed error messages added for some compilation errors and invalid project sources.

Maximum number of components per ligature is increased from 6 to 16.

Vertical form substitution features ‘vert’ and ‘vrt2’ are compiled in a way that is compatible with GDI.

Other changes

Updated usp10.dll and sample fonts to versions shipped with Windows Vista SP1.

Tags.txt file updated, including recently added features and the new Indic v.2 tags.

Kern2Volt updated to support longer glyph names (up to 255 characters).

Multiple bug fixes.

1.2

Context exclusion syntax for contextual lookups

This is the new way of using contexts in VOLT lookups, allowing font developer to do things that were not possible before and to implement lookups more efficiently. Inside the lookup user can use 'EXCEPT' contexts and substitution or positioning will happen only if input does not match excluded context. To do this, you simply type 'EXCEPT' word (case sensitive) in the beginning of context you want to exclude. You can use both normal and 'EXCEPT' context in one lookup. The only restriction is to put all 'EXCEPT' contexts before normal ones.

Here are few simple examples of how context exceptions can be used:

First, in this example we’ll substitute letters with special forms at the end of the words. Normally, you can't do this or can do with very unintuitive.

Letters -> EndOfWordForms In context: EXCEPT | Letters

The second example mixes normal and except contexts, making code more readable. Before, you would need at least two lookups to do this and this would cause unnecessary substitutions.

A -> A.1 In context: EXCEPT | x y | x

Export and import for multiple lookups and multiple groups

You can now select multiple lookups and export them into single file. Same can be done with groups.

This change required slight changes in export file syntax. This is important if you have lookups or groups exported from older version and want to use them in the new VOLT.

Even if you have one lookup in the file, it should be appended with the 'END' keyword at the very end. (You can use your favorite text editor for that). Please note: if you import lookup from new VOLT into older version, only the first lookup will be imported.

If you have a positioning lookup that uses anchors, 'END_POSITION' keyword should be moved before all anchors in the file. And, of course, do not forget the 'END'.

Main window improvements

You can now select and drag multiple lookups from lookup list into feature tree. You can delete several lookups as well.

Feature tree is not refreshing and expanding after every change anymore. Also, if you select a feature node in the tree, lookup list will automatically select all lookups associated with this feature – a convenient way to check if some lookup is missing from the feature.

Users may re-import cmap table from the font at any time. It is useful when font had been modified outside VOLT with some other tools. You just should not forget to do this first thing after you opened font in VOLT - otherwise cmap will be overwritten by data stored in the VOLT project.

Proofing tool improved experience

Now, when you close the proofing tool window and open it again it restores all parameters that you used to test your font – input glyphs, script and language system, features applied.

Also, debugging your lookups is made easier. Instead of using lookup navigation buttons, you can just use combobox above it and jump directly to the lookup you are interested in.

Glyph properties window improvements

Character codes for surrogates can be entered as scalar values instead of surrogate pairs. Surrogate pair format is still recognized but immediately converted into scalar value. Please note that because of that change older versions of VOLT will not understand fonts saved from this new version, but only if surrogate characters are used in the project.

Search box had been added to glyph editor – at the very top, above glyph properties text box with Find button. Button is the same as it used to be, but when you type into the box VOLT will dynamically search for and select first glyph that has specified prefix. Also, if you type U+xxxx it will search for the glyph which has this character mapped to it, e.g. U+61 or U+0061 will select Small Latin ‘a’.

Positioning lookup editing

New, convenient model to restrict anchor movement added to positioning window. When dragging an anchor with the mouse you can press Shift key to allow anchor only move horizontally, and press Control key for vertical-only movement. If you press Control/Shift in the middle of the dragging it will have the same effect as if it was pressed from the very beginning - anchor will jump onto the original vertical or horizontal position.

Compilation options

You may now control compilation by instructing VOLT to use extension lookups or choose to use format 2 for pair positioning lookups (by default, format 1 is used). These options are saved in the project and used every time project is compiled. Use this option only when it is needed – when size of the tables in the font becomes too big to fit your lookups.

Various bug fixes

Multiple minor and not so minor bugs fixed in VOLT.

Supplemental files updated

Supplemental files are updated. New Uniscribe is taken from a recent Windows Vista build, integrating the latest changes to script shaping engines. Mangal font is also latest Vista version. It is renamed to "Mangal Sample" and has hints stripped out.

1.1

Initial release