|
|
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:
|
|
|
|
|
|
* `unicodedata2 <https://pypi.python.org/pypi/unicodedata2>`__: ``unicodedata`` backport for Python 2.7
|
|
|
and 3.x updated to the latest Unicode version 12.0. Note this is not necessary if you use Python 3.8
|
|
|
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.
|