AFDKO 2.0 : Post your feedback here

Miguel Sousa's picture

If you're using the new AFDKO (v2.0), we would like to hear your feedback. Please use this thread for your comments, wishes, concerns, bugs found, and/or anything related with the tools contained in the new AFDKO. Thanks!

Andreas has already started.

andreas's picture

Overall, it runs and I'm able to compile the projects from 1.6.

I like to know how to set up usWinAscent and usWinDescent.

table OS/2 {
TypoAscender 765;
TypoDescender -235;
TypoLineGap 250;
usWinAscent 900;
usWinDescent -350;
} OS/2;

This is not working, why?

1. the mystery of -nr

If I use a project file I got lots of the time: [FATAL] unrecognized option (-nr).
Now I found out it its related to the option:
ReleaseMode true
But if you set it to false, the -nr fatal error comes up. So better use
#ReleaseMode true (vs) ReleaseMode false

2. relative paths under windows only by using -fp option with *.fpr file.

3. This message seems to be a general one since it comes everytime. Can we turn it off since its not specific to the font?

makeotfexe.exe [NOTE] There are -12851 instances of the deprecated “except” syntax in the feature file. Though such statements are processed correctly by this parser for backward compatibility, please update them to the newer “i gnore substitute” syntax. For example, change “except a @LET sub a by a.end;” to “ignore sub a @LET; sub a’ by a.end;”. (Note that the second rule is now required to be marked to identify it as a Chain Contextual and not a Single Substituti
on rule.)

So far I tested the makeotf programm only.

The FontLab scripts installer seems not to work under python 2.2 win xp.

line 134 and 105
NameError: global name '__file__' is not defined

So I tryed to move the files manually. No script is running. Maybe this is related no path was added to the python site packages by the installer. So what path should we set manually?

Example, the Auto-Hint script

Traceback (most recent call last):
File "", line 70, in ?
ImportError: No module named string

win xp sp2, FL5, Python 2.2

dezcom's picture

Bravo Miguel. I look forward to giving it a spin.


k.l.'s picture

> [...]
> usWinAscent 900;
> usWinDescent -350;
> ) OS/2;

The Feature File Syntax says:

andreas's picture

and makeotf says:
syntax error at "WinAscent" missing "}"

ok fixed, since "WinAscent" is not the same like "winAscent" :-)

I miss to give the makeotf the path and name of the fontinfo file. Is it no longer needed?

BTW. Its not commen this file is called "fontinfo" everytime and placed in the path of yourfont.pfa. For example I call it _fontinfo.txt. Other developers place it under other paths call it with an other name. So if the new FDK is looking "hard coded" for "fontinfo" it can't find it.

