OpenType Baseline Adjustments in FontForge
Baseline adjustments in OpenType layout tables allow type designers
to define how different scripts align with one another along horizontal
or vertical axes. In FontForge, these adjustments are primarily managed
within the OpenType BASE (Baseline) table, which stores
precise alignment metrics for multiscript fonts—such as combining Latin,
Devanagari, and Chinese characters. By setting up these adjustments, a
font ensures that rendering engines position text consistently across
mixed-script environments without manual intervention from end
users.
The Role of the OpenType BASE Table
Standard fonts typically rely on a single baseline, such as the Roman baseline used for Latin, Cyrillic, and Greek alphabets. However, global writing systems use different visual anchors:
- Roman Baseline: The traditional alignment line at or near the bottom of lowercase letters without descenders.
- Hanging Baseline: Used in Brahmic scripts like Devanagari and Tibetan, where characters align along a top structural line.
- Ideographic Baseline: Used in CJK (Chinese, Japanese, Korean) characters, typically aligning the bottom of the ideographic character frame.
- Central Baseline: Positioned at the vertical center of the em-square, commonly used for mathematical symbols and vertical Asian text.
The OpenType BASE table bridges these diverse systems by
recording relative offsets between each script's natural baseline and
the common font metrics.
Managing Baseline Adjustments in FontForge
In FontForge, baseline adjustments are accessed through the font's metadata and table management settings:
- Open your project and navigate to Element > Font Info.
- Select the BASE section (or the OpenType layout table panel, depending on the FontForge build).
- Choose the writing direction to configure: the Horizontal Axis (for left-to-right and right-to-left scripts) or the Vertical Axis (for top-to-bottom scripts).
Within this interface, you designate baseline tags
(romn, hang, ideo,
math) and specify their coordinates in font units relative
to the font's origin point (\(0,0\)).
Defining Script and Language Specifics
Baseline adjustments in FontForge can be assigned globally or mapped per script:
- Base Script List: Identifies which scripts exist in
the font and assigns a default baseline tag to each. For example, the
latn(Latin) script defaults toromn, whiledeva(Devanagari) defaults tohang. - Base Values: For each defined script, numerical values (based on the Units Per Em, or UPM) establish the position of other baselines relative to that script. If a Latin font at 1000 UPM has an ideographic baseline at -120 units, that offset is recorded here so text engines can calculate correct vertical positions when Latin and Han characters appear on the same line.
- MinMax Extents: Optional tables that set minimum and maximum coordinate limits for glyphs within specific scripts or OpenType features, preventing unexpected vertical clipping during complex script rendering.
Properly configuring these adjustments in FontForge eliminates the vertical misalignment that occurs when complex, multiscript typography is rendered in OpenType-compliant software.