2021-12-02 15:31:49 +00:00
:orphan:
2020-05-03 22:04:55 +01:00
Optional Dependencies
=====================
The fonttools PyPI distribution also supports so-called "extras", i.e. a
set of keywords that describe a group of additional dependencies, which can be
used when installing via pip, or when specifying a requirement.
For example:
.. code :: sh
pip install fonttools[ufo,lxml,woff,unicode]
This command will install fonttools, as well as the optional dependencies that
are required to unlock the extra features named "ufo", etc.
.. note ::
Optional dependencies are detailed by module in the list below with the `` Extra `` setting that automates `` pip `` dependency installation when this is supported.
:py:mod: `fontTools.misc.etree`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The module exports a ElementTree-like API for reading/writing XML files, and allows to use as the backend either the built-in `` xml.etree `` module or `lxml <https://lxml.de> `__ . The latter is preferred whenever present, as it is generally faster and more secure.
*Extra:* `` lxml ``
:py:mod: `fontTools.ufoLib`
^^^^^^^^^^^^^^^^^^^^^^^^^^
Package for reading and writing UFO source files; it requires:
* `fs <https://pypi.org/pypi/fs> `__ : (aka `` pyfilesystem2 `` ) filesystem abstraction layer.
* `enum34 <https://pypi.org/pypi/enum34> `__ : backport for the built-in `` enum `` module (only required on Python < 3.4).
*Extra:* `` ufo ``
:py:mod: `fontTools.ttLib.woff2`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Module to compress/decompress WOFF 2.0 web fonts; it requires:
* `brotli <https://pypi.python.org/pypi/Brotli> `__ : Python bindings of the Brotli compression library.
*Extra:* `` woff ``
:py:mod: `fontTools.unicode`
^^^^^^^^^^^^^^^^^^^^^^^^^^^
To display the Unicode character names when dumping the `` cmap `` table
with `` ttx `` we use the `` unicodedata `` module in the Standard Library.
The version included in there varies between different Python versions.
To use the latest available data, you can install:
2021-12-20 16:44:17 +00:00
* `unicodedata2 <https://pypi.python.org/pypi/unicodedata2> `__ : `` unicodedata `` backport for Python
3.x updated to the latest Unicode version 14.0. Note this is not necessary if you use Python 3.11
2020-05-03 22:04:55 +01:00
as the latter already comes with an up-to-date `` unicodedata `` .
*Extra:* `` unicode ``
:py:mod: `fontTools.varLib.interpolatable`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Module for finding wrong contour/component order between different masters.
It requires one of the following packages in order to solve the so-called
"minimum weight perfect matching problem in bipartite graphs", or
the Assignment problem:
* `scipy <https://pypi.python.org/pypi/scipy> `__ : the Scientific Library for Python, which internally
uses `NumPy <https://pypi.python.org/pypi/numpy> `__ arrays and hence is very fast;
* `munkres <https://pypi.python.org/pypi/munkres> `__ : a pure-Python module that implements the Hungarian
or Kuhn-Munkres algorithm.
*Extra:* `` interpolatable ``
:py:mod: `fontTools.varLib.plot`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Module for visualizing DesignSpaceDocument and resulting VariationModel.
* `matplotlib <https://pypi.org/pypi/matplotlib> `__ : 2D plotting library.
*Extra:* `` plot ``
:py:mod: `fontTools.misc.symfont`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Advanced module for symbolic font statistics analysis; it requires:
* `sympy <https://pypi.python.org/pypi/sympy> `__ : the Python library for symbolic mathematics.
*Extra:* `` symfont ``
:py:mod: `fontTools.t1Lib`
^^^^^^^^^^^^^^^^^^^^^^^^^
To get the file creator and type of Macintosh PostScript Type 1 fonts
on Python 3 you need to install the following module, as the old `` MacOS ``
module is no longer included in Mac Python:
* `xattr <https://pypi.python.org/pypi/xattr> `__ : Python wrapper for extended filesystem attributes
(macOS platform only).
*Extra:* `` type1 ``
:py:mod: `fontTools.pens.cocoaPen`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pen for drawing glyphs with Cocoa `` NSBezierPath `` , requires:
* `PyObjC <https://pypi.python.org/pypi/pyobjc> `__ : the bridge between Python and the Objective-C
runtime (macOS platform only).
:py:mod: `fontTools.pens.qtPen`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pen for drawing glyphs with Qt's `` QPainterPath `` , requires:
* `PyQt5 <https://pypi.python.org/pypi/PyQt5> `__ : Python bindings for the Qt cross platform UI and
application toolkit.
:py:mod: `fontTools.pens.reportLabPen`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pen to drawing glyphs as PNG images, requires:
* `reportlab <https://pypi.python.org/pypi/reportlab> `__ : Python toolkit for generating PDFs and
graphics.