1. 製品
  2.   Font
  3.   Python
  4.   FontTools
 
  

フォント読み取りのための Python ライブラリ

ソフトウェア開発者とデザイナーがフォントを簡単に操作、編集、分析できるようにするオープンソース Python API

FontTools はデザイン、ブランディング、コミュニケーションにおいて重要な役割を果たしており、フォントは視覚的美学の構成要素です。デジタル時代において、フォントの管理と操作はますます重要になっています。開発者やデザイナーの間で人気が高まっている強力なツールの一つが FontTools ライブラリです。FontTools は、フォントを扱うための包括的なツールセットを提供する多用途のオープンソース Python ライブラリであり、フォント愛好家、デザイナー、開発者、タイポグラファーにとって強力なツールとして台頭しています。その豊富な機能と Python ベースのインターフェースにより、フォント関連のタスクやプロジェクトに最適な選択肢となっています。

FontTools は、ソフトウェア開発者がフォントファイルをプログラムで操作できるようにするオープンソースのライブラリです。フォントの操作、編集、解析のための幅広い機能を提供します。フォントをさまざまな方法で操作すること、基本的なグリフ編集操作、拡張されたフォントのマージ、単一グリフの削除、SFNT テーブルのサポート、さまざまな SFNT 値の特定と実装、グリフ輪郭の変更、フォントメトリックの調整、フォントエンコーディングの変更、テーブルの追加または削除、異なるレイアウトシステム間でのレイアウト定義の変換、名前文字列の検索と編集などをサポートしています。

FontTools ライブラリは、ソフトウェアプログラマがフォントファイルのさまざまな側面にプログラムからアクセス、編集、分析できるようにします。TrueType(TTF)、OpenType(OTF)、AFM、ある程度の Type 1、そしていくつかの Mac 固有フォーマットなど、複数のフォント形式をサポートしており、さまざまなフォントタイプを扱うための汎用的な選択肢となります。FontTools は活気に満ちた支援的なコミュニティの恩恵を受けています。プロジェクトはオープンソースで、定期的な更新やバグ修正が行われ、積極的に保守されています。フォント操作の自動化、書体の微調整、詳細なフォント分析のいずれであっても、FontTools は目標を効率的に達成するために必要なツールと柔軟性を提供します。

Previous Next

FontTools 入門

FontTools は Python 3.8 以降が必要です。FontTools のインストールには PyPI を使用することが推奨されています。スムーズなインストールのために、以下のコマンドをご利用ください。

NuGet を使用して FontTools をインストール

 pip install fonttools 

手動でインストールすることも可能です。最新のリリースファイルは GitHub リポジトリから直接ダウンロードしてください。

Python API を使用したフォントの編集と操作

オープンソースの FontTools ライブラリは非常に使いやすく、ソフトウェア開発者が Python アプリケーション内でフォントをさまざまな方法で操作できる重要な機能がいくつか含まれています。フォントファイルから情報を抽出したり、グリフのアウトラインを変更したり、メトリクスを操作したり、ゼロから新しいフォントを作成したり、フォント関連の繰り返し作業を自動化したりすることが可能です。FontTools ライブラリを使用すると、ソフトウェア開発者はグリフの輪郭を変更したり、メトリクスを調整したり、エンコーディングを変更したり、テーブルを追加または削除したりできます。この柔軟性により、デザイナーは特定の要件に合わせてフォントを微調整したり、プロジェクト向けにカスタマイズされたバージョンを作成したりできます。

Python API を使用してアウトラインパスを変更する方法は?

path_orig = get_outline(font, "a")
startdraw(200,200)

paths = []
for i in path_orig:
    if i[0] == 'moveTo':
        path = draw.BezierPath()
        path.moveTo((i[1][0]))
    if i[0] == 'lineTo':
        path.lineTo((i[1][0]))
    if i[0] == 'qCurveTo':
        path.qCurveTo(*(i[1]))
    if i[0] == 'closePath':
        path.closePath()
        paths.append(path)

finalpath = paths[0].difference(paths[1])
finalpath.scale(0.3) #let's scale it down!
draw.fill(0.5)
draw.stroke(0)
draw.drawPath(finalpath)
show()

Python API を使用したグリフ操作

オープンソースの FontTools ライブラリは、ソフトウェア開発者が個々のグリフをプログラムで操作することを容易にします。グリフのアウトライン、メトリック、属性にアクセスし、変更するためのメソッドを提供し、ユーザーは特定のニーズに合わせてフォントをカスタマイズできる柔軟性を得られます。カーニングペアの調整、グリフ形状の変更、リガチャの追加、またはグリフのアウトライン比較など、FontTools はグリフ操作のプロセスを簡素化します。以下の例は、2 つのグリフのアウトラインを比較し、Python コードを使用して結果を表示する方法を示しています。

Python API を使用して 2 つのグリフのアウトラインを比較する方法は?

from fontTools.ttLib import TTFont
from fontTools.pens.recordingPen import RecordingPen

font = TTFont(filename)
cmap = font.getBestCmap()
gs = font.getGlyphSet()

g1 = gs[cmap[ord("A")]]
g2 = gs[cmap[ord("B")]]

p1 = RecordingPen()
p2 = RecordingPen()

g1.draw(p1)
g2.draw(p2)

print(p1.value == p2.value)

Python API を使用したフォントの生成と変換

オープンソースの FontTools ライブラリは、新しいフォントファイルを生成したり、既存のフォントを別の形式に変換したりする機能を提供します。この機能は、カスタムフォントを作成したり、特定のプラットフォーム向けにフォントを適応させる必要があるデザイナーや開発者に特に有用です。FontTools を使用すると、異なるウェイト、スタイル、バリエーションのフォントインスタンスを生成したり、TrueType と OpenType の形式間でフォントをシームレスに変換したりできます。以下の例は、Python コマンドを使用して CFF フォーマットを CFF2 フォーマットに変換する方法を示しています。

 日本