-------------------------------
- [autohint] Added new feature to support sets of glyphs with
different baselines. You can now specify several different sets of
global alignment zones and stem widths, and apply them to particular
sets of glyphs within a font when hinting. See option '-hfd' for
documentation.
- [autohint] Allow AC to handle fonts with no BlueValues, aka
alignment zones.
- [autohint] Respect BlueFuzz value in font.
- [autohint] Fixed the options to suppress hint substitution and to
allow changes.
- [autohint] When hinting a font with no alignment zones or invalid
alignment zones (and with the '-nb' option), set the arbitrary
alignment zone outside the FontBBox, rather than the em-square.
- [checkOutlines] Fixed bug where the arms of an X would be falsely
identified as coincident paths, when they are formed by only two
paths with identical bounding boxes.
- [checkOutlines] Fixed bug where very thin elements would get
identified as a tiny sub path, and get deleted.
- [checkOutlines] Fixed bug in determining path orientation. Logic
was just following the on-path points, and could get confused by
narrow concave inner paths, like parentheses with an inner contour
following the outer contour, as in the Cheltenham Std HandTooled
faces.
- [checkOutlines] Fixed bugs in determining path orientation.
Previous logic did not handle multiple inner paths, or multiple
contained outer paths. Logic was also dependent on correctly sorting
paths by max Y of path bounding box. Replaced approximations with
real bezier math to determine path bounding box accurately.
- [checkOutlines] Changed test for suspiciously large bounding box
for an outline. Previous test checked for glyph bounding box outside
of fixed limits that were based on a 1000 em square. The new test
looks only for paths that are entirely outside a rectangle based on
the font's em square, and only reports them: it does not ever
delete them. Added new option '-b' to set the size of the design
square used for the test.
- [checkOutlines] Fixed bug where it would leave a temp file on disk
when processing a Type 1 font.
- [checkOutlines] Removed test for coincident control points. This
has not been an issue for decades. It is frequently found in fonts
because designers may choose to not use one of the two control
points on a curve. The unused control point then has the same
coordinates as its nearest end-point, and would to cause
checkOutlines to complain.
- [compareFamily] Single Test 6. Report error if there is a patent
number in the copyright. Adobe discovered that a company can be sued
if it ships any product with an expired patent number.
- [compareFamily] Single Test 22 (check RSB and LSB of ligature vs.
the left and right ligature components) did not parse contextual
ligature substitution rules correctly. Now fixed.
- [compareFamily] Family Test 18. Survive OTF fonts with no blue
values.
- [compareFamily] Family Test 2 (Check that the Compatible Family
group has same nameIDs in all languages): Added the WPF nameIDs 21
and 22 to the exception list, which may not exist in all faces of a
family.
- [fontsetplot] Fixed so it works with CID fonts. Also fixed so that
widow line control works right. Added new low level option for
controlling point size of group header.
- [fontsetplot] Fixed syntax of assert statements. Produced error
messages on first use of the \*plot commands.
- [kernCheck] Fix so that it survives fonts with contextual kerning.
It does not, however, process the kern pairs in contextual kerning.
- [makeotf] Fixed bug in mark to ligature. You can now use an
`<anchor NULL>` element without having to follow it by a dummy mark
class reference.
- [makeotf] Fixed bug which limited source CID fonts to a maximum of
254 FDArray elements, rather than the limit of 255 FDArray elements
that is imposed by the CFF spec.
- [makeotf] Fixed bugs in automatic GDEF generation. When now GDEF
is defined, all conflicting class assignments in the GlyphClass are
filtered out. If a glyph is assigned to a make class, that
assignment overrides any other class assignment. Otherwise, the
first assignment encountered will override a later assignment. For
example, since the BASE class is assigned first, assignment to the
BASE class will override later assignments to LIGATURE or COMPONENT
classes.
- [makeotf] Fix bug in validating GDEF mark attachment rules. This
now validates the rules, rather than random memory. Had now effect
on the output font, but did sometimes produce spurious error
messages.
- [makeotf] Fix crashing bug when trying to report that a glyph
being added to a mark class is already in the mark class.
- [makeotf] If the OS/2 code page bit 29 (Macintosh encoding) is
set, then also set bit 0 (Latin (1252). Under Windows XP and Windows
7, if only the Mac bit is set, then the font is treated as having no
encoding, and you cannot apply the font to even basic Latin text.
- [makeotf] By default, set Windows name ID 4 (Full Name) same as
Mac nameID 4, instead of setting it to the PostScript name. This is
in order to match the current definition of the name ID 4 in the
latest OpenType spec. A new option to makeotf ('-useOldNameID4'),
and a new key in the fontinfo file ("UseOldNameID4"), will cause
makeotf to still write the PS name to Windows name ID 4.
- [makeotf] Add support for WPF names, name ID 21 and 22.
- [makeotf] Fixed attachment order of marks to bug in generating
Mark to Ligature (GPOS lookup type 4). The component glyphs could be
reversed.
- [makeotf] Fixed bug in auto-generating GDEF table when Mark to
Mark (GPOS lookup Type 4) feature statements are used. The target
mark glyphs were registered as both GDEF GlyphClass Base and Mark
glyphs, and the former took precedence. makeotfexe now emits a
warning when a glyph gets assigned to more than one class when
auto-generating a GDEF table GlyphClass, and glyphs named in mark to
mark lookups are assigned only to the Mark GDEF glyph class.
- [makeotf] Fixed bugs in generating TTF fonts from TTF input. It
now merges data from the head and hhea tables, and does a better job
of dealing with the 'post' table. The previous logic made
incorrect glyph names when the glyphs with names from the Mac Std
Encoding were not all contiguous and at the start of the font.
- [makeotf] Added new option '-cn' for non-CID source fonts, to
allow reading multiple global font alignment zones and stem widths
from the fontinfo file, and using this to build a CID-keyed CFF
table with an identity CMAP. This is experimental only; such fonts
may not work in many apps.
- [makeotf] Fixed bug where the coverage table for an element in the
match string for a chaining contextual statement could have
duplicate glyphs. This happens when a glyph is specified more than
once in the class definition for the element. The result is that the
format 2 coverage table has successive ranges that overlap: the end
of one range is the same glyph ID as the start of the next range;
harmless, but triggers complaints in font validators.
- [makeotf] Updated to latest Adobe CMAP files for ideographic
fonts. Changed name of CMAP directories in the AFDKO, and logic for
finding the files.
- [makeotf] When providing a GDEF feature file definition, class
assignments now may be empty:
table GDEF {
GlyphClassDef ,,,;
} GDEF;
is a valid statement. You just need to provide all three commas and
the final colon to define the four classes. The following statement
builds a GDEF GlyphClass with an empty Components class.
table GDEF {
GlyphClassDef [B], [L], [M], ;
} GDEF;
- [makeotf] The glyph alias file now defines order in which glyphs
are added to the end of the target font, as well as defining the
subset and renaming.
- [makeotf] The `-cid <cidfontinfo>` option for converting a
font to CID can now be used without a glyph alias file, if the
source font glyphs have names in the form "cidXXXX", as is output
when mergeFonts is used to convert from CID to name-keyed. If the
`-cid <cidfontinfo>` option is used, and there is no glyph alias
file, then any glyphs in the font without a name in the form
"cidXXXX" will be ignored.
- [spot] Added error message for duplicate glyph IDs in coverage
tables with format 2, a problem caused by a bug in makeotf with some
Adobe fonts that use chaining contextual substitution. Note: error
message is written only if level 7 GSUB/GPOS dump is requested.
- [spot] Minor formatting changes to the GSUB/GPOS level 7 dump, to
make it easier to edit this into a real feature file.
- [spot] When writing out feature file syntax for GPOS 'ignore
pos' rules, the rule name is now written as 'ignore pos', not
just 'ignore'.
- [spot] Can now output glyph names up to 128 chars (Note: these are
not legal PostScript glyph names, and should be encountered only in
development fonts.)
- [spot] Has new option '-ngid' which suppresses output of the
trailing glyph ID `<gid>` for TTF fonts.
- [spot] No longer dumps the DefaultLangSys entry when there is
none.
- [spot] Changed dump logic for contextual and chain contextual
lookups so that spot will not dump the lookups referenced by the
substitution or position rules in the contextual lookups. The
previous logic led to some lookups getting dumped many times, and
also to infinite loops in cases where a contextual lookup referenced
other contextual lookups.
- [spot] Added support for Apple kern subtable format 3. Fixed old
bug causing crash when dumping font with Apple kern table from
Windows OS.
- [spot] Fixed error when dumping Apple kern table subtable format
0, when kern table is at end of font file.
- [spot] Fixed crashing bug seen in DejaVuSansMono.TTF: spot did not
expect an anchor offset to be zero in a Base Array base Record.
- [spot] Removed comma from lookupflag dump, to match feature file
spec.
- [spot] Added logic to support name table format 1, but it probably
does not work, since I have been unable to find a font to test with
this format.
- [spot] Fixed spelling error for "Canadian" in OS/2 code page
fields.
- [spot] Changed dump of cmap subtable 14: hex values are
uppercased, and base+UVS values are written in the order [base,
uvs].
- [stemHist] Always set the alignment zones outside the font BBox,
so as to avoid having the source font alignment zones affect
collection of stem widths.
- [stemHist] Fix bug where the glyph names reported in the stem and
alignment reports were off by 1 GID if the list of glyphs included
the '.notdef' glyph.
- [tx] Added support for option '-n' to remove hints for writing
Type 1 and CFF output fonts.
- [tx] Added new option "+b" to the cff output mode, to force
glyph order in the output font to be the same as in the input font.
- [tx] Fixed bug in flattening 'seac' operator. If the glyph
components were not in the first 256 glyphs, then the wrong glyph
would be selected.
- [tx] Added new library to read in svg fonts as a source. tx can
now read all the SVG formats that it can write. Handles only the
path operators: M, m, L, L, C, c, Z, z, and the font and glyph
attributes: 'font-family', 'unicode', 'horiz-adv-x',
'glyph-name', 'missing-glyph'.
- [tx] Fixed bug in converting TTF to OpenType/CFF. It flipped the
sign of the ItalicAngle in the 'post' table, which in turn flipped
the sign of the OS/2 table fields ySubscriptXOffset and
ySuperscriptXOffset. This bug showed up in TTF fonts built by
makeotf, as makeotf uses 'tx' to build a temporary Type 1 font
from the source TTF.
- [tx] Fixed bug where '-usefd' option was not respected, when
converting from CID to name-keyed fonts.
- Updated the internal Python interpreter to version 2.7.
- Updated Adobe Cmaps/Adobe-Japan1 files:
- Adobe-Japan1\_sequences.txt
- UniJIS-UTF32-H
- UniJIS2004-UTF32-H
- UniJISX0213-UTF32-H
- UniJISX02132004-UTF32-H
- Added several scripts related to CID font production:
- cmap-tool.pl
- extract-cids.pl
- extract-gids.pl
- extract-names.pl
- fdarray-check.pl
- fix-fontbbox.pl
- hintcidfont.pl
- subr-check.pl