Skip to main content

ufomerge

This command line utility and Python library merges together two UFO source format fonts into a single file. It can be used to include glyphs from one font into another font. It takes care of handling:

  • Glyph outlines and information
  • Kerning
  • lib entries
  • Including any needed components
  • "Subsetting" and merging layout rules

Usage

To merge the glyphs of font-b.ufo into font-a.ufo and save as merged.ufo:

$ ufomerge --output merged.ufo font-a.ufo font-b.ufo

To include particular glyphs:

$ ufomerge --output merged.ufo --glyphs alpha,beta,gamma font-a.ufo font-b.ufo

To include glyphs referencing particular Unicode codepoints:

$ ufomerge --output merged.ufo --unicodes 0x03B1,0x03B2,0x03B3 font-a.ufo font-b.ufo

Other useful command line parameters:

  • -G/--glyphs-file: Read the glyphs from a file containing one glyph per line.
  • -U/--codepoints-file: Read the Unicode codepoints from a file containing one codepoint per line.
  • -x/--exclude-glyphs: Stop the given glyphs from being included.
  • -v/--verbose: Be noisier.

What to do about existing glyphs:

  • --skip-existing (the default): If a glyph from font-b already exists in font-a, nothing happens.
  • --replace-existing: If a glyph from font-b already exists in font-a, the new glyph replaces the old one.

What do to about OpenType layout (features.fea). Suppose there is a rule sub A B by C;, and the incoming glyphs are A and B:

  • --subset-layout (the default): the rule is dropped, because C is not part of the target glyphset. The ligature stops working.
  • --layout-closure: C is added to the target glyphset and merged into font-a so the ligature continues to work.
  • --ignore-layout: No layout rules are copied from font-b at all.

Usage as a Python library

ufomerge provides two functions, merge_ufos and subset_ufo. Both take ufoLib2.Font objects, and are documented in their docstrings.

License

This software is licensed under the Apache license. See LICENSE.

Metadata

Release files for ufomerge 1.9.8

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

Source distribution (sdist)

Source distribution for ufomerge 1.9.8
File Size Uploaded Provenance Actions
ufomerge-1.9.8.tar.gz 25.7 kB With provenance Details for ufomerge-1.9.8.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ufomerge 1.9.8
File Interpreter ABI Platform Actions
ufomerge-1.9.8-py3-none-any.whl Python 3 none any Details for ufomerge-1.9.8-py3-none-any.whl

Total release size: 46.9 kB

Release files / ufomerge-1.9.8.tar.gz

Download URL ufomerge-1.9.8.tar.gz
Size 25.7 kB
Tags Source
SHA-256 checksum
How to use checksums
dc3a0f6939b7461ab09e5d2c8ab6cfa63c109fdd6263e2d4f45f17eabbb2f002
BLAKE2b-256 checksum
How to use checksums
8e7df757e2f850589b65847c0b35063b020f48317116ba9bee810cacf9f198b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Sep 3, 2026.

Transparency log

Release files / ufomerge-1.9.8-py3-none-any.whl

Download URL ufomerge-1.9.8-py3-none-any.whl
Size 21.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb9c2c1e606e3af63efa808c1430d20dac0311599d8053e312289a3115656142
BLAKE2b-256 checksum
How to use checksums
12ed045adc57c3a209fb3505c7b4e46273983330debef676e678248a83b3f0dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Sep 3, 2026.

Transparency log

Security for ufomerge 1.9.8

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

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ufomerge-1.9.8.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 Sep 3, 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.

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