Unexpected Font Scaling Issues in FontForge

Opening a font file in FontForge can sometimes cause glyphs to appear dramatically enlarged, shrunken, or distorted relative to their original designs. This unexpected scaling is typically caused by Units Per Em (UPM) discrepancies, conflicting PostScript and TrueType metric standards, unapplied transformation matrices, or automated import preferences within the software. Identifying the specific mechanism triggering the size shift allows you to quickly restore proper glyph proportions and export consistent font files.

Units Per Em (UPM) Discrepancies

The most frequent source of scaling issues is the configuration of the Em square. Every outline font is drawn on a coordinate grid defined by its Units Per Em (UPM) value:

  • PostScript/CFF fonts: Typically use a standard 1000 UPM grid.
  • TrueType fonts: Commonly use power-of-two values, most often 2048 UPM, though sometimes 1024 UPM.

When FontForge opens a font or imports glyph outlines, it evaluates the font's existing header metrics. If the source file contains corrupted header entries or if FontForge attempts to normalize an unconventional UPM to a standard size, the outlines are scaled up or down. If the coordinate points are not recalculated proportionally alongside the Em size change, the glyphs will render at the wrong scale.

Format Conversion Shifts (PostScript vs. TrueType)

Converting between font formats during the opening or importing process alters how coordinates are processed. When importing OpenType-CFF outlines into a TrueType environment, FontForge must convert cubic Bézier curves to quadratic curves. If the source font uses non-standard coordinate definitions, FontForge may automatically rescale the glyphs to conform to TrueType grid expectations, leading to unexpected sizing shifts.

Transformation Matrices and Component Glyphs

Fonts frequently use composite glyphs—such as accented characters built from a base letter and a separate diacritic—or rely on embedded transformation matrices:

  • Nested Transformations: TrueType formats allow glyph components to carry internal scaling factors (e.g., scale \(X\) and \(Y\) by 0.5). If FontForge imports or decomposes these components incorrectly, it may apply the scale factor twice or ignore it entirely.
  • Font-Level Matrices: Some Type 1 and CFF fonts define a global FontMatrix array that scales coordinates upon rendering (e.g., [0.001 0 0 0.001 0 0]). If FontForge misinterprets an unusual transformation matrix upon reading the file, it will display the raw coordinate values without the necessary scaling applied.

Automated Import Settings and Preferences

FontForge includes global and file-specific preferences that govern how outlines are handled when opened or imported. If settings such as "Scale to Fit" or automatic outline normalization are enabled, FontForge will bypass the original font's intrinsic sizing and resize incoming vector paths to match the active font window's dimensions. This frequently occurs when importing external vector assets (such as SVG or EPS files) into an existing font database.

Inconsistent Vertical Metrics

Visual scaling problems can also be an illusion created by mismatched vertical metrics. Font formats store multiple vertical metric tables, including WinAscent/WinDescent, TypoAscender/TypoDescender, and Hhea metrics. If these tables conflict, FontForge may rescale the preview canvas or alter the baseline reference points upon import, making standard glyphs appear improperly proportioned within the design window.

How to Fix Scaling Issues in FontForge

  1. Verify the Em Size: Navigate to Element > Font Info > General and verify that the Em Size matches the original design specifications (typically 1000 or 2048).
  2. Disable Automatic Scaling: Check File > Preferences and ensure automatic outline scaling is disabled during import operations.
  3. Transform Manually: If outlines open at an incorrect scale, select all glyphs and use Element > Transformations > Transform, selecting Scale Uniformly with the proper percentage (e.g., 50% or 204.8%) to restore proper design dimensions.