TorchFont
TorchFont is an unofficial library based on PyTorch for deep learning with vector fonts. It is not affiliated with or endorsed by the PyTorch project.
TorchFont is local-first: point CodepointDataset or GlyphIdDataset at a font
directory or a repository checkout that already exists on disk, and TorchFont
turns font files into lightweight glyph references. CodepointDataset indexes one
sample per face and codepoint, while GlyphIdDataset indexes one sample per
face and glyph, reaching ligatures and alternates no codepoint maps to. Load
outlines explicitly with LoadGlyph in your transform pipeline when tensors are
needed.
Installation
The package requires Python 3.10+ and PyTorch 2.5+.
Install TorchFont with uv:
uv add torchfont
Or with pip:
pip install torchfont
Quickstart
from torch.nn.utils.rnn import pad_sequence
from torch.utils.data import DataLoader
from torchfont import CodepointData, ElementType, Outline
from torchfont.datasets import CodepointDataset
from torchfont.transforms import LoadGlyph
def collate_fn(samples: list[CodepointData[Outline]]):
outlines = [sample.data for sample in samples]
return {
"types": pad_sequence(
[outline.types for outline in outlines],
batch_first=True,
padding_value=ElementType.PAD,
),
"coords": pad_sequence(
[outline.coords for outline in outlines], batch_first=True
),
}
dataset = CodepointDataset(
root="~/fonts", # or "tests/fonts" in this repository
patterns=("*.ttf",),
codepoints=range(0x20, 0x7F), # printable ASCII
transform=LoadGlyph(),
)
loader = DataLoader(
dataset,
batch_size=8,
shuffle=True,
collate_fn=collate_fn,
)
batch = next(iter(loader))
print(batch["types"].shape) # (8, L)
print(batch["coords"].shape) # (8, L, 6)
What TorchFont Focuses On
- local font directories and repository checkouts as the input boundary
- local font indexing by codepoint or by glyph id, plus explicit outline loading through lightweight glyph references
torchvision.transforms.v2-style semantic pipelines for adapting glyph samples- PyTorch
DataLoaderintegration through an explicit, customizablecollate_fn
Manage font repository synchronization with Git or another tool, then point
CodepointDataset(root=...) or GlyphIdDataset(root=...) at the resulting
directory.
Citing TorchFont
If you find TorchFont useful in your work, please consider citing the following BibTeX entry:
@software{fujioka2025torchfont,
author = {Fujioka, Takumu},
title = {{TorchFont}: A Machine Learning Library for Vector Fonts},
year = {2025},
url = {https://github.com/torchfont/torchfont}
}
Metadata
Release files for torchfont 0.13.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| torchfont-0.13.5.tar.gz | 3.2 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| torchfont-0.13.5-cp314-cp314t-win_amd64.whl | CPython 3.14 | CPython 3.14 free-threading | Windows x86-64 | Details |
| torchfont-0.13.5-cp314-cp314t-manylinux_2_35_aarch64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.35+ ARM64 | Details |
| torchfont-0.13.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.17+ x86-64 | Details |
| torchfont-0.13.5-cp314-cp314t-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 free-threading | macOS 11.0+ ARM64 | Details |
| torchfont-0.13.5-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| torchfont-0.13.5-cp310-abi3-manylinux_2_35_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.35+ ARM64 | Details |
| torchfont-0.13.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| torchfont-0.13.5-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 27.4 MB
Release files / torchfont-0.13.5.tar.gz
| Download URL | torchfont-0.13.5.tar.gz |
|---|---|
| Size | 3.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7b65d48b62ff0f963a4d0e46e39ec9ab789cb2c91d831c1d7ee220dbb272b7d
|
|
BLAKE2b-256 checksum How to use checksums |
734e066f1191ca9435601f05dd409d81a20557ca1c1dd315b3647ce58ea112c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp314-cp314t-win_amd64.whl
| Download URL | torchfont-0.13.5-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4a9cc02460a358f1266033a77f649bf9c9a566c2c30817c94473e5f2f9f45d57
|
|
BLAKE2b-256 checksum How to use checksums |
b567a9fd0cef8c56c57757d5e57758ef3b4d6d083b98be90eca6a9dae510c9f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp314-cp314t-manylinux_2_35_aarch64.whl
| Download URL | torchfont-0.13.5-cp314-cp314t-manylinux_2_35_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.35+ ARM64 |
|
SHA-256 checksum How to use checksums |
c6edeaf39ec0f8ab8f2504954912e670f4e6d1f95cf864d91c426095bfc99176
|
|
BLAKE2b-256 checksum How to use checksums |
08ec7c642788d23d8568489e65c4df68ea9a1b0b7dcb8ca76e46884c24836117
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | torchfont-0.13.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
ab24b9ebc09a4eadc812d2b437e228d59502d6e4c3a409af9a053ffd7aceb535
|
|
BLAKE2b-256 checksum How to use checksums |
138d22bc6fe004552cc9c4ba03d20786b7edd9976592d28350223216d0863634
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | torchfont-0.13.5-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d3de264cb0195d5025e8f198aa174fb4c3c33975b09132c78b0215113e9e549d
|
|
BLAKE2b-256 checksum How to use checksums |
69e35d077ed4056bcaa28cb7506674671274c3c469ea0f400b030f4dd99c4b6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp310-abi3-win_amd64.whl
| Download URL | torchfont-0.13.5-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
8be2654c640ebcb4f1b066cfa299f7351b1b65bc263eb7d0db2841495ba9ebb7
|
|
BLAKE2b-256 checksum How to use checksums |
57cbb36d9a26f50295012cca6367bc4317e2ca2ac4ec1cf9be173c6a293d470c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp310-abi3-manylinux_2_35_aarch64.whl
| Download URL | torchfont-0.13.5-cp310-abi3-manylinux_2_35_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Linux glibc 2.35+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
0d73f16aa029d80222a6c7fa6332cd4d2a20e4ad6c46bba86a676090b5030739
|
|
BLAKE2b-256 checksum How to use checksums |
f8693d4b9718271b26de208e45e5416b5d62e89418d04ff0dbe2dab89fd0c6fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | torchfont-0.13.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f4e0f3f335b854573d4a3e588892e62bf511afc088fefd34962cd9f6c50b8c06
|
|
BLAKE2b-256 checksum How to use checksums |
0d39322bfbe72c0ca00e1470e2b0d18417082d255116c2cca23f2f5343003235
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / torchfont-0.13.5-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | torchfont-0.13.5-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4f6e7bbcfe0a31b278bbccdd91f69357a1c3597e8232c91fd82472d28c8a9730
|
|
BLAKE2b-256 checksum How to use checksums |
2b67964dbb6f46907731e413ff6018c475f824c8daef701c87edddb46f00b06d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|