My first impression is, in points of usability, this fdk has some serious back steps compared to 1.6. Its bound the developers special workflow. :-(

titus n.'s picture

i experienced the same problems with the scripts as andreas described; any solutions yet?

Miguel Sousa's picture

Karsten is right. The correct parameter names are winAscent and winDescent, which are case-sensitive. For a complete list of the parameters that can be specified by the FDK, in regards to the OS/2 table, please refer to the file 'OT Feature File Syntax.html', section 9.f. OS/2 table.

As for the file fontinfo, please refer to the documentation file 'MakeOTFUserGuide.pdf', page 9.

titus n.'s picture

i updated my python installation and now the install macros scripts works; nevertheless, most of the scripts don't.
for example 'autohint' gives me:

Traceback (most recent call last):
File "", line 798, in ?
ImportError: No module named win32api

the 'adobe-update scripts' script, however, seems to work.

i checked other non-FDK scripts and they also work fine.

winxp, FL 5.0.2, python 2.4.3

k.l.'s picture

Not using a PC for this, but my guess is win32api is an 'external' Python library which you have to grab somewhere and install in addition to python and fdk.

titus n.'s picture

thanks karsten,

i downloaded the win32api.dll and placed it into various places that seemed appropriate: the windows system folder, the python dll folder, the fontlab modules folder.

eventually the error changed, but was not solved:

Traceback (most recent call last):
File "", line 798, in ?
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

in line 798 tries to import the win32api.dll and the; i also downloaded the latter and placed it into the fl modules folder - with no changes in behaviour.

if __name__ == '__main__':
dontShowDialog = 1
if haveAC:
result = 2
if == "nt":
import win32api
import win32con

any ideas?

lunde's picture

AFDKO Version 2.0 includes several new tools, and I recently authored a new Adobe Tech Note, #5900, to act as a tutorial for three of them, specifically for mergeFonts, rotateFont, and autohint. This Adobe Tech Note will be available at the following URL:

And, it will be included in the next release of AFDKO. Until then, if anyone would like to receive this Adobe Tech Note, contact me by email.

Ken Lunde
Senior Computer Scientist, CJKV Type Development
Adobe Systems Incorporated

dezcom's picture

Thanks Ken! I'll take you up on that.


Read Roberts's picture

Hi Andreas,

As Miguel has noted, the correct feature file keywords are described in the file "FDK/Technical Documentation/OT Feature File Syntax.html"

The "fontinfo" file is no longer required, and when used, makeotf pays attention to only a few parameters. The way things work now is that makeotf will llook , in order, in three sources for parameters settings:
- the fontinfo file, if there is one
- the project file
- the command line
If the different sources specify different settings, the last one seen wins.

If you use a project file, you have no need to use a fontinfo file at all, and would do better to not have one, in order to avoid possible conflicting options. I agree that if you *do* use a fontinfo file, it would be better to be abel to specify a path - I will add this to makeotf with the next bug fix release.

I am pleased to hear that you do use the project files. I thought it would be useful to have this option, but no one at Adobe uses them, and your e-mail is the first evidence that I have seen that anyone else does, either. I wil llook into the '-nr' problem under Windows.

The easiest way to supress the complain about use of the 'except' clause in in the feature file is to change from using "except' to 'ignore".

- Read Roberts

Read Roberts's picture


My apologies - I see that the dependency on the win32api and modules in the Windows version is not documented. I will fix this in the next release. Note that they have to be installed in one of the directories which is in the sys.path list of your Python. The only directory under FontLab's Macros directory which is in this list is in Macros/System/Modules. Did you put both these modules in one of the directories in sys.path?

Another limitation is that the AutoHint and CheckOutlines modules use C extension modules that are linked for use with Python 2.3 ( aka FontLab 5) and won't work with Python 2.2 ( aka FontLab 2.2).

- Read Roberts

titus n.'s picture


Note that they have to be installed in one of the directories which is in the sys.path list of your Python. The only directory under FontLab’s Macros directory which is in this list is in Macros/System/Modules. Did you put both these modules in one of the directories in sys.path?

this is actually what i've done, yet, it doesn't work. i also added a path file to the site-packages folder (just like the one created by the FDK) - but it makes no difference. fontlab (or python) still reports that the library can't be found.

twardoch's picture

Windows users should install the win32all package:

It includes the win32api etc. modules.


Read Roberts's picture

One current problem with Python extension modules is that they work only with the version of Python for which they were built. It is possible that your win32api module doesn't match your Python. Another possibility is that the win32api module may have dependencies on other modules. I will echo Adam Twardoch's good advice and recommend that you download the entire win32 package. However, I will add that you need to pick the right one that works with the version of Python that you have. I actually used "pywin32-205.win32-py2.3.exe" to install the win32 package for my co-workers at Adobe. This translates as "build 205 of the win32 package, built for Python 2.3". The newer builds of win32 ought to work, as long as they are built for the Python you are using. These can be found at:

Note that the AFDK0 FontLab scripts are built to work with Python 2.3. Autohint and CheckOutlines in particular use extension modules that are tied to specifically to Python 2.3; the others assume in some places support for operations that exist only in 2.3 and later.

- Read

titus n.'s picture

i was aware of the version interdependence and installed the extensions accordingly. which didn't solve it. right now i am trying to get it to work with python 2.3.5 - not successful yet. i'll check back for new developments.

twardoch's picture


any chance that Adobe could also release AFDKO 2.0 compiled for Python 2.4?


Read Roberts's picture

Yes, I can build the Python 2.4 libs as well, for the next update in a few weeks. Note that this affects only the FDK Check Outlines and Auto Hint scripts - the command -line tools are entirely independent of any installed Python, and none of the other scripts for FontLab use a Python extension module.

croth's picture

Good soul mind to post screenshot(s) how to install AFDKO (v2.0)?

- C.

Read Roberts's picture

The file "FDK/Read_Me_First.html" explains how to install the AFDKO v2.0

Goran Soderstrom's picture

I have tried the Autohinter for a couple of project, and it feels very nice. Sometimes when autohinting with FontLabs own hinter, I got a couple of red "H" that I didnt know how to fix.

Adobes autohinter creates all green H’s ;-) I also kind of like that the log shows exactly what the autohinter did do to the font.

