What Is a Font and How Do You Create or Edit One?
A font is a digital file that tells software how to draw a set of characters; creating or editing one means designing outlines for each glyph and exporting those outlines in a format other programs can install and use. You can do this with a free, open-source outline editor such as FontForge, which supports OpenType, TrueType, UFO, and its own SFD format. This article explains the vocabulary, the common file formats, the basic design-to-export workflow, and the mistakes that most often break a first font.
Font, typeface, and font family: the terms people mix up
These three words describe different things, and mixing them up causes confusion when you start working in an editor.
- Typeface — the design itself: the shapes, proportions, and style of the letters. "Helvetica" as a design idea is a typeface.
- Font — the digital file that implements a typeface so a computer can render it. A
.ttfor.otffile on your disk is a font. - Font family — a group of related fonts that share a design but differ in weight or style, such as Regular, Bold, and Italic.
In everyday speech people say "font" for all three, but inside an editor the distinction matters: you design a typeface, you generate font files, and you organize those files into a family.
Common font formats you will meet
| Format | What it is | Typical use |
|---|---|---|
OpenType (.otf) |
Modern outline format, supports advanced typographic features | Desktop and web fonts |
TrueType (.ttf) |
Older outline format, widely supported | Desktop and web fonts |
| UFO | A source format that stores design data in a folder of files | Interchange between design tools |
| SFD | FontForge's native source format | Saving and reopening work in FontForge |
The practical split is source formats (UFO, SFD) versus output formats (OTF, TTF). You design and save in a source format, then export to an output format when the font is ready to install or ship. Keeping the source file is what lets you come back and fix a glyph later.
The basic workflow for designing a font
The steps below are the general shape of font creation; FontForge is one free outline editor that fits into this pipeline.
- Set up the em square and metrics. Decide the design space — typically a 1000- or 2048-unit em — and define where the baseline, x-height, and cap height sit. Every glyph is drawn relative to these guides.
- Draw the glyphs. Create outlines for each character. Start with a control set such as
H,O,n,o, ande, because these establish the proportions the rest of the alphabet follows. - Add spacing and kerning. Set the left and right side bearings for each glyph, then adjust kerning pairs (for example
AVorTo) where the default spacing looks too loose or too tight. - Test at real sizes. Render sample text at small and large sizes to check that curves, stems, and spacing hold up.
- Export to a usable format. Generate an OTF or TTF file, then install it to verify it behaves like any other font.
Each step feeds the next: bad spacing in step 3 shows up as uneven text in step 4, and a missing glyph in step 2 becomes a blank box after export.
Where a free outline editor like FontForge fits
FontForge is described as a free and open-source outline font editor. In the workflow above, it covers the drawing, spacing, and export stages, and it reads and writes OpenType, TrueType, UFO, and SFD files. That means you can:
- Start a new typeface from scratch and save it as SFD.
- Open an existing font, edit individual glyphs, and re-export it.
- Move design data between FontForge and other tools through UFO.
Because it is open source, there is no license cost to begin, and the source formats it uses are documented and portable. If your goal is simply to understand how fonts are built or to make a small custom font, an outline editor of this kind is enough to complete the whole pipeline.
Common pitfalls and how to avoid them
Most first-font problems fall into a few predictable categories.
- Missing glyphs. If a character has no outline, software shows a blank box or a fallback from another font. Check that every character you intend to support actually has a drawn glyph before exporting.
- Bad kerning. Default spacing rarely looks right for every pair. Test strings with awkward combinations like
AV,Ta, andYo, and add kerning pairs where they collide or drift apart. - Export errors. A font can fail to generate if outlines are open, self-intersecting, or drawn in the wrong direction. Validate contours before exporting, and re-open the exported file to confirm it loads.
- Inconsistent metrics. If the baseline or x-height shifts between glyphs, text will look like it is bouncing. Set the guides once and draw everything against them.
What to do next
If you want to try this yourself, pick a small goal first — for example, redesign the letters of your own name or build a display font with just uppercase letters. Save your work in a source format as you go, export to OTF or TTF when you are done, and install the result to see how it behaves in a real document. That loop — design, save, export, test — is the same one professional type designers use, just at a smaller scale.