Adobe Font Development Kit for OpenType (AFDKO) Overview.
FDK v2.0
1. Introduction
2. Overview of Programs
3. Overview of Contents
When the AFDKO is installed, all the command-line programs can be run simply by entering the command name on the Mac OSX Terminal window, or Windows XP Command window (See the file "Read_me_First.html" for installation instructions.) All command line tools provide usage and help text with the options -u and -h. There is a separate user documentation file only for the makeotf tool.
The tools fall into several different functional groups.
1.1) Making/editing fonts
autohint. This program is the Adobe auto-hinter. It can be applied to both OpenType/CFF and Type 1 fonts. Works with Type 1 and OpenType/CFF fonts only. It uses Just von Rossum's fontTools Python package for accessing and changing the font data.makeOTF. This program will build an OpenType/CFF font from a Type 1 font and a feature file that defines the OpenType layout rules, and overrides for default values. It also requires some other meta-data files.
mergeFonts. This program will merge glyphs from one font into another, optionally copying a subset from the source fonts, and changing the names of the glyphs. It can also be used to subset and change the glyph names in a font. By using the same font more than once as a source with different mapping files, glyphs can be duplicated under other names.
rotateFont. This tool will rotate and translate glyphs in a font, including the hints.
sfntedit. This is the command-line version of the old FDK 1.6 OTFTableEditor. It allows you to cut and past the entire binary block of an font table from one font to another. You do this by first using it on a source font with the "-x' option to copy a table from the source font to a separate file, and then using it with the "-a" option to add that table to a target font. It can also be used to simply delete a table, and to fix the font table checksums.
stemHist. This program provides reports which help in selecting the global hint data and alignment zones for Type 1 hinting. You should look at the reports from this tool in order to select the most common stem widths, and then use a program such as FontLab or Fontographer to set the values in the font. This should be done before hinting the font. Works with Type 1 and OpenType/CFF fonts only.
ttx. This tool can dump all or a few tables from an OpenType font to a human-readable text XML file, and can compile this XML file back to full OpenType font. It is an ideal tool for making simple changes of a few values. Used with care, it can also be used to make extensive changes. This is tool is provided by Just von Rossum as part of the fontTools library. It is provided here for convenience, in a form that does not require an installed Python interpreter.
tx. This is the command-line version of old FDK 1.6 CFFChecker. It can be used to convert most font formats to CFF or Type 1 fonts. TrueType fonts will lose their hinting in the process. It cannot convert from PostScript to TrueType, and cannot rasterize TrueType fonts.
type1/detype1. These two programs will respectively compile and decompile a Type 1 font from a plain-text representation that is easy to edit.
1.2) Proofing
spot. This is the command-line replacement for the old FDK 1.6 OTFProof. This program can report data from an OpenType font in a variety of ways. All tables can be shown as a text report of the low-level structure of the table. Most tables can be shown with a report in a more human-readable format. Some tables, including the GPOS and GSUB layout tables can be shown graphically, by outputting a PostScript file that can be sent to a printer, or viewed in Acrobat or InDesign. Mark and attachment features are not yet supported.ttx. The XML format output offers a useful report for most of the data in an OpenType font.
charplot. Shows one glyph per page. Shows the nodes and control points.
digiplot. Format favored by CJK developers; shows a large filled outline, useful glyph metrics, and a larger outline with the nodes marked.
fontplot. Make a pdf file showing all the glyphs in the font. This fills a page with many glyphs, and shows just the filled outlines at a small point size, with some info around each glyph. Works with OpenType fonts and Type 1 fonts.
fontsetplot. Make a pdf file showing all the glyphs in in a list fonts. The glyphs are shown in glyph ID order, with a fixed spacing of one em, with the glyphs from one font in one line, so that all glyphs with the same glyph name from different fonts should be in a single column. This is used to visually comfirm that that charsets are the same, and that glyph shapes are similar. It is useful for catching cases where a place-holder glyph outline was pasted in for a glyph name, but never corrected to the correct shape. The fonts are sorted first by length of character set, then by alphabetic order of the character sets, then by PostScript name.
hintplot. Shows one glyph per page. Shows hints and alignment zones.
waterfallplot. Shows a waterfall of point sizes for all glyphs in the font. This is used to evaluate hinting. In order to allow hinting to be seen, the font is embdded in the PDF, and glyphs are referenced by char code. Does not yet work with TrueType and CID-keyed fonts.
Note that the tools ending in 'plot' are all simply small command-file scripts that call a single Python script with different options. The -h" option for all these scripts will produce the same list of *all* the options supported by the single Python script. You can customize the PDF proofs by providing additional options. Look at the command files; these can by edited to supply additional options to the main script. This was completed shortly before the FDK was released, and has seen little use. It will improve over time. It uses the OpenSource Python package "Pickle" to create the PDF documents, and Just von Rossum's fontTools Python package for accessing the font data.
tx. This tool has two modes that are useful for proofing. With the "-bc' option, it will rasterize a glyph to the command-line window, using ASCII characters. This is surprisingly useful when you want a quick look at a glyph. With the "-pdf" option, it will write a pdf file which shows the glyphs in the font, either 320 per page or 1 per page.
1.3) Validation
autohint. The auto-hinting program will report at length about hinting issues. Some of these you can ignore, such as reports about near misses when a stem could be controlled by a hint-zone but is just a little too wide or too narrow. By adjusting either the stem widths or the hint-zones according to these reports, you can include more stems in the set that are controlled by hints, but you can also reasonably decide that is not worth the effort. However, many complaints do need fixing, such not having nodes at vertical or horizontal extremes of a curve.checkOutlines. This tool will check the quality of the glyph outline data, and should always be used. It is very good at detecting serious problems, such as overlap and incorrect path direction. It is overly enthusiastic about finding a number of smaller issues, but is right often enough to be worth checking al the error messages. It can also fix the problems it finds, but you should always check any glyphs that it changed - the fixes are not always better than the original problem. It uses Just von Rossum's fontTools Python package for accessing and changing the font data.
compareFamily. The tool examines all the fonts in a directory and runs many quality checks. It is the only tool which checks consistency and compares data across a family of fonts, as well as in a single font. It will point out any errors in naming within a style-linked group. Every time the Adobe Type Department finds a bug in the Adobe OpenType fonts, we try to put a check in here. It is not a complete validation tool, but it does represents several years of experience of mistakes made by typographers
sfntdiff. This is the command-line version of the old FDK 1.6 OTFCompare. This does a low-level comparison of two OpenType font files. It is most useful for quickly checking if two fonts are identical, or in which tables they differ.
ttx. The best way to see in detail how two fonts differ is to use the ttx tool to dump XML files, and then compare them with a good difference editor, such as BBEdit on the Mac, or UltraEdit on the PC.
tx. This tool has a couple of modes that are good for testing. It will show only data about the font program with in a font file, either CFF or TrueType. The "-dump" option is good for looking at a text report of the CFF font global and glyph data. The "-bc" option takes additional option that outputs a hash of the rasterized glyphs to a file. This good for finding if hinting has changed in a font; if the hash files for a set of glyphs are the same between two fonts, then the glyphs rasterized identically at the specified point size. You can use this to judge if fonts are functionally equivalent, even if the outlines are not exactly the same. Finally, converting any font to CFF will yield error reports if the font data is not syntactically correct, and if any glyphs are not hinted.
Inside the AFDKO are the following components:
- Read Me First.html: the installation instructions
- AFDKO Overview: this is a PDF file that provides an overview of how the tools work and of the process of creating OpenType fonts.
- Tools:
-
- osx: The set of Mac OSX tools
- win: the set of Windows tools
- FontLab: scripts for FontLab. None of these are polished production tools. They are mostly Python scripts written once and used once for a particular need, with little error checking, and are supplied mostly as a example of how to do something in FontLab. The only documentation is at the beginning of the script files - open them in an editor. A number of the commands - notably "AutoHint, "Check Outlines",, and the PDF proofing scripts - will open a dialog for setting preferences if you hold down the CONTROL key while clicking on the FontLab Macro run button.
- SharedData: a directory tree containing shared data files used by various tools. The "FontMenuNameDB" file is a set of entries used for some Adobe OpenType fonts as an example, for when you make your own for use with makeotf. The "GlyphOrderAndAliasDB" file is also an example file for making your own for use with makeotf. This, however, can be used as is, and contains the mappings used by Adobe fonts.
- OTFTechnical Documentation: contains a series of reference documents that will be helpful when developing OpenType fonts.
-
- "OpenType Specification": an HTML document linking you to the latest OpenType specifications on the web.
- "OpenType Feature File Syntax": an HTML document offering a detailed description of all the OpenType layout features that you can specify in your own "features" files.
- "OpenType Tables supported by Windows ATM": an HTML document that summarizes the usage of OpenType tables by the Windows version of ATM.
- "Unicode and Glyph Naming in PostScript Fonts": an HTML document that describes Adobe's PostScript(R) glyph naming conventions in the context of Unicode. The purpose of these conventions is to attach standardized semantics to glyph names, including glyphs that represent characters that don't have standard Unicode values like certain ligatures or glyphic variants.
In order to support font developers in the creation of OpenType fonts with these tools, Adobe has set up a forum for questions about using the tools, and a web site where the new versions can be downloaded. The FDK download web site is at the AFDKO Download site.. The FDK tools forum may be viewed at the Adobe FDK Forum.
There is also a public forum to which OpenType discussions are often posted. Note that this is not for discussion of the AFKO tools; it is intended only for general issues related to the development and use of OpenType fonts. To subscribe to this list, send an e-mail to:
subscribe-opentype@indx.co.uk
Adobe FDK for OpenType/March 2006
©2006 Adobe Systems Incorporated
OpenType is a trademark of the Microsoft Corporation. Macintosh is a trademark of Apple Computer Inc. Adobe, the Adobe logo, Adobe Type Manager, PostScript, Adobe InDesign are trademarks of Adobe Systems Inc.
Highlights
Overview
Get a brief description of what is in the OTFDK.
Release Notes
The history of what has changed about the FDK.
Guide to applying digital signatures
A how-to-guide aimed at the process, rather than the technical details.
Feature file syntax definition
OpenType Font Format specification
Setting font weights for Windows
The full and complicated story of how to make style linking work under Windows.
Adobe Glyph List and Unicode naming
The guide on how to name glyphs so that Acrobat can search with them.
OpenType tables used by Windows
What does what.