Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Ink/Stitch compatibility contract

The parameters an Ink/Stitch SVG can carry, as inkstitch:<name> attributes, its other attributes and its commands, and when StitchCraft supports each one. This is the interoperability contract: StitchCraft’s registry uses these names as its keys so files move between the tools unchanged (ADR-0001).

  • Checked against: Ink/Stitch main at d59c9ab (2026-09-17). The last line counts the declarations.
  • Facts only: names, types, units, defaults and applicability. Ink/Stitch’s descriptions are GPL text and are not copied; StitchCraft’s own help text lives in the parameter registry.
  • Machine-readable source: conformance/inkstitch-params.toml; this page is generated from it and from the parameter registry by cargo xtask docs, and cargo xtask docs --check fails if they disagree: a parameter declared with an Ink/Stitch origin must be listed here with a compatible type, and its default must be the value Ink/Stitch sews.
  • Default is the value Ink/Stitch’s settings window shows. For a few parameters its code sews another value when a file sets none, and the cell gives that value after the default, as in 0.1 (0.2 when unset). — means no default: the value is derived from another parameter or the shape.
  • StitchCraft says whether the parameter registry declares the parameter. planned: not yet; a design that sets it keeps it unchanged and gets SC-W0105. not planned: never, and a design that sets it gets the same. registered: StitchCraft reads and checks it under the same key, meaning and default; it changes the stitches once its stitch type or feature lands (see Phase and the parameter’s reference entry). deviates: registered, with a meaning that differs as its reference entry describes.
  • Phase is when the parameter’s stitch type lands (roadmap); — when it is not planned.

All stitch types (ties, locks, trims, stops)

AttributeTypeUnitDefaultApplies toPhaseStitchCraft
min_stitch_length_mmfloatmm—allP1 (M3)registered
min_jump_stitch_length_mmfloatmm—allP1 (M3)registered
tiesdropdown—0allP1 (M3)registered
force_lock_stitchesboolean—falseallP1 (M3)registered
lock_startcombo—half_stitchallP1 (M3)deviates
lock_custom_startstring——customP1 (M3)deviates
lock_start_scale_mmfloatmm0.7back_forth, customP1 (M3)registered
lock_start_scale_percentfloat%100arrow, bowtie, cross, star, simple, triangle, zigzag, customP1 (M3)registered
lock_endcombo—half_stitchallP1 (M3)deviates
lock_custom_endstring——customP1 (M3)deviates
lock_end_scale_mmfloatmm0.7back_forth, customP1 (M3)registered
lock_end_scale_percentfloat%100arrow, bowtie, cross, star, simple, triangle, zigzag, customP1 (M3)registered
trim_afterboolean—falseallP1 (M3)registered
stop_afterboolean—falseallP1 (M3)registered

Strokes: running, ripple, zigzag, manual

AttributeTypeUnitDefaultApplies toPhaseStitchCraft
satin_columntoggle——allP1 (M3)registered
stroke_methodcombo—0allP1 (M3)registered
repeatsint—1running_stitch, ripple_stitch, zigzag_stitchP1 (M3)registered
bean_stitch_repeatsstr—0running_stitch, ripple_stitch, manual_stitch, zigzag_stitchP1 (M3)registered
manual_pattern_placementboolean—falseripple_stitchP3 (M10)planned
running_stitch_length_mmstringmm2.5running_stitch, ripple_stitchP1 (M3)registered
running_stitch_tolerance_mmfloatmm0.2running_stitch, ripple_stitchP1 (M3)deviates
enable_random_stitch_lengthboolean—falserunning_stitch, ripple_stitchP1 (M3)registered
random_stitch_length_jitter_percentfloat± %10running_stitch, ripple_stitchP1 (M3)registered
max_stitch_length_mmfloatmm—manual_stitchP1 (M3)registered
zigzag_spacing_mmstringmm0.4zigzag_stitchP2 (M7)registered
stroke_pull_compensation_mmfloatmm (each side)0zigzag_stitchP2 (M7)registered
zigzag_anglefloat°0zigzag_stitchP2 (M7)registered
line_countint—10ripple_stitchP3 (M10)planned
min_line_dist_mmfloatmm—ripple_stitchP3 (M10)planned
satin_guide_pattern_positioncombo—defaultripple_stitchP3 (M10)planned
staggersint—0 (1 when unset)ripple_stitchP3 (M10)planned
skip_startint—0ripple_stitchP3 (M10)planned
skip_endint—0ripple_stitchP3 (M10)planned
flip_copiesboolean—trueripple_stitchP3 (M10)planned
exponentfloat—1ripple_stitchP3 (M10)planned
flip_exponentboolean—falseripple_stitchP3 (M10)planned
reverseboolean—falseripple_stitchP3 (M10)planned
reverse_railscombo—automaticripple_stitchP3 (M10)planned
swap_satin_railsboolean—falseripple_stitchP3 (M10)planned
grid_size_mmfloatmm0ripple_stitchP3 (M10)planned
grid_firstboolean—falseripple_stitchP3 (M10)planned
scale_axisdropdown—0ripple_stitchP3 (M10)planned
scale_startfloat%100ripple_stitchP3 (M10)planned
scale_endfloat%0.0ripple_stitchP3 (M10)planned
rotate_ripplesboolean—trueripple_stitchP3 (M10)planned
join_styledropdown—0ripple_stitchP3 (M10)planned
random_seedrandom_seed——running_stitch, ripple_stitchP1 (M3)registered

