La documentation utilisateur et la documentation développeur sont disponibles sur Read the Docs.
FontTools nécessite Python 3.8 ou version ultérieure. Nous essayons de suivre le même calendrier de prise en charge minimale de la version Python que NumPy (voir NEP 29).
Le package est répertorié dans le Python Package Index (PyPI), vous pouvez donc l'installer avec pip :
pip install fonttools
Si vous souhaitez contribuer à son développement, vous pouvez cloner le dépôt depuis GitHub, installer le package en mode 'éditable' et modifier le code source en place. Nous vous recommandons de créer un environnement virtuel, en utilisant virtualenv ou le module Python 3 venv.
# download the source code to 'fonttools' folder
git clone https://github.com/fonttools/fonttools.git
cd fonttools
# create new virtual environment called e.g. 'fonttools-venv', or anything you like
python -m virtualenv fonttools-venv
# source the `activate` shell script to enter the environment (Unix-like); to exit, just type `deactivate`
. fonttools-venv/bin/activate
# to activate the virtual environment in Windows `cmd.exe`, do
fonttools-venv S cripts a ctivate.bat
# install in 'editable' mode
pip install -e .
Le package fontTools
n'a actuellement aucune dépendance externe (obligatoire) en dehors des modules inclus dans la bibliothèque standard Python. Cependant, quelques dépendances supplémentaires sont requises par certains de ses modules, nécessaires pour débloquer des fonctionnalités optionnelles. La distribution fonttools
PyPI prend également en charge ce que l'on appelle les "extras", c'est-à-dire un ensemble de mots-clés qui décrivent un groupe de dépendances supplémentaires, qui peuvent être utilisées lors de l'installation via pip ou lors de la spécification d'une exigence. Par exemple:
pip install fonttools[ufo,lxml,woff,unicode]
Cette commande installera fonttools, ainsi que les dépendances facultatives nécessaires pour débloquer les fonctionnalités supplémentaires nommées "ufo", etc.
Lib/fontTools/misc/etree.py
Le module exporte une API de type ElementTree pour la lecture/écriture de fichiers XML et permet d'utiliser comme backend soit le module xml.etree
intégré, soit lxml. Ce dernier est préféré lorsqu’il est présent, car il est généralement plus rapide et plus sécurisé.
Extra : lxml
Lib/fontTools/ufoLib
Package pour lire et écrire des fichiers sources OVNI ; cela nécessite :
pyfilesystem2
) couche d'abstraction du système de fichiers.enum
intégré (requis uniquement sur Python < 3.4). Supplément : ufo
Lib/fontTools/ttLib/woff2.py
Module pour compresser/décompresser les polices Web WOFF 2.0 ; cela nécessite :
Extra : woff
Lib/fontTools/ttLib/sfnt.py
Pour mieux compresser les polices Web WOFF 1.0, le module suivant peut être utilisé à la place de la bibliothèque zlib
intégrée :
Extra : woff
Lib/fontTools/unicode.py
Pour afficher les noms de caractères Unicode lors du dump de la table cmap
avec ttx
nous utilisons le module unicodedata
dans la bibliothèque standard. La version incluse varie selon les différentes versions de Python. Pour utiliser les dernières données disponibles, vous pouvez installer :
unicodedata
pour Python 3.x mis à jour vers la dernière version Unicode 15.0. Supplément : unicode
Lib/fontTools/varLib/interpolatable.py
Module pour trouver le mauvais ordre de contour/composant entre différents maîtres. Il nécessite l'un des packages suivants afin de résoudre ce que l'on appelle le « problème de correspondance parfaite du poids minimum dans les graphes bipartis », ou le problème d'affectation :
Pour tracer les résultats au format PDF ou HTML, vous devez également installer :
Extra : interpolatable
Lib/fontTools/varLib/plot.py
Module de visualisation de DesignSpaceDocument et du VariationModel résultant.
Extra : plot
Lib/fontTools/misc/symfont.py
Module avancé pour l'analyse des statistiques de polices symboliques ; cela nécessite :
Extra : symfont
Lib/fontTools/t1Lib.py
Pour obtenir le créateur de fichier et le type des polices Macintosh PostScript Type 1 sur Python 3, vous devez installer le module suivant, car l'ancien module MacOS
n'est plus inclus dans Mac Python :
Supplément : type1
Lib/fontTools/ttLib/removeOverlaps.py
Simplifiez les glyphes TrueType en fusionnant les contours et les composants qui se chevauchent.
Supplément : pathops
Lib/fontTools/pens/cocoaPen.py
et Lib/fontTools/pens/quartzPen.py
Les stylos pour dessiner des glyphes avec Cocoa NSBezierPath
ou CGPath
nécessitent :
Lib/fontTools/pens/qtPen.py
Stylo pour dessiner des glyphes avec QPainterPath
de Qt, nécessite :
Lib/fontTools/pens/reportLabPen.py
Un stylo pour dessiner des glyphes sous forme d'images PNG nécessite :
Lib/fontTools/pens/freetypePen.py
Un stylo pour dessiner des glyphes avec FreeType sous forme d'images raster nécessite :
Lib/fontTools/ttLib/tables/otBase.py
Utiliser la bibliothèque Harfbuzz pour sérialiser GPOS/GSUB à l'aide de la méthode hb_repack
, nécessite :
Extra : repacker
NEWS.rst
avec toutes les modifications depuis la dernière version. Rédigez une entrée du journal des modifications pour chaque PR, avec une ou deux phrases courtes la résumant, ainsi que des liens vers le PR et les problèmes pertinents abordés par le PR. Ne mettez pas de nouveau titre, la prochaine commande le fera à votre place.pip install -r dev-requirements.txt
, puis exécutez la commande python setup.py release
à partir de la pointe de la branche main
. Par défaut, cela supplante uniquement le troisième chiffre ou « patch », à moins que vous ne passiez --major
ou --minor
pour modifier respectivement le premier ou le deuxième chiffre. Cela modifie la chaîne de version du package, extrait les modifications depuis la dernière version de NEWS.rst
et utilise ce texte pour créer une balise git annotée (ou une balise git signée si vous passez l'option --sign
et que votre compte git et Github sont configuré pour signer des commits à l'aide d'une clé GPG). Il valide également un changement de version supplémentaire qui ouvre la branche principale pour le cycle de développement ultérieur.git push --follow-tags
. Remarque : cela peut également pousser d'autres balises locales, soyez prudent.Par ordre alphabétique :
aschmitz, Olivier Berten, Samyak Bhuta, Erik van Blokland, Petr van Blokland, Jelle Bosma, Sascha Brawer, Tom Byrer, Antonio Cavedoni, Frédéric Coiffier, Vincent Connare, David Corbett, Simon Cozens, Dave Crossland, Simon Daniels, Peter Dekkers, Behdad Esfahbod, Behnam Esfahbod, Hannes Famira, Sam Fishman, Matt Fontaine, Takaaki Fuji, Rob Hagemans, Yannis Haralambous, Greg Hitchcock, Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye, Jack Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal Leming, Peter Lofting, Cosimo Lupo, Olli Meier, Masaya Nakamura, Dave Opstad, Laurence Penney, Roozbeh Pournader, Garret Rieger, Read Roberts, Colin Rofls, Guido van Rossum, Just van Rossum, Andreas Seidel, Georg Seifert, Chris Simpkins, Miguel Sousa, Adam Twardoch, Adrien Tétar, Vitaly Volkov, Paul Wise.
Copyright (c) 2000 BeOpen.com. Tous droits réservés.
Copyright (c) 1995-2001 Corporation pour les initiatives nationales de recherche. Tous droits réservés.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. Tous droits réservés.
Amusez-vous!