3.29.0:
- [feaLib] In the OTL table builder, when the name table is excluded
from the list of tables to be build, skip compiling featureNames blocks,
as the records referenced in FeatureParams table don't exist.
- [otBase] Try ExtensionLookup if other offset-overflow methods fail.
- [feaLib] Added support for explicit subtable; break statements in
PairPos lookups; previously these were ignored.
- [cffLib.specializer] Make sure the stack depth does not exceed maxstack - 1,
so that a subroutinizer can insert subroutine calls.
- [otTables] Added support for fixing offset overflow errors occurring inside
MarkBasePos subtables.
- [subset] Write the default output file extension based on --flavor option,
or the value of TTFont.sfntVersion.
- [unicodedata] Updated Blocks, Scripts and ScriptExtensions for Unicode 11.
- [xmlWriter] Added context manager to XMLWriter class to autoclose file
descriptor on exit.
- [psCharStrings] Optimize the charstring's bytecode by encoding as integers
all float values that have no decimal portion.
- [ttFont] Fixed missing import of TTLibError exception.
- [feaLib] Allow any languages other than dflt under DFLT script.
3.28.0:
- [featureVars] Added experimental module to build FeatureVariations
tables. Still needs to be hooked up to varLib.build
- [fixedTools] Added otRound to round floats to nearest integer towards
positive Infinity. This is now used where we deal with visual data like X/Y
coordinates, advance widths/heights, variation deltas, and similar
- [subset] Improved GSUB closure memoize algorithm.
- [varLib.models] Fixed regression in model resolution
- [feaLib.ast] Fixed error when converting SubtableStatement to string
- [varLib.mutator] Set OS/2.usWeightClass and usWidthClass, and
post.italicAngle based on the 'wght', 'wdth' and 'slnt' axis values
- [py23/loggingTools] Don't automatically set logging.lastResort handler
on py27. Moved LastResortLogger to the loggingTools module
3.26.0:
- [designspace] Added a new optional layer attribute to the source element,
and a corresponding layerName attribute to the SourceDescriptor
object.
Added conditionset element to the rule element to the spec, but not
implemented in designspace reader/writer yet.
- [varLib.models] Refine modeling one last time.
- [otBase] Fixed sharing of tables referred to by different offset sizes
- [subset] Don't drop a GDEF that only has VarStore. Set to None
empty Coverage tables in MarkGlyphSets.
- [varLib]: Added --master-finder command-line option.
- [varLib.mutator] Prune fvar nameIDs from instance's name table.
- [otTables] Allow decompiling bad ClassDef tables with invalid format, with
warning.
- [varLib] Make STAT v1.2 and reuse nameIDs from fvar table.
- [varLib.plot] Show master locations. Set axis limits to -1, +1.
- [subset] Handle HVAR direct mapping. Passthrough 'cvar'.
Added --font-number command-line option for collections.
- [t1Lib] Allow a text encoding to be specified when parsing a Type 1 font
Added kind argument to T1Font constructor.
- [ttLib] Added context manager API to TTFont class, so it can be used in
with statements to auto-close the file when exiting the context
3.25.0:
[varLib] Improved support-resolution algorithm. Previously, the on-axis masters would always cut the space. They don’t anymore. That’s more consistent, and fixes the main issue Erik showed at TYPO Labs 2017. Any varfont built that had an unusual master configuration will change when rebuilt
[varLib.models] Added a main() entry point, that takes positions and prints model results.
[varLib.plot] Added new module to plot a designspace’s VariationModel. Requires matplotlib.
[varLib.mutator] Added -o option to specify output file path
[otTables] Fixed IndexError while pruning of HVAR pre-write
[varLib.models] Convert delta array to floats if values overflows signed short integer
3.24.1:
[varLib] Don't remap the same DeviceTable twice in VarStore optimizer.
[varLib] Add --disable-iup option to fonttools varLib script, and a optimize=True keyword argument to varLib.build function, to optionally disable IUP optimization while building varfonts.
[ttCollection] Fixed issue while decompiling ttc with python3
3.24.0:
[ttGlyphPen] Decompose composite glyphs if any components' transform is too large to fit a F2Dot14 value, or clamp transform values that are (almost) equal to +2.0 to make them fit and avoid decomposing.
[ttx] Added new -g option to dump glyphs from the glyf table splitted as individual ttx files.
Copied ufoLib.filenames module to fontTools.misc.filenames, used for the ttx split-glyphs option .
[feaLib] Added support for cvParameters blocks in Character Variant feautures cv01-cv99.
[Snippets] Added checksum.py script to generate/check SHA1 hash of ttx files.
[varLib.mutator] Fixed issue while instantiating some variable fonts whereby the horizontal advance width computed from gvar phantom points could turn up to be negative.
[varLib/subset] Fixed issue with subsetting GPOS variation data not picking up ValueRecord Device objects (54fd71f).
[feaLib/voltLib] In all AST elements, the location is no longer a required positional argument, but an optional kewyord argument (defaults to None). This will make it easier to construct feature AST from code
3.23.0:
[designspaceLib] Added an optional lib element to the designspace as a whole, as well as to the instance elements, to store arbitrary data in a property list dictionary, similar to the UFO’s lib. Added an optional font attribute to the SourceDescriptor, to allow operating on in-memory font objects.
[cffLib] Fixed issue with lazy-loading of attributes when attempting to set the CFF TopDict.Encoding.
[ttx] Fixed regression introduced in 3.22.0 that affected the split tables -s option.
[feaLib] Added IncludedFeaNotFound custom exception subclass, raised when an included feature file cannot be found.
[otTables] Changed VarIdxMap to use glyph names internally instead of glyph indexes. The old ttx dumps of HVAR/VVAR tables that contain indexes can still be imported.
[varLib] Implemented VarStore optimizer.
[subset] Implemented pruning of GDEF VarStore, HVAR and MVAR.
[sfnt] Restore backward compatiblity with numFonts attribute of SFNTReader object.
[merge] Initial support for merging LangSysRecords.
[ttCollection] don’t seek(0) when writing to possibly unseekable strems.
[subset] Keep all --name-IDs from 0 to 6 by default.
[cffLib] Added width module to calculate optimal CFF default and nominal glyph widths.
[varLib] Don’t fail if STAT already in the master fonts
3.22.0:
- [subset] Support subsetting endchar acting as seac-like components
in CFF.
- [feaLib] Allow to build from pre-parsed ast.FeatureFile object.
Added tables argument to only build some tables instead of all.
- [textTools] Replaced safeEval with ast.literal_eval.
- [feaLib] Added option to the parser to not resolve include statements.
- [ttLib] Added new ttCollection module to read/write TrueType and
OpenType Collections. Exports a TTCollection class with a fonts
attribute containing a list of TTFont instances, the methods save
and saveXML, plus some list-like methods. The importXML method is
not implemented yet.
- [unicodeadata] Added ot_tag_to_script function that converts from
OpenType script tag to Unicode script code.
- Added new designspaceLib subpackage, originally from Erik Van Blokland's
designSpaceDocument: https://github.com/LettError/designSpaceDocument
NOTE: this is not yet used internally by varLib, and the API may be subject
to changes.
- Added new FontTools icon images.
- [unicodedata] Added script_horizontal_direction function that returns
either "LTR" or "RTL" given a unicode script code.
- [otConverters] Don't write descriptive name string as XML comment if the
NameID value is 0 (== NULL).
- [unicodedata] Add ot_tags_from_script function to get the list of
OpenType script tags associated with unicode script code.
- [feaLib] Don't error when "enumerated" kern pairs conflict with preceding
single pairs; emit warning and chose the first value.
- [loggingTools] In CapturingLogHandler.assertRegex method, match the
fully formatted log message.
- [sbix] Fixed TypeError when concatenating str and bytes.
- [bezierTools] Implemented cusp support and removed approximate_fallback
arg in calcQuadraticArcLength. Added calcCubicArcLength
3.21.0:
[cmap] when compiling format6 subtable, don't assume gid0 is always called '.notdef'.
[ot] Allow decompiling fonts with bad Coverage format number.
Change FontTools licence to MIT.
[post] Prune extra names already in standard Mac set.
[subset] Delete empty SubrsIndex after subsetting.
[varLib] Don't share points in cvar by default, as it currently fails on some browsers.
[afmLib] Make poor old afmLib work on python3.
3.20.1:
[unicodedata] Fixed issue with script and script_extension functions returning inconsistent short vs long names. They both return the short four- letter script codes now. Added script_name and script_code functions to look up the long human-readable script name from the script code, and viceversa.
3.20.0:
[unicodedata] Addded new module fontTools.unicodedata which exports the same interface as the built-in unicodedata module, with the addition of a few functions that are missing from the latter, such as script, script_extension and block. Added a MetaTools/buildUCD.py script to download and parse data files from the Unicode Character Database and generate python modules containing lists of ranges and property values.
[feaLib] Added __str__ method to all ast elements.
[feaLib] Parser constructor now accepts a glyphNames iterable instead of glyphMap dict. The latter still works but with a pending deprecation warning.
[bezierTools] Added arc length calculation functions originally from pens.perimeterPen module.
[varLib] Started generating STAT table (8af4309). Right now it just reflects the axes, and even that with certain limitations: * AxisOrdering is set to the order axes are defined, * Name-table entries are not shared with fvar.
[py23] Added backports for redirect_stdout and redirect_stderr context managers.
[Graphite] Fixed some round-trip bugs
3.19.0:
[varLib] Try set of used points instead of all points when testing whether to share points between tuples.
[CFF2] Fixed issue with reading/writing PrivateDict BlueValues to TTX file. Read the commit message 8b02b5a and issue 1030 for more details. NOTE: this change invalidates all the TTX files containing CFF2 tables that where dumped with previous verisons of fonttools. CFF2 Subr items can have values on the stack after the last operator, thus a CFF2Subr class was added to accommodate this.
[_k_e_r_n] Fixed compilation of AAT kern version=1.0 tables
[ttLib] Added getBestCmap() convenience method to TTFont class and cmap table class that returns a preferred Unicode cmap subtable given a list of options.
[morx] Emit more meaningful subtable flags. Implement InsertionMorphAction
3.18.0 (released 2017-10-30)
[feaLib] Fixed writing back nested glyph classes.
[TupleVariation] Reactivated shared points logic, bugfixes.
[AAT] Implemented morx ligature subtables.
[reverseContourPen] Keep duplicate lineTo following a moveTo.
[varLib.mutator] Suport instantiation of GPOS, GDEF and MVAR.
[sstruct] Fixed issue with unicode_literals and struct module in old versions of python 2.7
3.17.0:
- [svgPathPen] Added an ``SVGPathPen`` that translates segment pen commands
into SVG path descriptions. Copied from Tal Leming's ``ufo2svg.svgPathPen``
https://github.com/typesupply/ufo2svg/blob/d69f992/Lib/ufo2svg/svgPathPen.py
- [reverseContourPen] Added ``ReverseContourPen``, a filter pen that draws
contours with the winding direction reversed, while keeping the starting
point.
- [filterPen] Added ``ContourFilterPen`` to manipulate contours as a whole
rather than segment by segment.
- [arrayTools] Added ``Vector`` class to apply math operations on an array
of numbers, and ``pairwise`` function to loop over pairs of items in an
iterable.
- [varLib] Added support for building and interpolation of ``cvar`` table
3.16.0:
[head] Try using SOURCE_DATE_EPOCH environment variable when setting the head modified timestamp to ensure reproducible builds.
[VTT] Decode VTT’s TSI* tables text as UTF-8.
Added support for Graphite font tables: Feat, Glat, Gloc, Silf and Sill.
[varLib] Default to using axis “name” attribute if “labelname” element is missing.
[merge] Added support for merging Script records. Remove unused features and lookups after merge.
Added fontTools.svgLib package. Includes a parser for SVG Paths that supports the Pen protocol. Also, added a snippet to convert SVG outlines to UFO GLIF.
[AAT] Added support for ankr, bsln, mort, morx, gcid, and cidg.
[subset] Implemented subsetting of prop, opbd, bsln, lcar.
Changelog for this release:
- [otConverters] Implemented ``__add__`` and ``__radd__`` methods on
``otConverters._LazyList`` that decompile a lazy list before adding
it to another list or ``_LazyList`` instance. Fixes an ``AttributeError``
in the ``subset`` module when attempting to sum ``_LazyList`` objects
(6ef48bd2, 1aef1683).
- [AAT] Support the `opbd` table with optical bounds (a47f6588).
- [AAT] Support `prop` table with glyph properties (d05617b4).
TTX/FontTools Version 2.4
- Option to write to arbitrary files
- Better dump format for DSIG
- Better detection of OTF XML
- Fix issue with Apple's kern table format
- Fix mangling of TT glyph programs
- Fix issues related to mona.ttf
- Fix Windows Installer instructions
- Fix some modern MacOS issues
- Fix minor issues and typos
- assume that Python 2.4 and 2.5 are compatible and allow checking for
fallout.
- remove PYTHON_VERSIONS_COMPATIBLE that are obsoleted by the 2.3+
default. Modify the others to deal with the removals.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.