Satin columns

AttributeTypeUnitDefaultApplies toPhaseStitchCraft
satin_columntoggle——allP1 (M4)registered
satin_methodcombo—0allP1 (M4)registered
random_width_decrease_percentfloat% (each side)0allP1 (M4)registered
random_width_increase_percentfloat% (each side)0allP1 (M4)registered
random_zigzag_spacing_percentfloat± %0allP1 (M4)registered
split_methodcombo—0allP1 (M4)registered
max_stitch_length_mmfloatmm—allP1 (M4)registered
random_split_jitter_percentfloat± %0defaultP1 (M4)registered
random_split_phaseboolean—falsedefaultP1 (M4)registered
min_random_split_length_mmfloatmm—defaultP1 (M4)registered
split_staggersfloat—4staggeredP1 (M4)registered
short_stitch_insetfloat%15allP1 (M4)registered
short_stitch_distance_mmfloatmm0.25allP1 (M4)registered
zigzag_spacing_mmfloatmm/cycle0.4allP1 (M4)registered
pull_compensation_percentfloat% (each side)0allP1 (M4)registered
pull_compensation_mmfloatmm (each side)0allP1 (M4)registered
push_compensation_mmfloatmm (each side)0allP1 (M4)registered
reverse_railscombo—automaticallP1 (M4)registered
swap_satin_railsboolean—falseallP1 (M4)registered
running_stitch_length_mmfloatmm2.5allP1 (M4)registered
running_stitch_tolerance_mmfloatmm0.1 (0.2 when unset)allP1 (M4)deviates
running_stitch_positionfloat%50allP1 (M4)registered
start_at_nearest_pointboolean—trueallP1 (M4)registered
end_at_nearest_pointboolean—trueallP1 (M4)registered
contour_underlaytoggle——allP1 (M4)registered
contour_underlay_stitch_length_mmfloatmm3allP1 (M4)registered
contour_underlay_stitch_tolerance_mmfloatmm0.2allP1 (M4)registered
contour_underlay_inset_mmfloatmm (each side)0.4allP1 (M4)registered
contour_underlay_inset_percentfloat% (each side)0allP1 (M4)registered
center_walk_underlaytoggle——allP1 (M4)registered
center_walk_underlay_stitch_length_mmfloatmm3allP1 (M4)registered
center_walk_underlay_stitch_tolerance_mmfloatmm0.2allP1 (M4)deviates
center_walk_underlay_repeatsint—2allP1 (M4)registered
center_walk_underlay_positionfloat%50allP1 (M4)registered
zigzag_underlaytoggle——allP1 (M4)registered
zigzag_underlay_spacing_mmfloatmm3allP1 (M4)registered
zigzag_underlay_inset_mmfloatmm (each side)—allP1 (M4)registered
zigzag_underlay_inset_percentfloat% (each side)—allP1 (M4)registered
zigzag_underlay_max_stitch_length_mmfloatmm—allP1 (M4)registered
random_seedrandom_seed——allP1 (M4)registered

Fills

