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. Below, the type sequence is held still, or moved at one index, and the character still changes. The change is length, place, how far a stroke closes, or which index a class occupies.

Each plate draws itself in writing order. Click a plate to replay. Gray digits are that file’s own stroke numbers. With reduced motion the finished character stays still.

On this page

The same types, different lengths

Where the kvg:type string matches at every index, the character can still change with the length of a stroke.

土 · s1 ㇐, s2 ㇑a, s3 ㇐. The upper bar is the short one.
士 · s1 ㇐, s2 ㇑a, s3 ㇐. The upper bar is the long one.
工 · s1 ㇐, s2 ㇑a, s3 ㇐. The vertical starts on the upper bar.

What this difference does

土, 士, and 工 carry one sequence: ㇐, ㇑a, ㇐. In 土 the upper horizontal is the shorter bar and the lower one runs wider. In 士 those lengths are reversed. In both, the vertical begins above the upper bar. In 工 the vertical begins on that bar and does not continue above it, and the lower bar is the long one. Same types, same order. The length of the two bars, and how far the vertical reaches, is what separates the characters.

未 · s1 ㇐, s2 ㇐, s3 ㇑, s4 ㇒, s5 ㇏. The first bar is the short one.
末 · s1 ㇐, s2 ㇐, s3 ㇑, s4 ㇒, s5 ㇏. The first bar is the long one.

What this difference does

Both files are ㇐, ㇐, ㇑, ㇒, ㇏. In 未 the first horizontal is the short one and the second is longer. In 末 the first is the long one and the second is shorter. The last three types do not change. The character is the relative length of those two bars.

天 · s1 ㇐, s2 ㇐, s3 ㇒, s4 ㇏. The left-falling stroke starts under the top bar.
夫 · s1 ㇐, s2 ㇐, s3 ㇒, s4 ㇏. The left-falling stroke starts above the top bar.

What this difference does

Both files are ㇐, ㇐, ㇒, ㇏. In 天 the top bar is the longer of the two horizontals, and the left-falling stroke begins under that bar. In 夫 the second horizontal is the longer one, and the left-falling stroke begins above the top bar. The sequence is the same. The lengths, and where the third stroke starts, are not.

日 · s1 ㇑, s2 ㇕a, s3 ㇐a, s4 ㇐a. The frame is taller than it is wide.
曰 · s1 ㇑, s2 ㇕, s3 ㇐, s4 ㇐. The frame is wider than it is tall.

What this difference does

Four strokes, the same classes: a vertical, a bend, and two horizontals. KanjiVG types 日 as ㇑, ㇕a, ㇐a, ㇐a and 曰 as ㇑, ㇕, ㇐, ㇐, so the full strings are not the same. The frame of 日 is taller than it is wide. The frame of 曰 is wider than it is tall. 曰 is not in the jōyō list, and it is not in the count below. The proportion of that frame is the difference.

The same types, a different place

Where the type sequence matches, the character can still change with where a stroke begins.

人 · s1 ㇒, s2 ㇏. The left-falling stroke is the long one and starts at the top.
入 · s1 ㇒, s2 ㇏. The right-falling stroke is the long one and starts at the top.
八 · s1 ㇒, s2 ㇏. The two strokes start apart, and they do not meet in one peak.

What this difference does

The sequence is ㇒ then ㇏ in all three. In 人 the left-falling stroke is the long one and starts at the top; the right-falling stroke is shorter and starts lower. In 入 those roles are reversed. In 八 the two strokes start apart: the left one lower and further left, the right one higher, and they do not meet in a single peak. One sequence, three characters, distinguished by length and by where each stroke begins.

牛 · s1 ㇒, s2 ㇐, s3 ㇐, s4 ㇑. The vertical starts above both bars.
午 · s1 ㇒, s2 ㇐, s3 ㇐, s4 ㇑. The vertical starts under the upper bar.

What this difference does

Both are ㇒, ㇐, ㇐, ㇑. In 牛 the vertical, s4, begins above the short diagonal and above both bars. In 午 that vertical begins under the upper bar, and the short diagonal is what reaches above it. The types match. The reach of the vertical does not.

刀 · s1 ㇆, s2 ㇒. The left-falling stroke starts level with the hook.
力 · s1 ㇆, s2 ㇒. The left-falling stroke starts above the hook.

What this difference does

Both are ㇆ then ㇒. In 刀 the left-falling stroke starts about level with the hook and is the shorter of the two. In 力 it starts above the hook and is the long stroke. Same types. The length and the starting height of s2 separate them.

大 · s1 ㇐, s2 ㇒, s3 ㇏. No fourth stroke.
犬 · s1 ㇐, s2 ㇒, s3 ㇏, s4 ㇔. The dot is at the upper right.
太 · s1 ㇐, s2 ㇒, s3 ㇏, s4 ㇔. The dot is under the crossing.

What this difference does

犬 and 太 share ㇐, ㇒, ㇏, ㇔. The dot is s4 in both. In 犬 it sits at the upper right, above the horizontal. In 太 it sits under the crossing. 大 is the first three of those types and has no dot. It does not share the four-type sequence. Among jōyō characters it shares ㇐, ㇒, ㇏ with 丈, and that pair is in the count below. The dot’s place, or its absence, is the difference on the plates.

How far one stroke closes

The last stroke is the same class in all three. What changes is how far it rises. The full type string is not identical in every file.

己 · s1 ㇕c, s2 ㇐, s3 ㇟. The third stroke starts on the middle bar and does not rise.
已 · s1 ㇕, s2 ㇐, s3 ㇟. The third stroke rises past the middle bar and stops short of the top.
巳 · s1 ㇕, s2 ㇐, s3 ㇟. The third stroke rises to the top.

What this difference does

The third stroke is ㇟ in all three. In 己 it starts on the middle bar and does not rise, so the top stays open. In 已 it rises past that bar and stops short of the top. In 巳 it rises to the top. 已 and 巳 use s1 ㇕; 己 uses s1 ㇕c. 已 and 巳 are not in the jōyō list, so they are not in the count below. The extent of s3 is what separates the three graphs.

The same classes, another index

The stroke classes are the same set. The index of one of them is not, so the type strings are not the same sequence.

右 · s1 ㇒, s2 ㇐, then 口 as s3 ㇑, s4 ㇕b, s5 ㇐b.
石 · s1 ㇐, s2 ㇒, then 口 as s3 ㇑, s4 ㇕b, s5 ㇐b.

What this difference does

The sequences are not the same string. 右 opens ㇒ then ㇐. 石 opens ㇐ then ㇒. From s3 both write 口 as ㇑, ㇕b, ㇐b. The first two classes trade indexes. The same exchange, tied to which stroke is the short one, is the subject of Same parts, different order for 右 and 左. Here the two files are two characters.

王 · s1 ㇐, s2 ㇑a, s3 ㇐, s4 ㇐. No dot.
玉 · s1 ㇐, s2 ㇑a, s3 ㇐, s4 ㇐, s5 ㇔. The dot is last, on the lower right.
主 · s1 ㇔, s2 ㇐, s3 ㇑a, s4 ㇐, s5 ㇐. The dot is first, above the top bar.

What this difference does

These three do not share one type string. 王 is ㇐, ㇑a, ㇐, ㇐. 玉 writes that sequence and then a dot, s5 ㇔, on the lower right between the middle bar and the bottom bar. 主 writes the dot first, s1 ㇔, above the top bar, and then those four types. The four non-dot types match. What changes is whether there is a dot, and which index it occupies.

Counted over the jōyō list

kvg:type sequence

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.