Bulk Copy Glyph Metrics in FontForge

Yes, you can copy metrics from one glyph to another in bulk using FontForge. Whether you need to apply the advance width and side bearings of a single glyph across multiple selected characters or batch-transfer metrics between matching sets of glyphs, FontForge provides built-in tools like "Paste Special" as well as Python scripting capabilities to achieve this efficiently.

Method 1: Using "Paste Special" in the Font View

If you want to apply the metrics of a single source glyph to multiple target glyphs at once, the fastest approach is FontForge’s Paste Special function.

  1. Open your font in FontForge to display the main Font View window.
  2. Click on the source glyph whose metrics you want to replicate.
  3. Copy the glyph by pressing Ctrl + C (or Cmd + C on macOS), or by selecting Edit > Copy.
  4. Select all the target glyphs in bulk. You can hold Shift to select a continuous range, or hold Ctrl (Cmd) to click and choose individual glyphs.
  5. Go to the top menu and select Edit > Paste Special....
  6. In the Paste Special dialog:
    • Select the Don't Copy Outlines or uncheck outline data.
    • Check the metric options you wish to transfer, such as Advance Width, Left Side Bearing (LSB), or other metric attributes.
  7. Click OK. FontForge will immediately update the metrics of all selected glyphs to match the source.

Method 2: Batch Setting Widths Directly

If your primary goal is to ensure that a group of glyphs shares the exact same advance width rather than copying full bearing proportions:

  1. Select all the target glyphs in bulk within the Font View.
  2. Go to Metrics > Set Width....
  3. Choose to set the width to a specific value or load the width of a specific glyph from the font.
  4. Click OK to apply the dimensions to all highlighted characters simultaneously.

Method 3: Bulk Copying Between Corresponding Glyph Pairs via Scripting

If you need to copy metrics pairwise across multiple glyphs (for example, copying metrics from base letters A, B, C to their small-cap or stylized alternates A.sc, B.sc, C.sc), GUI copy-paste cannot map them dynamically. You can use FontForge's built-in Python scripting engine for this task:

  1. Go to File > Execute Script....
  2. Switch to Python mode and run a script structured like the following:
import fontforge

font = fontforge.activeFont()

# List base glyphs and their corresponding alternates
glyph_pairs = [("A", "A.sc"), ("B", "B.sc"), ("C", "C.sc")]

for source_name, target_name in glyph_pairs:
    if source_name in font and target_name in font:
        source_glyph = font[source_name]
        target_glyph = font[target_name]

        # Copy Advance Width
        target_glyph.width = source_glyph.width

        # Optionally copy Left Side Bearing
        target_glyph.left_side_bearing = source_glyph.left_side_bearing
  1. Click OK to execute. This automates the metrics transfer across dozens or hundreds of paired glyphs instantly.