ufomerge(1)

πŸ“¦ version 1.9.6, in ubuntu resolute, ubuntu stonking

✨ ufomerge ✨

okay bestie, welcome to the ufomerge manual page (that's manual page ufomerge(1) if we're being official πŸ’…) β€” it's the group chat where two UFO fonts finally meet.


πŸ’– NAME πŸ’–

ufomerge β€” a utility to merge two Unified Font Object (UFO) source fonts. yes. two fonts. one output. iconic behavior only. πŸ¦‹


πŸŽ€ SYNOPSIS πŸŽ€

ufomerge [OPTIONS] PRIMARY_FONT.ufo SECONDARY_FONT.ufo

🌸 DESCRIPTION 🌸

ufomerge is a command-line utility and a Python library, and its whole thing is merging the contents of two UFO source format fonts into one single output file. the classic move is pulling glyphs, kerning, or other data out of the SECONDARY_FONT and dropping it into the PRIMARY_FONT. like, secondary font said "let me contribute" and primary font said "say less". 😌

it handles the merging of core font data automatically, no cap:

  • Glyph outlines and information
  • Kerning data
  • Lib entries
  • Necessary components
  • Subsetting and merging of OpenType layout rules

literally just vibes and correct merges. ✨


πŸ”₯ OPTIONS πŸ”₯

πŸ’… General and Output

  • -h, --help β€” shows you a help message and then exits. the "hey what does this do" button.
  • -o PATH, --output=PATH β€” path for the output UFO file. if you leave this option out, the result will overwrite the PRIMARY_FONT.ufo in-place. yes, in-place. it's giving bold. 😳
heads up bestie: omitting -o means your PRIMARY_FONT.ufo gets clobbered. back it up if you're emotionally attached to it. πŸ’€
  • -v, --verbose β€” increase verbosity of the output. more talking. more lore. πŸ—£οΈ

πŸ¦‹ Glyph Selection

  • --glyphs NAMES β€” a comma-separated list of glyph NAMES to include from the SECONDARY_FONT. cherry-picking, but make it font.
  • -G FILE, --glyphs-file=FILE β€” read the list of glyphs to be merged from a text FILE, with one glyph name per line. lowkey the tidy way to do it.
  • --unicodes CODEPOINTS β€” a comma-separated list of Unicode CODEPOINTS (e.g., 0x03B1) whose corresponding glyphs should be included from the SECONDARY_FONT. select by number, not by name. math girlies rise. πŸ”’
  • -U FILE, --codepoints-file=FILE β€” read the list of Unicode codepoints from a text FILE, with one codepoint per line.
  • -x GLYPHS, --exclude-glyphs=GLYPHS β€” a comma-separated list of GLYPHS that must not be included in the merge, even if they match other criteria. not you. not today. πŸ™ˆ

🫢 Conflict Resolution

  • --replace-existing β€” if a glyph from SECONDARY_FONT already exists in PRIMARY_FONT, replace the existing glyph with the one from the secondary font. out with the old, in with the new. slay.
  • --skip-existing β€” if a glyph from SECONDARY_FONT already exists in PRIMARY_FONT, keep the existing glyph and skip the new one. this is the default behavior. the primary font stays the main character. πŸ‘‘

πŸ‘‘ OpenType Layout Handling (features.fea)

these options control how layout rules from the secondary font get merged, especially when they reference glyphs that aren't in the target set. this is the messy part, bestie. stay with me.

  • --subset-layout β€” (Default) drop layout rules if they reference glyphs that are not included in the merged glyphset. for example, in `sub A B by C;`, if C is missing, the rule is dropped. bye rule. πŸšͺ
  • --layout-closure β€” if a layout rule references a glyph that is not already part of the target glyphset, automatically add that referenced glyph to the target and merge it into the PRIMARY_FONT. it's called ✨closure✨ and it's bringing the whole friend group. 🌈
  • --ignore-layout β€” discard all layout rules from the SECONDARY_FONT. not our problem. not our business. 🚫

⭐ EXAMPLES ⭐

🌟 Standard Merge

merge all contents from font-b.ufo into font-a.ufo, saving the result to a new file:

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

🌟 Selective Merge with Overwrite

merge only glyphs "alpha", "beta", and "gamma", replacing them if they already exist:

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

🌟 Layout Closure Merge

merge font-b.ufo ensuring that glyphs referenced by layout rules are also included:

ufomerge --output merged.ufo --layout-closure font-a.ufo font-b.ufo

πŸ’œ AUTHORS πŸ’œ

maintained by the Google Fonts team and contributors. this manual page was derived from the project's upstream documentation. credit where credit is due, periodt. 🫢


and that's the whole page bestie!! πŸŽ€ this was ufomerge version 1.9, dated November 2025 β€” so if you're reading this from some other timeline, vibe check the version first. go merge some fonts, drink water, and don't forget --output unless you want to overwrite things. mwah. πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from