andreas's picture

Maybe a bug or a bug in the documentation, since the example doc shows the winDescent value with a minus.

The winDescent value have to be written without minus. Otherwise the font will be currupted and crashes instandly my xp system.

example for correct compilation:

table hhea {
Ascender 900;
Descender -350; # not 350
LineGap 0;
} hhea

table OS/2 {
TypoAscender 765;
TypoDescender -235;
TypoLineGap 250;
winAscent 900;
winDescent 350; # not -350
Panose 2 2 5 2 6 5 6 2 4 3;
XHeight 455;
CapHeight 720;
FSType 4;
WeightClass 400;
WidthClass 5;
} OS/2;

Miguel Sousa's picture

> Adobes autohinter creates all green H’s ;-)

This reminds me of something.
What I'm going to say might be obvious to many of you, but just wanted to make clear that in order to get good/proper hinting results, Alignment Zones and Standard Stems need to be set beforehand.

Goran Soderstrom's picture

Miguel, in your opinion; do you thinks it’s OK to do this with FontLab’s auto-stems and auto alignment zones? When it comes to these matters, I really like the word Auto :)

Goran, Autodidakt

Miguel Sousa's picture

Goran, I here you there ;^)

I'd follow Adam's tip, with a couple additional steps:
1.1. Check that the auto Alignment Zones are good, i.e. they should cover all the "overshoot nodes". Eventually, you might want to shift some of these points a few units up or down.
5. Run Adobe's Autohint

That's all :^)

Goran Soderstrom's picture

Great advices! Thanks for that.

preusss's picture

If I compile my old Postscript-data in FDK2 its all ok.
If the font-data newer (in Studio 5 generated), I have this errormessage on screen.
Any suggestions?

preusss's picture

No value or key in FDK 2 for renumber?
renumber yes|no # Increment the head table FontRevision field

k.l.'s picture

Andreas, as regards your latest example:

Someone please correct me if I'm wrong, but I think that (as for OS/2 TypoDescender) hhea Descender must be a negative value:

table hhea (
    Ascender 900;
    Descender -350;  # not 350
    LineGap 0;
) hhea;

OS/2 winDescent is the only below-the-baseline value which must be stated with a positive value! (The FLS5 FontInfo interface asks for a negative winDescent value for reasons of consistency and user-friendliness.)
As to the feature file syntax document, sections 9.d and 9.f -- it seems it's just minor copy/paste errors.


[Third editing now. Hope there are no mistakes left ...]

preusss's picture

If in
/Notice (Copyright © 2006 something. All Rights Reserved.) readonly def
... Error

If in
/Notice (Copyright (c) 2006 something. All Rights Reserved.) readonly def
... no problem

That’s all. Sorry.


andreas's picture

