These are counts in one KanjiVG snapshot. A count is not a rule.

When the longest stroke has been drawn it flashes and then stays indigo. Click a plate to replay. With reduced motion the finished character stays still, and the mark stays. The flash is optional data-longest-stroke. A plate without it does not flash a stroke. The plate stays cream in either theme. The draw timings are unchanged.

On this page

How the longest stroke is chosen

The longest stroke
The length is the arc length on Stroke length and order. A cubic and a smooth cubic are replaced by 24 straight chords at equal parameter steps. The length is the sum of those chords. A moveto does not add a jump. The stored length is that sum, rounded half away from zero to a hundredth. The longest stroke is the stroke of greatest stored length. The helper is length_of in tools/stroke_length.py.
A tie
When two or more strokes share that stored length, the earliest stroke number is the one classified. That is the stroke the stroke-length page stores as at.
The finished box
The axis-aligned bounding box of every sample of every stroke. The samples are the vertices of those chords. Top is the smaller y. In the SVG, y grows downward. The centre is the centre of that box.
A frame stroke
The stroke’s samples meet two opposite sides of the finished box, within 3/2. Opposite sides are left and right, or top and bottom. 3/2 is half the stroke width 3 written on the stroke group. The closed test allows a slack of 1e-9.
A spine
The distance from the centre to the stroke is the minimum distance from the centre to a chord. That distance is rounded half away from zero to a hundredth. A spine is a stored distance of at most 10.00.
Both
A stroke that is a frame stroke and a spine is both. It is counted in that row alone. Frame on this page is the frame test without the spine test. Spine is the spine test without the frame test. Neither is neither test. The four rows add to 2,136.
Rank
The rank of stroke k in a character of n strokes is k/n. The rank tenth is b = ⌈10k/n⌉ − 1, so k/n lies in (b/10, (b+1)/10]. The helper is rank_tenth in tools/stroke_tempo.py. The last tenth is the bin (0.9, 1]. Every last stroke falls there.
What the neighbouring pages count
Stroke length and order records every stroke’s length, the last stroke against the character mean, and where the unique longest stroke falls in the order. This page uses that length and that tie rule, and leaves the histogram and the rank correlation there. Enclosing frames counts each top-level slot whose kvg:position is kamae, tare, or nyo. The box on this page is the finished bounding box of the samples.

Four classes

Both, frame, spine, and neither partition the 2,136 characters. The total row says so. The last-tenth column is the characters whose longest stroke has rank k/n in (0.9, 1]. That column adds to the last-tenth total. The share beside a class is that count over 2,136, in percent to one decimal, rounded half up. The share beside a last-tenth count is that count over the class.

Class Characters Share Last tenth Share of the class

Rank in the order

Each row is one tenth of k/n. Both, frame, spine, and neither add to the row. The ten rows add to 2,136, and each column adds to its class. The total row says so.

Rank tenth Both Frame Spine Neither Total

Plates

Both

Frame

Spine

Neither

KanjiVG · CC BY-SA 3.0

What this shows

Stroke diagrams: KanjiVG, Ulrich Apel et al., CC BY-SA 3.0, from commit 70a0b7ae0c18ceb5cb358274b029cce0234a43bc of github.com/KanjiVG/kanjivg. The plate files are unmodified copies in site/assets/kanjivg/. Jōyō index: the list used on the Gallery. Length: Stroke length and order.