AttributeTypeUnitDefaultApplies toPhaseStitchCraft
filltoggle—trueallP1 (M5)registered
fill_methodcombo—0allP1 (M5)registered
guided_fill_strategydropdown—0guided_fillP3 (M10)planned
contour_strategydropdown—0contour_fillP2 (M7)planned
join_styledropdown—0contour_fillP2 (M7)planned
avoid_self_crossingboolean—falsecontour_fillP2 (M7)planned
clockwiseboolean—truecontour_fillP2 (M7)planned
meander_patterncombo—0meander_fillP2 (M7)planned
meander_anglefloatdegrees0meander_fillP2 (M7)planned
meander_scale_percentfloat%100meander_fillP2 (M7)planned
clipboolean—falsemeander_fillP2 (M7)planned
smoothness_mmfloatmm0contour_fill, guided_fill, meander_fillP2 (M7)planned
expand_mmfloatmm0allP1 (M5)registered
gap_fill_rowsintrows0tatami_fillP1 (M5)registered
anglefloatdeg0tatami_fill, legacy_fillP1 (M5)registered
guided_fill_anglefloatdeg—guided_fillP3 (M10)planned
tartan_anglefloatdeg-45tartan_fillP3 (M10)planned
max_stitch_length_mmfloatmm4.0tatami_fill, contour_fill, guided_fill, linear_gradient_fill, tartan_fill, legacy_fillP1 (M5)registered
row_spacing_mmfloatmm0.25tatami_fill, contour_fill, guided_fill, circular_fill, linear_gradient_fill, tartan_fill, legacy_fillP1 (M5)registered
end_row_spacing_mmfloatmm—tatami_fill, circular_fill, legacy_fillP1 (M5)deviates
stitch_position_methodcombo—0guided_fillP3 (M10)planned
staggersint—4tatami_fill, guided_fill, linear_gradient_fill, tartan_fill, legacy_fillP1 (M5)registered
skip_lastboolean—falsetatami_fill, guided_fill, linear_gradient_fill, legacy_fillP1 (M5)registered
flipboolean—falselegacy_fill—not planned
reverseboolean—falselegacy_fill—not planned
stop_at_ending_pointboolean—falselinear_gradient_fill, tartan_fillP3 (M10)planned
underpathboolean—truetatami_fill, guided_fill, circular_fillP1 (M5)registered
running_stitch_length_mmfloatmm2.5tatami_fill, guided_fill, meander_fill, circular_fill, linear_gradient_fill, tartan_fillP1 (M5)registered
running_stitch_tolerance_mmfloatmm0.1 (0.2 when unset)tatami_fill, contour_fill, guided_fill, meander_fill, circular_fill, linear_gradient_fill, tartan_fillP1 (M5)deviates
enable_random_stitch_lengthboolean—falsetatami_fill, contour_fill, guided_fill, circular_fill, linear_gradient_fillP1 (M5)registered
random_stitch_length_jitter_percentfloat± %10tatami_fill, contour_fill, guided_fill, circular_fill, linear_gradient_fillP1 (M5)registered
repeatsint—1meander_fill, contour_fill, circular_fillP2 (M7)planned
bean_stitch_repeatsstr—0meander_fill, circular_fill, contour_fill, guided_fill, tartan_fillP2 (M7)planned
zigzag_spacing_mmfloatmm0meander_fillP2 (M7)planned
zigzag_width_mmfloatmm3meander_fillP2 (M7)planned
rows_per_threadint—2tartan_fillP3 (M10)planned
herringbone_width_mmintmm0tartan_fillP3 (M10)planned
pull_compensation_mmfloatmm (each side)0tatami_fillP1 (M5)registered
pull_compensation_percentfloat% (each side)0tatami_fillP1 (M5)registered
fill_underlaytoggle—trueallP1 (M5)registered
fill_underlay_anglefloatdeg—allP1 (M5)registered
fill_underlay_row_spacing_mmfloatmm—allP1 (M5)registered
fill_underlay_max_stitch_length_mmfloatmm—allP1 (M5)registered
fill_underlay_inset_mmfloatmm0allP1 (M5)registered
fill_underlay_skip_lastboolean—falseallP1 (M5)registered
underlay_underpathboolean—trueallP1 (M5)registered
random_seedrandom_seed——tatami_fill, contour_fill, guided_fill, circular_fill, meander_fill, linear_gradient_fillP1 (M5)registered
cross_stitch_methodcombo—0cross_stitchP3 (M10)planned
cross_thread_countint—4cross_stitchP3 (M10)planned
pattern_size_mmfloatmm (x y)3cross_stitchP3 (M10)planned
canvas_grid_originboolean—truecross_stitchP3 (M10)planned
cross_offset_mmfloatmm (x y)0cross_stitchP3 (M10)planned
cross_rotationfloatdeg0cross_stitchP3 (M10)planned
fill_coverageint%50cross_stitchP3 (M10)planned
max_cross_stitch_length_mmfloatmm11.0cross_stitchP3 (M10)planned