Thank you Karsten, yes the hhea Descender needs a negative value. I corrected my example above.

preusss's picture

What means this errormessages (comparefamily):

Single Face Test 6:
Error: Environment variable CF_DEFAULT_URL is not set, so I can't compare it to Mac Foundry URL name id 11.
Error: Environment variable CF_DEFAULT_FOUNDRY_CODE is not set, so I can't compare it to the OS/2 table foundry code.


peterbruhn's picture

Update: Sorry, I should have installed a fresher version of Stuffit Expander before posting. Everything works fine now! :-D Playtime!

Am I the only one who can't UnStuff the Mac file?
I get an error everytime. I want to play.

Read Roberts's picture

Both the Windows XP and Mac OSX operating systems have things called "environment variables", which have a name and a text value. compareFamily looks for two environment variables with the names shown in the error messages that you saw. If present, it uses the values to compare with values in the font, and complains if font values and the environment variable values are not the same.

To read how to set environment variables in Windows, see::

For Mac OSX, open a command-line window (aka the Terminal program) and first try the command:
If this works , you then enter the command
and it is set for any programs that you run by entering commands in this window. To make the setting permanent, create/edit the file in your home directory named ".profile", and add in the file the same two commands that you tried.

If the first command produced the response "Command not found", then the Terminal window is using the tcsh shell program to process the command lines, and the commands to set the variable are:

and to make the settings pemanent, you shoud certate or edit the file in your home directory named ".cshrc", and add these commands.

Of course, you should use your values for the 4 letter foundry code and for the name ID 11 fondry URL, rather than the values for Adobe.

Read Roberts's picture

Other people have complained about how the FDK 2.0 makeotf doesn't have a "renumber" option. The bug fix version , due in a few weeks, will have one.

Read Roberts's picture

Hi preusss,

This happens because makeotf is compiled with debug libraries, and will show a dialog like this whenver a low-level assetion that checks data integrity fails. The problem here is most llikely one of encoding, that one of the input files has characer codes above low ASCII, like an umlaut. I suggest checking:
the feature file "_features.txt"
the menu name file ""FMNDB_Prillwitz.txt"
the GOADB file "GOA_GTF.txt"
by cutting them down to just a stub with only some safe text, and then adding the original text back in a section at a time, to find the problem. It is not legal to use high-ASCII characters in glyph names. It is legal in some of the name table names, but you must represent these character codes as hex codes in the feature file. For example, the char code for the "copyright" glyph is "\00a9" for Windows menu names, and "\a9" for Mac menu names; you can see this in the "" exampel file in the "Example Font Sources". The character codes for the Windows platofrm names are Unicode values, for the Mac they are Mac Roman ecnodign values.

- Read Roberts

Read Roberts's picture

Anyone using FDK 1.6 feature files needs to read the following

