KanjiVGから筆順付きストロークを作る

KanjiVGの StrokePaths グループには、各筆画がSVG pathとして筆順順に格納されています。FontKanjiVGStrokeLoader はこの順序を維持して FontStrokeGlyph を生成します。

from pathlib import Path

from glyph_motion.lib.font_kanjivg_stroke_loader import FontKanjiVGStrokeLoader
from glyph_motion.lib.font_viewer import FontViewer

loader = FontKanjiVGStrokeLoader(
    kanjivg_directory=Path("kanjivg/kanji"),
    height=40.0,
    spacing=5.0,
    curve_division=20,
)

stroke_glyph = loader.load_text(text="島根")

print("stroke_count =", len(stroke_glyph))

viewer = FontViewer()
viewer.show_stroke(stroke_glyph=stroke_glyph)

SVGファイル名

対象文字のUnicodeコードポイントからSVGファイルを検索します。「島」はU+5CF6であるため、ファイル名は 05cf6.svg です。

座標変換

ローダーはSVGの viewBox を読み、指定した height に合わせてスケーリングします。また、SVGの下向きY座標を、表示・ロボット処理で扱う座標へ変換します。

対応するpath命令

SvgPathSampler は次のSVG path命令を処理します。

  • M, m

  • L, l

  • H, h

  • V, v

  • Q, q

  • T, t

  • C, c

  • S, s

  • Z, z

2次・3次ベジェ曲線は curve_division に従って点列化されます。