Path simplification cuts off small loops ("o", "a") / Request for curved stroke modeling like Rnote's "Curved" mode #8

Closed
opened 2026-10-08 09:23:50 +02:00 by pia · 1 comment
Collaborator

Problem Description
When writing in Ink Notes, small loops and sharp turns in handwriting—most noticeably in letters like "o" and "a"—are aggressively cut off or straightened out by the path algorithm. This significantly impairs legibility, as closed circular shapes collapse into pinched angles or truncated segments rather than remaining distinct, round letters.

Comparison with Rnote
In Rnote’s Brush Configuration, three path modeling approaches are offered:

Simple (Produces line segments from raw input)

Curved (Produces smooth, curved segments)

Modeled (Produces a modeled path with physics-based algorithms)

Rnote's third option ("Modeled") tends to over-smooth and ruin tight handwriting by cutting off loops, very similar to what is currently happening in Ink Notes. However, Rnote's middle option—"Curved"—strikes the ideal balance: it applies smooth Bézier/curved segments to the stroke without discarding or cutting short the actual points of small closed loops like "o" and "a".

Suggested Solution

Implement a path modeling mode analogous to Rnote's "Curved" setting (fitting smooth curved segments through the input points without physics-based over-simplification).

Reduce corner-cutting / tolerance thresholds on tight loops so that small circular handwriting remains open and readable.

(Xournall++ also has a very good option for that)

Problem Description When writing in Ink Notes, small loops and sharp turns in handwriting—most noticeably in letters like "o" and "a"—are aggressively cut off or straightened out by the path algorithm. This significantly impairs legibility, as closed circular shapes collapse into pinched angles or truncated segments rather than remaining distinct, round letters. Comparison with Rnote In Rnote’s Brush Configuration, three path modeling approaches are offered: Simple (Produces line segments from raw input) Curved (Produces smooth, curved segments) Modeled (Produces a modeled path with physics-based algorithms) Rnote's third option ("Modeled") tends to over-smooth and ruin tight handwriting by cutting off loops, very similar to what is currently happening in Ink Notes. However, Rnote's middle option—"Curved"—strikes the ideal balance: it applies smooth Bézier/curved segments to the stroke without discarding or cutting short the actual points of small closed loops like "o" and "a". Suggested Solution Implement a path modeling mode analogous to Rnote's "Curved" setting (fitting smooth curved segments through the input points without physics-based over-simplification). Reduce corner-cutting / tolerance thresholds on tight loops so that small circular handwriting remains open and readable. (Xournall++ also has a very good option for that)
Owner

Fixed in v0.13.0. The cause was the live smoothing filter: it smoothed x and y separately and reacted slowly to writing speed, which pulled small, quickly written loops together, and the finished stroke was built from those shrunken points. Now the finished stroke is built from the unfiltered pen points with a light, symmetric smoothing (no lag) – similar to Rnote's "Curved" mode. The live filter (only used while writing) follows the speed in the plane and reacts faster, and corners are only kept between segments of at least 0.6 mm, so tight loops are no longer turned into points. In our measurement, an "o" with 0.8 mm radius written in 0.1 s used to shrink to 0.61 mm with two sharp kinks; now it keeps 0.78 mm and stays round. Feedback with your pen is very welcome.

Fixed in v0.13.0. The cause was the live smoothing filter: it smoothed x and y separately and reacted slowly to writing speed, which pulled small, quickly written loops together, and the finished stroke was built from those shrunken points. Now the finished stroke is built from the unfiltered pen points with a light, symmetric smoothing (no lag) – similar to Rnote's "Curved" mode. The live filter (only used while writing) follows the speed in the plane and reacts faster, and corners are only kept between segments of at least 0.6 mm, so tight loops are no longer turned into points. In our measurement, an "o" with 0.8 mm radius written in 0.1 s used to shrink to 0.61 mm with two sharp kinks; now it keeps 0.78 mm and stays round. Feedback with your pen is very welcome.
Sign in to join this conversation.
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: harald/ink-notes#8