The OpenType Layout Feature Code Editor allows you to take full control over all the supported OpenType layout features in your font. If you want to automatically generate features, click the toolbar icon in the upper left corner on the OpenType Designer dialog.
Because visually adding features can be very time-consuming, the editor allows you to define and edit OpenType Layout Features for both Glyph Substitutions (GSUB) and Glyph Positioning (GPOS) through one of three supported scripting languages. FontCreator supports these script-based syntaxes:
•Adobe OpenType feature description language (AFDKO FEA), the most common known feature syntax.
•Microsoft Visual OpenType Layout Tool (MS VOLT), import and export a complete VOLT project (*.vtp) file through the OpenType Designer window.
•OpenType Layout Feature Definition (OTLFD), our own syntax based on the syntax used with OTComp.
Adobe OpenType feature description language (AFDKO FEA)
This is the preferred feature syntax. Read more about it here:
https://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html
The AFDKO FEA feature syntax has several limitations, so some things that you can do within FontCreator can not be expressed in FEA syntax, namely:
•You cannot always force a specific lookup order, while shaping engines rely on the order of lookups.
•FEA does not fully support class0.
•You can only add single and ligature substitutions to a single aalt feature, used by all script language pairs.
•You can only force a sub table break in pair positioning lookups.
•With large or complex lookups, you might need to manually instruct the compiler to use a special extension lookup. FontCreator does not suffer from this limitation, as it will automatically force such extension when needed.
Besides these limitations, it also supports specifying or overriding table values, which is useful on importing a UFO based font.
FontCreator fully supports the Variable FEA Syntax as proposed here.
So it supports feature variation, like:
conditionset ConditionSet1 {
wght 500 800;
} ConditionSet1;
variation rvrn ConditionSet1 { # Required Variation Alternates
lookup SingleSubstitution35;
} rvrn;
And variable positioning like:
markClass gravecomb <anchor (wght=400:375 wdth=75:300 wght=100:375 wght=800:375) (wght=400:600 wdth=75:600 wght=100:588 wght=800:620)> @top;
and
pos S A (wght=400:-60 wght=300:0 wght=700:0 wght=300,wdth=75:0 wdth=75:0 wght=700,wdth=75:0);
Microsoft Visual OpenType Layout Tool (MS VOLT)
People who use MS VOLT, can import and export such feature code, so they can work with both FontCreator and MS VOLT.
VOLT also has several limitations. For example:
•It does not support nested chained context lookups
•It has no direct way of defining sub tables
•Group (class) names are case-insensitive
•It does not support the Ignore Ligatures flag
•You can not change YAdvance in single and pair positioning.
OpenType Layout Feature Definition (OTLFD)
We introduced this syntax years ago, but since most font designers are familair with the AFDKO FEA feature syntax, we have decided to no longer maintain this syntax.
Code Editor
By default the code editor will use the Adobe fea syntax, as most font designers are familiar with it, but you can select OTLFD and VOLT from the combo box, available from the upper left corner of the OpenType Layout Feature Code Editor window.
You can update and change the script at your convenience. The find and replace feature from the toolbar might be useful for this. Shortcut Ctrl F opens the Search Text dialog, F3 finds the next occurrence of the current search text, and Shift+F3 finds the previous occurrence.
Press CTRL + Space bar to show the glyph name and class name completion helper.
To test if the syntax is correct and all Glyph names are valid, click the Syntax Check button on the toolbar or use the shortcut key F9. If there are any syntax errors or glyph names that could not be resolved, the Output window will list them. You can double-click on the error to quickly jump to the line where the error occurred.
If you want the compiler to ignore unknown glyphs, and allow empty classes and lookups, then click the Ignore Unknown Glyphs (warning) icon in the toolbar.
When you click the OK button, the code will be compiled and on success will replace all your existing scripts, features, lookups, and classes, and will merge anchors.