David Agg asked why his FDK 1.6 feature file was failing at the lines:
> feature kern {
> language ROM;


This works in the FDK 1.6, because the default script is ‘latn’; you get the same effect is if you had written
script latn;
language ROM;

However, in the FDK 2.0, the default script is “DFLT”, so the effect is saying:
script DFLT;
language ROM;

and the only legal language tag for the DFLT script is the ‘dflt’ language.

To get what you want, you should put the lines:
languagesystem DFLT dflt;
languagesystem latn dflt;
languagesystem latn ROM;

at the beginning of the feature file; all features not registered under a specific language will then be registered under these three script/language pairs.

In features where you specify any language or script, you need to spell out all the script language combinations, and explicitly include the appropriate features under each, e.g
script DFLT;
language dflt;
lookup LOOKUP_1 {
... lots of rules

script latn;
language ROM;
lookup LOOKUP_1; # reference to the previously defined LOOKUP_1,
# so that it will be included under latn-ROM as well as DFLT-dflt.

The compareFamily tool now dumps a table of script/languages vs sets of lookups, so you can see what’s actually in the font.
You should look at this when you are working out new script/language settings in the feature file.

- Read Roberts

Read Roberts's picture

Problems with the FDK 2.0 and FontLab on Windows.

Some people have seen that when they add the FDK executable directory "FDK/Tools/win" to their PATH variable, that FontLab starts behaving badly - macros disappear, and other odd things. If this happens to you, remove the FDK directory from the PATH variable, and don't install the FDK. The next release in a few weeks will fix this.

The problem is that the PATH variable is used by Windows as the list of directories to search for not only programs, but also libraries. 'FDK/Tools/win" contains Python and system libraries that may conflict with what FontLab uses. Thanks to John Hudson, who put up with a lot of e-mails and tests to help figure out what was wrong.

- Read Roberts

preusss's picture

Hi Read,

many tnx.


paul d hunt's picture

i'm trying to get the AutoHinter to work on PC running the macro from within FLS5, but i get the following error:

Traceback (most recent call last):
File "", line 75, in ?
ImportError: No module named plistlib

what do i do when i have missing modules?

croth's picture

"Good soul mind to post screenshot(s) how to install AFDKO (v2.0)?"

"The file “FDK/Read_Me_First.html” explains how to install the AFDKO v2.0"

I am lost with tech. Did not understand.


- C.

andreas's picture

Anon Bug

Anonymous data blocks will be ignored by the FDK. I have tried different positions in the feature file. The FDK compiles it without any error message but the resulting font file have always the same byte length like the font without the anon block, so my gues no anonymous block was added.

No luck too with the example form the tech doc "10. Specifying anonymous data blocks".

Miguel Sousa's picture

To spare yourself from having some problems while trying to use the AFDKO, install the tools in paths that contain NO space characters. Also, do the same with the folders and files you're working with.

For example, CompareFamily won't work if the font files are inside a folder named "My Folder".

Tim Ahrens's picture

Sorry if this is a stupid question but it seems that the old .fpr files from my old projects are not recognised anymore. Has the format changed?

The example font provided does not include a .fpr file - is there an example .fpr file available anywhere?


andreas's picture

hi Tim, no FDK2 training on the TypeTech week?

Yes, the format have changed.

makeotf -fp bla.fpr

FeaturePath Std\_Reg\features.txt
FontMenuDBPath FontMenuNameDB.txt
GlyphAliasDBPath GOA.txt
InputFontPath Std\_Reg\yourfont.pfa
OutputFontPath ready\yourfont.otf
DoAliasAndOrder true
DoSubroutinization true
ReleaseMode true

Don't try to set something above to "false", just let the line out.

Or you should try a batch file

makeotf -f yourfont.pfa -o yourfont.otf -ff features.txt -mf FontMenuName.txt -gf GOA.txt -S -ga

Tim Ahrens's picture

Thanks, Andreas.
It worked. Slowly getting there.

Batch files are a good idea - they are so much more comfortable than the real command line. I already used them with the old FDK. Plus, batch files allow you to compile a whole family at once.

Alternatively, you can set up a shortcut to your python.exe, go to the properties and manually add "(path)\ -fp" and then drag any .fpr file on it. You could have several shortcuts with different additional options added.

Or, you could set up the .fpr file type in your system so that double-clicking .fpr files "opens" them with Python and Maybe this is the most elegant solution.

However, I have no idea if any of this is possible on a Mac.


Aleme's picture

Hi! paul ,

did you figure out what to do when modules are missing ?

I have the same problem.

Tim Ahrens's picture

I experienced a strange problem:

The OT features in the fonts generated with the new FDK do not work in InDesign and they do not show up in the menu. Kerning does not work either.
However, when I open the font in FL the features are there and working. Even in Word the kerning works.

Any ideas?


[edit] Read's suggestion to insert the languagesystem tags fixed the problem.

paul d hunt's picture

did you figure out what to do when modules are missing ?

sorry, no. i guess i need to bone up on python to figger it all out.

Syndicate content Syndicate content