Skip to main content

fontmerge

crates.io docs.rs

fontmerge merges two font source files together, copying selected glyphs from a donor font into a host font, along with any necessary OpenType layout features. It is a font-merging toolkit that powers the fontmerge command-line tool.

Typical use cases include:

  • Adding a set of glyphs (e.g. a Latin or Cyrillic extension) to an existing font.
  • Copying glyphs selected by name or by Unicode codepoint from one source into another.
  • Transporting OpenType layout rules (features, lookups, mark classes) alongside the glyphs they reference.

Merging is performed on font sources (Glyphs, UFO/DesignSpace, Babelfont JSON, ...) via the babelfont crate rather than on compiled binaries, so you keep full editability after the merge.

Command-line usage

Install the CLI with:

cargo install fontmerge

or from PyPI:

pip install fontmerge

Merge all of Donor.glyphs into Host.glyphs:

fontmerge Host.glyphs Donor.glyphs --output Merged.glyphs

Copy only specific glyphs by name:

fontmerge Host.glyphs Donor.glyphs --output Merged.glyphs --glyphs "A B C D"

Copy glyphs by Unicode codepoint (comma-separated, U+ prefix optional, ranges with a hyphen allowed):

fontmerge Host.glyphs Donor.glyphs --output Merged.glyphs --codepoints "U+0041-U+005A"

Exclude glyphs you don't want to bring across:

fontmerge Host.glyphs Donor.glyphs --output Merged.glyphs --glyphs "A B C" --exclude-glyphs "Aacute B"

By default, glyphs already present in the host font are skipped; use --existing-handling replace to overwrite them instead. Layout rules can be subset to the merged glyph set (default), closed over to pull in any extra glyphs referenced by rules (--layout-handling closure), or ignored entirely (--layout-handling ignore).

Using it as a library

The fontmerge crate is a mixed binary/library crate. Its library exposes the underlying merging routine so you can drive merges programmatically:

use babelfont::{load, SmolStr};
use fontmerge::{fontmerge, ExistingGlyphHandling, GlyphsetFilter, LayoutHandling};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // "Host" font receives glyphs; "donor" font contributes them.
    let mut host = load("Host.glyphs")?;
    let donor = load("Donor.glyphs")?;

    // Select which glyphs to copy from the donor font.
    let selection = GlyphsetFilter::new(
        vec![SmolStr::new("A"), SmolStr::new("B")],
        vec![],
        vec![],
        &mut host,
        &donor,
        ExistingGlyphHandling::Skip,
    );

    let merged = fontmerge(host, donor, selection, LayoutHandling::Subset, true)?;
    merged.save("Merged.glyphs")?;
    Ok(())
}

See the API documentation for details.

Status

fontmerge is in early development and its command-line interface and library API may change between releases.

License

fontmerge is available under the MIT or Apache-2.0 licenses, at your option. See LICENSE-MIT and LICENSE-APACHE.

Metadata

Release files for fontmerge 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fontmerge 0.2.1
File Size Uploaded Provenance Actions
fontmerge-0.2.1.tar.gz 1.8 MB With provenance Details for fontmerge-0.2.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for fontmerge 0.2.1
File Actions
fontmerge-0.2.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for fontmerge-0.2.1-py3-none-win_amd64.whl
fontmerge-0.2.1-py3-none-win32.whl Python 3 none Windows x86-32 Details for fontmerge-0.2.1-py3-none-win32.whl
fontmerge-0.2.1-py3-none-musllinux_1_1_x86_64.whl Python 3 none Linux musl 1.1+ x86-64 Details for fontmerge-0.2.1-py3-none-musllinux_1_1_x86_64.whl
fontmerge-0.2.1-py3-none-musllinux_1_1_aarch64.whl Python 3 none Linux musl 1.1+ ARM64 Details for fontmerge-0.2.1-py3-none-musllinux_1_1_aarch64.whl
fontmerge-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details for fontmerge-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
fontmerge-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for fontmerge-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
fontmerge-0.2.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl Python 3 none macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details for fontmerge-0.2.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Total release size: 141.7 MB

Release files / fontmerge-0.2.1.tar.gz

Download URL fontmerge-0.2.1.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
22c3b90054f5ca86b4949b89b976bfa303c8553ed0b0e1214fa573818b3bb711
BLAKE2b-256 checksum
How to use checksums
5a99770ed2999205f43bd4cef9c7314a9ccb2a2eec1525c36a3e5f4a485932a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-win_amd64.whl

Download URL fontmerge-0.2.1-py3-none-win_amd64.whl
Size 16.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
99858cb876cb33d79254c9dd5a51cbd3bcb53bca38f7d2f575516e3a7e142245
BLAKE2b-256 checksum
How to use checksums
56949a4ff20718055dff17b8b7c0367eaea386eeda81e4d376f83e72a14836ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-win32.whl

Download URL fontmerge-0.2.1-py3-none-win32.whl
Size 15.0 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
0a7372d499c4976e947b3633f9d8e0e4770322cfd886a3f5482f76243fd446da
BLAKE2b-256 checksum
How to use checksums
ec47ee80e1c48280d746c31a1c5371579ab7df7e27817488d2c434955c1d7e00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-musllinux_1_1_x86_64.whl

Download URL fontmerge-0.2.1-py3-none-musllinux_1_1_x86_64.whl
Size 18.9 MB
Tags Linux musl 1.1+ x86-64 Python 3
SHA-256 checksum
How to use checksums
9287e121218a2a5513a54d6b70583677ba7080984eb5b73ac705ff3f619b4f2f
BLAKE2b-256 checksum
How to use checksums
da11d7ac7716ca7886bf20e4d3b5c82efa7c1c6a4f8768392fa1d0e814bf1e05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-musllinux_1_1_aarch64.whl

Download URL fontmerge-0.2.1-py3-none-musllinux_1_1_aarch64.whl
Size 18.0 MB
Tags Linux musl 1.1+ ARM64 Python 3
SHA-256 checksum
How to use checksums
b3d04d7e41ab89929bbeca8129aa0901cdceb95919455a44fb0286c2953360c3
BLAKE2b-256 checksum
How to use checksums
065fa74f0eebfb88fab46f0e160bc1d8152ce86216f3d3287923525ab9fe74b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL fontmerge-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.5 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
0e87eff06c7057fbd13e674e3f2d510e2004576587227d9edb59b2c40efdca6f
BLAKE2b-256 checksum
How to use checksums
1dce080d416a7dbd8a48e55b2ec4c2eb9f004ceb15becbdfb611909bb872e49b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL fontmerge-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 18.3 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
f8182f196c382ff0b5ce8531a9a67aeabd4d4527844a2c8a364a7aec73005d92
BLAKE2b-256 checksum
How to use checksums
d45412cc15ac17cc43a1bea4087508133fef4a2c12d2af49607723f028c5c5a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / fontmerge-0.2.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL fontmerge-0.2.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 34.7 MB
Tags Python 3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7c13aa1433cb992c590fbf1c901c602a32bbe1bf8728cf8f62277b7da3f109bd
BLAKE2b-256 checksum
How to use checksums
ae70f61416a38d3bbcee920a43b2a38cc9a1dd79eb354e9fbc74f4cfe2cac538
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Security for fontmerge 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 8 files in this release have been uploaded with provenance metadata.

Select from 8 files

Attestation for fontmerge-0.2.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.1 This release

8 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page