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.2

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.2
File Size Uploaded Provenance Actions
fontmerge-0.2.2.tar.gz 1.8 MB With provenance Details for fontmerge-0.2.2.tar.gz

Built distributions (wheels)

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

Total release size: 143.2 MB

Release files / fontmerge-0.2.2.tar.gz

Download URL fontmerge-0.2.2.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
048bc1d5f20353f8f3b404bd6cdc7d6dd8703cc9e4955245f99e40945c5e0e19
BLAKE2b-256 checksum
How to use checksums
235b87600ef4586da933cbbc2aa0c1c8cd2550a68622826e5c73604e41448d50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

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

Download URL fontmerge-0.2.2-py3-none-win_amd64.whl
Size 16.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
8a82ed2d65f92906e6f665dfccdea5f0b34b0541ec8d7915f290187076e3d79e
BLAKE2b-256 checksum
How to use checksums
c64abb2357d22f01d5ff707f487ee470bb40dafe178b7731664c4626dab836e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

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

Download URL fontmerge-0.2.2-py3-none-win32.whl
Size 15.1 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
fb89d9895682138492772f12cabfa27a34817fcebeb66f01bf188a23d989548f
BLAKE2b-256 checksum
How to use checksums
b967d8b007df2815a87999fa44006d9fc16107f7a2c7caa07ad34ca91ad3f0f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

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

Download URL fontmerge-0.2.2-py3-none-musllinux_1_1_x86_64.whl
Size 19.1 MB
Tags Linux musl 1.1+ x86-64 Python 3
SHA-256 checksum
How to use checksums
7be084184d8d6e5ffae6e0055413f7c2be08225795909d1f284bca30e8bdcd2f
BLAKE2b-256 checksum
How to use checksums
37f27ed8aff9e838e53a4eecfeb7f0dfc363b32234b6d5976a63bdf7ba60d139
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

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

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

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 30, 2026.

Transparency log

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

Download URL fontmerge-0.2.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 18.7 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
7289672a6fbbc216771647ddab25516036a1d78bd40e61b30c8d9bc040daef51
BLAKE2b-256 checksum
How to use checksums
c92c8739fa53f476bfd4fcb1791b114338e1b779777fcf078dc1487f34cf7261
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

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

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

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 30, 2026.

Transparency log

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

Download URL fontmerge-0.2.2-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 35.1 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
dda556e2bc769b56a50625856e7118310f7a19398e528adceb05919aa6ba1646
BLAKE2b-256 checksum
How to use checksums
cac0fb006ebb9c8200731d1390c1c87c73e7ba2a69bb1e2b57f75a199d04bb20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

Security for fontmerge 0.2.2

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.2.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 30, 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.2 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