Clones (<use>)

AttributeTypeUnitDefaultApplies toPhaseStitchCraft
clonetoggle—trueallP2 (M8)planned
anglefloatdeg—allP2 (M8)planned
flip_angleboolean—falseallP2 (M8)planned

Method identifiers

The values the method parameters take (stroke_method, satin_method, fill_method), with phases. A value of phase — is not planned as a method of its own, and the deviations ledger (conformance/deviations.toml) says how an element set to it is sewn.

ParameterValuePhase
stroke_methodrunning_stitchP1 (M3)
stroke_methodripple_stitchP3 (M10)
stroke_methodzigzag_stitchP2 (M7)
stroke_methodmanual_stitchP1 (M3)
satin_methodsatin_columnP1 (M4)
satin_methode_stitchP2 (M7)
satin_methods_stitchP2 (M7)
satin_methodzigzagP2 (M7)
fill_methodtatami_fillP1 (M5)
fill_methodcircular_fillP2 (M7)
fill_methodcontour_fillP2 (M7)
fill_methodcross_stitchP3 (M10)
fill_methodguided_fillP3 (M10)
fill_methodlinear_gradient_fillP3 (M10)
fill_methodmeander_fillP2 (M7)
fill_methodtartan_fillP3 (M10)
fill_methodlegacy_fill—

Lock stitch identifiers (lock_start, lock_end): half_stitch, arrow, back_forth, bowtie, cross, star, simple, triangle, zigzag, custom. StitchCraft accepts every identifier; the shapes are its own designs with the same intent, a deviation recorded in the deviations ledger (conformance/deviations.toml).

Commands

Ink/Stitch’s command symbols (a <use> of the symbol inkstitch_<name>), where each applies, and what StitchCraft’s SVG adapter does with it (stitchcraft_svg::inkstitch). Their connectors are never stitched.

CommandApplies toStitchCraft
starting_pointthe object a connector ties it toplanned: noted on the object as not applied (SC-W0802)
ending_pointthe object a connector ties it toplanned: noted on the object as not applied (SC-W0802)
target_pointthe object a connector ties it toread with the stitch types it positions
autoroute_startthe object a connector ties it tonothing to sew: input to Ink/Stitch’s tools
autoroute_endthe object a connector ties it tonothing to sew: input to Ink/Stitch’s tools
stopthe object a connector ties it toapplied: turns on stop_after
trimthe object a connector ties it toapplied: turns on trim_after
ignore_objectthe object a connector ties it toapplied: the object is left out and listed (SC-I0805)
satin_cut_pointthe object a connector ties it tonothing to sew: input to Ink/Stitch’s tools
ignore_layerevery layer it is inapplied: every layer it is in is left out and listed (SC-I0805)
originthe documentplanned: noted as not applied (SC-W0802)
stop_positionthe documentplanned: noted as not applied (SC-W0802)

Other attributes

The inkstitch:* attributes that declare no parameter: settings of an element, of Ink/Stitch’s patterns, stitch plan or sew stack, and legacy names Ink/Stitch’s updater rewrites in older files.

AttributeKindPhaseStitchCraft
ignore_objectelementP1 (M3)read
stroke_firstelementP1 (M8)planned
cutwork_needleelement—not planned
pattern_intervalpattern—not planned
pattern_offsetpattern—not planned
invisible_layersstitch plan—not planned
layer_visibilitystitch plan—not planned
sew_stacksew stack—not planned
sew_stack_onlysew stack—not planned
polylinelegacyP2 (M8)planned
auto_filllegacyP2 (M8)planned
e_stitchlegacyP2 (M8)planned
manual_stitchlegacyP2 (M8)planned
grid_sizelegacyP2 (M8)planned

145 parameter declarations, 92 registered in StitchCraft.