python-fonttools
Port variant v12
Summary Tools to manipulate font files (3.12)
Package version 4.58.4
Homepage https://github.com/fonttools/fonttools
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants v13
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 21 JUN 2025, 17:57:27 UTC
Port created 04 JAN 2020, 01:03:23 UTC
Subpackage Descriptions
single |CI Build Status| |Coverage Status| |PyPI| |Gitter Chat| What is this? ~~~~~~~~~~~~~ | fontTools is a library for manipulating fonts, written in Python. The project includes the TTX tool, that can convert TrueType and OpenType fonts to and from an XML text format, which is also called TTX. It supports TrueType, OpenType, AFM and to an extent Type 1 and some Mac-specific formats. The project has an `MIT open-source license `__. | Among other things this means you can use it free of charge. [User documentation] and [developer documentation] are available at [Read the Docs]. Installation ~~~~~~~~~~~~ FontTools requires [Python] 3.9 or later. We try to follow the same schedule of minimum Python version support as NumPy (see [NEP 29]). The package is listed in the Python Package Index (PyPI), so you can install it with [pip]: Changelog ~~~~~~~~~ 4.58.4 (released 2025-06-13) ---------------------------- - [feaLib] Allow for empty MarkFilter & MarkAttach sets (#3856). 4.58.3 (released 2025-06-13) ---------------------------- - [feaLib] Fixed iterable check for Python 3.13.4 and newer (#3854, #3855). 4.58.2 (released 2025-06-06) ---------------------------- - [ttLib.reorderGlyphs] Handle CFF2 when reordering glyphs (#3852) - [subset] Copy name IDs in use before scrapping or scrambling them for webfonts (#3853) 4.58.1 (released 2025-05-28) ---------------------------- - [varLib] Make sure that fvar named instances only reuse name ID 2 or 17 if they are at the default location across all axes, to match OT spec requirement (#3831). - [feaLib] Improve single substitution promotion to multiple/ligature substitutions, fixing a few bugs as well (#3849). - [loggingTools] Make ``Timer._time`` a static method that doesn't take self, makes it easier to override (#3836). - [featureVars] Use None for empty ConditionSet, which translates to a null offset in the compiled table (#3850). - [feaLib] Raise an error on conflicting ligature substitution rules instead of silently taking the last one (#3835). - Add typing annotations to T2CharStringPen (#3837). - [feaLib] Add single substitutions that were promoted to multiple or ligature substitutions to aalt feature (#3847). - [featureVars] Create a default LangSys in a ScriptRecord if missing when adding feature variations to existing GSUB later in the build (#3838). - [symfont] Added a ``main()``. - [cffLib.specializer] Fix rmoveto merging when blends used (#3839, #3840). - [pyftmerge] Add support for cmap format 14 in the merge tool (#3830). - [varLib.instancer/cff2] Fix vsindex of Private dicts when instantiating (#3828, #3232). - Update text file read to use UTF-8 with optional BOM so it works with e.g. Windows Notepad.exe (#3824). - [varLib] Ensure that instances only reuse name ID 2 or 17 if they are at the default location across all axes (#3831). - [varLib] Create a dflt LangSys in a ScriptRecord when adding variations later, to fix an avoidable crash in an edge case (#3838). 4.58.0 (released 2025-05-10) ---------------------------- - Drop Python 3.8, require 3.9+ (#3819) - [HVAR, VVAR] Prune unused regions when using a direct mapping (#3797) - [Docs] Improvements to ufoLib documentation (#3721) - [Docs] Improvements to varLib documentation (#3727) - [Docs] Improvements to Pens and pen-module documentation (#3724) - [Docs] Miscellany updates to docs (misc modules and smaller modules) (#3730) - [subset] Close codepoints over BiDi mirror variants. (#3801) - [feaLib] Fix serializing ChainContextPosStatement and ChainContextSubstStatement in some rare cases (#3788) - [designspaceLib] Clarify user expectations for getStatNames (#2892) - [GVAR] Add support for new `GVAR` table (#3728) - [TSI0, TSI5] Derive number of entries to decompile from data length (#2477) - [ttLib] Fix `AttributeError` when reporting table overflow (#3808) - [ttLib] Apply rounding more often in getCoordinates (#3798) - [ttLib] Ignore component bounds if empty (#3799) - [ttLib] Change the separator for duplicate glyph names from "#" to "."
Configuration Switches (platform-specific settings discarded)
PY312 ON Build using Python 3.12 PY313 OFF Build using Python 3.13
Package Dependencies by Type
Build (only) python312:dev:std
python-pip:single:v12
autoselect-python:single:std
Build and Runtime python312:primary:std
Download groups
main mirror://PYPIWHL/0b/2f/c536b5b9bb3c071e91d536a4d11f969e911dbb6b227939f4c5b0bca090df
Distribution File Information
a10ce13a13f26cbb9f37512a4346bb437ad7e002ff6fa966a7ce7ff5ac3528bd 1114660 python-src/fonttools-4.58.4-py3-none-any.whl
Ports that require python-fonttools:v12
python-booleanOperations:v12 Boolean operations on paths (3.12)
python-cffsubr:v12 CFF subroutinizer based on AFDKO tx tool (3.12)
python-cu2qu:v12 Cubic-to-quadratic bezier curve conversion (3.12)
python-fontMath:v12 Perform math operations on font data (3.12)
python-statmake:v12 Applies STAT Stylespace to a variable font (3.12)
python-ufo2ft:v12 Bridge between UFOs and FontTools (3.12)
python-ufoLib2:v12 UfoLib2 is a UFO font processing library (3.12)