ufomerge(1)
β¨ 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 thePRIMARY_FONT.ufoin-place. yes, in-place. it's giving bold. π³
heads up bestie: omitting-omeans yourPRIMARY_FONT.ufogets 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 glyphNAMESto include from theSECONDARY_FONT. cherry-picking, but make it font.-G FILE,--glyphs-file=FILEβ read the list of glyphs to be merged from a textFILE, with one glyph name per line. lowkey the tidy way to do it.--unicodes CODEPOINTSβ a comma-separated list of UnicodeCODEPOINTS(e.g.,0x03B1) whose corresponding glyphs should be included from theSECONDARY_FONT. select by number, not by name. math girlies rise. π’-U FILE,--codepoints-file=FILEβ read the list of Unicode codepoints from a textFILE, with one codepoint per line.-x GLYPHS,--exclude-glyphs=GLYPHSβ a comma-separated list ofGLYPHSthat must not be included in the merge, even if they match other criteria. not you. not today. π
π«Ά Conflict Resolution
--replace-existingβ if a glyph fromSECONDARY_FONTalready exists inPRIMARY_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 fromSECONDARY_FONTalready exists inPRIMARY_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;`, ifCis 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 thePRIMARY_FONT. it's called β¨closureβ¨ and it's bringing the whole friend group. π--ignore-layoutβ discard all layout rules from theSECONDARY_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
- ubuntu resolute: ufomerge 1.9.6-1 Β· Apache-2.0
- ubuntu stonking: ufomerge 1.9.6-2 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms