KanjiVG keeps two structures in one file, as Strokes sets out. Nested groups are the hierarchical containment of components. The -sN order on each path is how those strokes are realized, and that order is part of the form. Components are the arguments of the composition. Valence is how many slots the frame opens — the arity — and not the stroke count (Valence atlas). Below, the multiset of top-level arguments is held still. What changes is where each argument sits, and therefore which argument contains stroke 1, and whether that slot is written first, last, or split.

Name
The name of a top-level slot. When the groups of the slot record exactly one kvg:original, that is the name. Otherwise the name is kvg:element. The drawn element is kept in the caption when it differs. A slot with no name keeps the character out of these sets.
Multiset
The names of the top-level slots, counted without regard to order. Two of the same name count twice. The join of a kvg:part split is the one used on the valence atlas and on radical positions.
Arrangement
The slots in document order, each with its name, its kvg:position, and the timing class of its strokes. An empty position means the attribute is absent. Two characters differ in arrangement when this record is not the same.
First, last, split
First: one unbroken run starting at stroke 1, with some other stroke still to come. Last: one unbroken run ending on stroke N, with some other stroke already written. Split: two or more runs, with other strokes in a gap. When a split also contains stroke 1 and stroke N, the slot encloses what is written between. Mid: one unbroken run that is neither the start nor the end.

The same top-level names, in a different arrangement, are not the same stroke sequence. Which component contains stroke 1, and whether a slot is first, last, or split, is what the files record for that arrangement.

Each plate draws itself in writing order. Cinnabar marks the one shared component named in the caption. Click a plate to replay. With reduced motion the finished character stays still, and the highlight stays.

On this page

Counted over the jōyō list

Relation Sets Characters

Top–bottom swapped, and enclosure beside a side-by-side arrangement, are in the table. This snapshot has none.

Left–right beside top–bottom

One character is top and bottom. The other is left and right. The component that contains stroke 1 may be the same one, or the other one.

No position, parts exchanged

Neither file sets kvg:position. The two components exchange which one contains stroke 1.

Top–bottom beside no position

One file marks top and bottom. The other sets no position. The components stay in the same order, and the same one contains stroke 1.

Top–bottom beside no position, order exchanged

One file marks top and bottom. The other sets no position, and stroke 1 is in the other component. Where the timing says split, other strokes are written in the gap.

Left–right beside no position

One file marks left and right. The other sets no position. The components stay in the same order, and the same one contains stroke 1.

More than one relation

日 and 丨. 旧 writes 丨 first, on the left. 由, 甲, and 申 set no position. 甲 and 申 share one arrangement: 日 runs from stroke 1, and 丨 is last. 由 writes 丨 at stroke 3, and the strokes of 日 sit on both sides of it.

Every set

One row per character. Parts are the multiset, in code-point order. Stroke 1 names the component that contains it. The last column is each slot’s drawn element, position, timing, and strokes.

Character Parts Relation Positions Stroke 1 Slots

What this shows

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