The biggest part of TypeRig in practice — a collection of GUI tools
that cover most of what I need in a daily font production workflow.
Built with PythonQt, hooked into FontLab's undo, multi-master aware.
A dockable panel that loads sub-panels as tabs.
Layer selectors and glyph-scope controls in the masthead.
Panel visibility persisted via JSON.
▶
Node
Insertion, removal, conversion, smart movement, alignment to metrics, slope and Hobby tension tools, coordinate banking, primitive drawing.
Smart node movement with multiple methods: plain shift, proportional (LERP), italic-angle slant, slope-following, and a smart mode that preserves handle relationships. Alignment to other nodes, font metrics (ascender, caps height, x-height, baseline, descender, measurement line), and user-defined targets with intercept and dimension-preserving modes. Hobby spline tension copy/paste. Coordinate banking for complex multi-step operations. Circle from 2 or 3 nodes, square from diagonal or midpoints.
▶
Contour
Close, open, reverse, boolean operations, alignment, group alignment, distribution, reordering.
Boolean operations: union, subtract, intersect, exclude. Alignment to other contours, to font metrics, and bounding-box-relative positioning. Group alignment (A-to-B). Horizontal and vertical distribution of multiple contours. Reordering by position.
▶
Corner
Smart corner filters with multi-master presets. Mitre, round, loop, and ink-trap operations.
Apply, remove, and find-and-remove smart corners by preset value. Live slider control for captured smart angles. Dialog-based parameter entry for mitre, round, loop, and ink-trap corners. Corner rebuild for re-processing existing corners.
▶
Layer
Full layer management, cross-layer operations, element-level swap/pull/push, zero-setup interpolation.
Add, duplicate, delete, duplicate-as-mask. Copy and paste whole layer groups. Visibility toggle and type assignment (mask, wireframe, service). Element-level operations: swap, pull, push, clean, lock/unlock. Contour-level cross-layer operations: pull/push nodes, copy/paste outlines, paste by layer name. Side-by-side comparison view. Zero setup interpolation between selected layers.
▶
Delta
Adaptive scaling (delta machine) with stem values per master, target layer generation, Tim Ahrens methodology.
Virtual axis setup with stem values per master layer. Target layer generation with configurable horizontal/vertical stems, width, and height. Supports extrapolation, intensity control, italic-angle compensation, and multiple transform origins. Axis configurations saved/loaded from Font Lib or external JSON files.
▶
Element
Shape manipulation, element library insertion, alignment, and expression-based composition system.
Naming, unlinking references, deletion, transform reset/rounding, auto-reorder, ungroup-all. Shape insertion and replacement from font-wide element library. Alignment to other shapes, layer bounds, font metrics. Expression-based composition with scripting syntax: coordinate placement by node tags, anchor names, bbox positions, per-layer overrides, element swapping.
▶
Clipboard
Multi-master contour clipboard with core-object storage. Configurable paste transform and delta machine fit.
Copy full contours or partial selections. Paste with configurable transform (translate, scale, rotate, skew), delta machine size fit and transform origin. Reversed and partial paste modes, drawing and connecting multiple segments. Save/load clipboard to XML for cross-session and cross-font workflows.
▶
Metrics
Sidebearing and advance width tools with metric expressions and cross-glyph copying.
Copy metrics from other glyphs by name with percentage and unit adjustments. Metric expressions: get, set, auto-link from element references, unlink. Copy bounding-box dimensions between glyphs with proportional adjustments.
▶
Anchor
Anchor management with flexible coordinate input, font-metric and expression-based placement, italic-angle awareness.
Tree-view display per layer. Add, move, and clear with absolute positions, font-metric-relative placement, bounding-box-relative, and expression-based coordinates. Per-layer coordinate lists for multi-master workflows.
▶
Guide
Guideline creation at percentage-based positions. Named/tagged guidelines with color assignment.
Vertical and horizontal placement relative to advance width, bounding box, or font metrics. Source glyph reference for cross-glyph alignment. Glyph tagging and node naming tools.
▶
Glyph · Outline · Pairs · Stats
Glyph rename/copy/duplicate, interactive node table, kern string generation, glyph statistics.
Glyph: rename, copy/duplicate with configurable options, batch duplication with auto-numbering and transforms. Outline: interactive sortable node table with direct coordinate editing and live viewport sync. Pairs: filler-based kern pair construction, DTL .krn/.cla/.afm import. Stats: bounding box dimensions, advance widths, sidebearings across layers.
▶
AutoMetrics · CopyKerning · CleanKerning
Automated metric assignment, kern pair copying with class-aware support, kerning table cleanup.
AutoMetrics: automated metric assignment tools. CopyKerning: kern pair copying between glyphs and layers, source pair lookup with expression adjustment, group kerning with automatic class resolution. CleanKerning: kerning table cleanup utilities.
▶
Delta Preview
TR-DeltaPreview.py
Visual preview of delta machine results without writing to the font. Dual-pane with live zoom/padding.
Source masters and computed targets rendered as QPainterPath objects from core geometry. Execute-to-font mode for committing approved results as real layers.
▶
Comparator
TR-Comparator.py
Cross-font and cross-layer glyph comparison. Outline differences, missing layers, anchor mismatches.
Detect shifted-but-identical layers, color-coded difference display. Time-stamp-aware comparison for change tracking. Batch processing with progress bar and font mark colorization.
▶
Match Contours
TR-MatchContours.py
Visual contour matching across masters. Drag-and-drop reordering, start-point alignment, winding display.
Contour order tab with drag-and-drop reordering and winding direction display (color-coded CW/CCW). Start-point tab for aligning start nodes across masters with corner-based and sequential adjustment. Visual icon rendering per contour per master.
▶
Encoder
TR-EncodeGlyphs.py
Unicode encoding management. Load from JSON, FontLab .nam, Google .textproto files.
Apply or clear unicode mappings for entire fonts or selected glyphs. Save/load encoding data to Font Lib.
▶
Sort Anchors
TR-SortAnchors.py
Anchor ordering across all masters. Reference-master or alphabetical mode with verbose missing-anchor reports.
Reference-master mode preserves anchor order from a chosen master. Alphabetical mode sorts uniformly. Verbose mode reports missing anchors across masters.
▶
Propagate Anchors
TR-PropagateAnchors.py
Table-driven batch anchor copying between glyphs with per-action configuration. Save/load as JSON.
Source glyph, anchor selection, destination glyphs, layer scope, copy options (absolute/relative with LSB/RSB/advance-relative modes, collision handling with overwrite or rename, suffix control). Repeatable JSON workflows.
▶
Export Glyph
TR-ExportGlyph.py
Export individual glyphs as .trglyph XML files via the core serialization system and proxy-to-core eject.
Lossless round-trip export using the eject mechanism to produce pure core objects serialized to XML.