Github: https://github.com/fonttools/fonttools
これは何ですか?
インストール
FontToolsには、 Python 2.7,3.4以降が必要です 。
パッケージはPython Package Index(PyPI)にリストされているので、 pipでインストールすることができます:
pip install fonttools
開発に貢献したい場合は、Githubからリポジトリを複製し、パッケージを「編集可能」モードでインストールし、ソースコードを修正してください。 virtualenvまたは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 (Un\*x); to exit, just type `deactivate`
. fonttools-venv/bin/activate
# to activate the virtual environment in Windows `cmd.exe`, do
fonttools-venv\Scripts\activate.bat
# install in 'editable' mode
pip install -e .
TTX – OpenTypeとTrueTypeからXMLとBackへ
インストールしたら、 ttx
コマンドを使用して、バイナリフォントファイル( .otf
、 .ttf
など)をTTX xml形式に変換し、編集してバイナリ形式に戻すことができます。 TTXファイルの拡張子は.ttxです。
ttx /path/to/font.otf
ttx /path/to/font.ttx
TTXアプリケーションの動作は、実行するプラットフォームに応じて2つの方法で使用できます。
- コマンドラインツール(Windows / DOS、Unix、MacOSX)として、
- ファイルをアプリケーションにドロップすることで(Windows、MacOS)
TTXは、どのような種類のファイルが検出されたかを検出します.ttx
または.otf
と.ttx
ファイルが出力され、 .ttx
ファイルの場合は.ttf
または.otf
がコンパイルされます。 デフォルトでは、出力ファイルは入力ファイルと同じフォルダに作成され、入力ファイルと同じ名前になりますが、拡張子は異なります。 TTXは既存のファイルを上書きすることはありませんが、必要に応じてArial#1.ttf
などの出力ファイル名(拡張子の前に)に一意の番号を追加しますArial#1.ttf
コマンドラインからTTXを使用する場合は、コマンドプロンプトでttx -h
と入力すると表示されるヘルプテキストに説明されているような追加のオプションがあります。 以下の追加オプションがあります。
- 出力ファイルが作成されるフォルダを指定する
- どのテーブルをダンプするか、またはどのテーブルを除外するかを指定する
- 部分
.ttx
ファイルと既存の.ttf
ファイルまたは.otf
ファイルを.otf
する -
.ttx
にダンプするのではなく、簡単なテーブル情報を一覧表示する -
.ttx
ファイルを分割するためにテーブルを分割する - TrueType命令のディスアセンブルを無効にする
TTXファイル形式
現在、次の表がサポートされています。
BASE, CBDT, CBLC, CFF, CFF2, COLR, CPAL, DSIG, EBDT, EBLC, FFTM, Feat, GDEF, GMAP, GPKG, GPOS, GSUB, Glat, Gloc, HVAR, JSTF, LTSH, MATH, META, MVAR, OS/2, SING, STAT, SVG, Silf, Sill, TSI0, TSI1, TSI2, TSI3, TSI5, TSIB, TSID, TSIJ, TSIP, TSIS, TSIV, TTFA, VDMX, VORG, VVAR, ankr, avar, bsln, cidg, cmap, cvar, cvt, feat, fpgm, fvar, gasp, gcid, glyf, gvar, hdmx, head, hhea, hmtx, kern, lcar, loca, ltag, maxp, meta, mort, morx, name, opbd, post, prep, prop, sbix, trak, vhea and vmtx
他のテーブルは16進データとしてダンプされます。
TrueTypeフォントは、グリフインデックス(GlyphID)を使用して、ほとんどの場所でグリフを参照します。 これはバイナリ形式では問題ありませんが、人間にとっては非常に難しい作業です。 したがって、代わりに名前を使用します。
グリフ名は、 CFF
テーブルまたはpost
テーブルから抽出されるか、Unicode cmap
テーブルから派生します。 後者の場合、Adobeグリフリストは、Unicode値に基づいて名前を計算するために使用されます。 これらのメソッドがすべて失敗した場合、名前はGlyphIDに基づいて作成されます(例: glyph00142
)
異なるグリフが同じ名前を使用する可能性があります。 この場合、名前に#n
を付けることで名前を一意にします( n
は整数です)。元の名前は保持されているので、これは “ラウンドトリップ”フォントに影響しません。
グリフがバイナリフォント内に格納される順序が重要なので、フォント内のグリフ名の順序付きリストを維持します。
その他のツール
フォントの検査、マージ、およびサブセット用のコマンドも使用できます。
pyftinspect
pyftmerge
pyftsubset
fontTools Pythonモジュール
fontToolsのpythonモジュールは、プログラムでフォントファイルを編集する便利な方法を提供します。
>>> from fontTools.ttLib import TTFont
>>> font = TTFont('/path/to/font.ttf')
>>> font
<fontTools.ttLib.TTFont object at 0x10c34ed50>
>>>
Pythonプログラムのサンプルは、 Snippetsディレクトリにあります。
オプション要件
現在、 fontTools
パッケージには、Python標準ライブラリに含まれているモジュールのほかに、(必要な)外部依存関係はありません。 しかし、モジュールのいくつかは、オプション機能のロックを解除するために必要ないくつかの余分な依存関係が必要です。
-
Lib/fontTools/ttLib/woff2.py
WOFF 2.0 Webフォントを圧縮/解凍するためのモジュール。 必要なもの:
- brotli :Brotli圧縮ライブラリのPythonバインディング。
-
Lib/fontTools/ttLib/sfnt.py
WOFF 1.0 Webフォントをより良く圧縮するために、組み込みの
zlib
ライブラリの代わりに次のモジュールを使用することができます:- zopfli :Zopfli圧縮ライブラリのPythonバインディング。
-
Lib/fontTools/unicode.py
ttx
を使用してcmap
テーブルをダンプするときにUnicode文字名を表示するには、標準ライブラリのunicodedata
モジュールを使用します。 そこに含まれるバージョンは、Pythonのバージョンによって異なります。 最新のデータを使用するには、次のものをインストールできます。- unicodedata2 :Python 2.7および3.5用の
unicodedata
バックポートが、最新のUnicodeバージョン9.0にアップデートされました。 Python 3.6を使用している場合は、最新のunicodedata
データが既に付属しているため、これは不要です。
- unicodedata2 :Python 2.7および3.5用の
-
Lib/fontTools/varLib/interpolatable.py
異なるマスター間で間違った輪郭/コンポーネントの順序を見つけるためのモジュール。 これは、いわゆる「2つのグラフの最小重み完全一致問題」または割り当て問題を解決するために、以下のパッケージの1つを必要とします。
-
Lib/fontTools/misc/symfont.py
シンボリックフォント統計分析のための高度なモジュール。 必要なもの:
- sympy :記号的な数学のためのPythonライブラリ。
-
Lib/fontTools/t1Lib.py
古い
MacOS
モジュールはもはやMac Pythonには含まれていないため、Python 3上でファイル作成者とMacintosh PostScript Type 1フォントのタイプを取得するには、次のモジュールをインストールする必要があります。- xattr :拡張ファイルシステム属性用のPythonラッパー(macOSプラットフォームのみ)。
-
Lib/fontTools/pens/cocoaPen.py
Cocoa
NSBezierPath
を使用してグリフを描画するためのペンには、次のものが必要です。- PyObjC :PythonとObjective-Cランタイム間のブリッジ(macOSプラットフォームのみ)。
-
Lib/fontTools/pens/qtPen.py
Qtの
QPainterPath
を使用してグリフを描画するペンには、次のものが必要です。- PyQt5 :QtクロスプラットフォームUIとアプリケーションツールキットのためのPythonバインディング。
-
Lib/fontTools/pens/reportLabPen.py
グリフをPNG画像として描画するペンには、次のものが必要です。
- reportlab :PDFとグラフィックを生成するためのPythonツールキット。
-
Lib/fontTools/inspect.py
GUIフォントインスペクタでは、次のパッケージのいずれかが必要です。
テスト
テストスイートを実行するには、次のようにします。
python setup.py test
pytestがある場合は、 pytest
コマンドを直接実行できます。 テストは、インストールされたfontTools
パッケージ、またはPYTHONPATH
で最初に見つかったパッケージに対して実行されます。
また、 toxを使用して、隔離された仮想環境内の異なるPythonバージョンでテストを自動的に実行することもできます。
pip install tox
tox
引数なしでtox
を実行すると、tox.iniのenvlist
リストされているすべての環境に対してテストが実行されます。 私たちの場合、これにはPython 2.7と3.6が含まれています。このためには、 python2.7
とpython3.6
実行可能ファイルがあなたのPATH
で利用可能でなければなりません。
代替環境リストは、 -e
オプションまたはTOXENV
環境変数を使用して指定できます。
tox -e py27-nocov
TOXENV="py36-cov,htmlcov" tox
開発コミュニティ
TTX / FontToolsの開発は、主要なソフトウェア企業やタイプファウンダリや趣味の者に雇われているプロの開発者を含む、開発者の活発なコミュニティで進行中です。
フィーチャーリクエストとバグレポートはいつでも歓迎します。https://github.com/fonttools/fonttools/issues/
エンドユーザーの視点からのTTXやTTX / FontToolsの開発に関する議論のための最適な場所はhttps://groups.google.com/d/forum/fonttoolsメーリングリストです。 継続的な統合通知の開発https://groups.google.com/d/forum/fonttools-devメーリングリストもあります 。 behdad@behdad.orgで Behdadに個人的にメールを送ることもできます
歴史
fontToolsプロジェクトは1999年にJust van Rossumによって始められ、http://sourceforge.net/projects/fonttools/でオープンソースプロジェクトとして維持されていました。 2008年、ポール・ワイズ(pabs3)は安定性維持のためにJustを支援し始めました。 2013年にBehdad Esfahbodはフレンドリーなフォークを開始し、コードベースを徹底的に見直し、新しい機能を追加して新しいフォントフォーマットをサポートするためにhttps://github.com/behdad/fonttoolsで変更を加えました。
謝辞
アルファベット順:
Hannes Famira、Sam Fishman、Matt Fontaine、Douglas、Douglas、Douglas、Douglas、Douglas、ヤニス・ハラランビウス、グレッグ・ヒッチコック、ジェレミー・ホーナス、カレイド・ホスニー、ジョン・ハドソン、デニス・モヨゴ・ジャクリー、ジャック・ジャンセン、トム・カッキンスキー、ジェンス・クトイルク、アントワーヌ・レカ、ヴェルナー・ランベルグ、タル・レミング、ピーター・ロフト、コジモ・ルポ、中村正也、 Penney、Roozbeh Pournader、Garret Rieger、Read Roberts、Guido van Rossum、Just van Rossum、Andreas Seidel、Georg Seifert、Miguel Sousa、Adam Twardoch、AdrienTétar、Vitaly Volkov、Paul Wise。
著作権
Copyright(c)2000 BeOpen.com。 全著作権所有。
Copyright(c)1995-2001全国研究イニシアチブ株式会社。 全著作権所有。
Copyright(c)1991-1995 Stichting Mathematisch Centrum、アムステルダム。 全著作権所有。
楽しむ!