glyph_motion.lib package
Submodules
glyph_motion.lib.font_alphabet_stroke_builder module
K.NAKADA, kengo.nakada@gmail.com
アルファベット文字列から筆順付き stroke データを生成する。
このモジュールは、通常フォントのアウトラインを使わない。 最初からロボットでなぞるための single-line stroke を生成する。
既存のアウトラインフォント処理とは別系統の入力経路である。 既存の outline -> filled -> centerline -> motion の処理はそのまま残す。
このモジュールが出力する FontStrokeGlyph は、筆順を持つ。 FontStrokeGlyph の各 FontStrokePath は、一回ペンを下ろして書く単位である。
stroke 内部は、粗い制御点をそのまま直線で結ぶだけではなく、 stroke_division に従って細かい点列へ分割する。
これにより、FontMotionBuilder は変更せずに、 より細かいロボット移動命令を生成できる。
- class FontAlphabetStrokeBuilder(height, spacing, stroke_division=20)[source]
Bases:
objectアルファベット文字列から筆順付き stroke データを作るクラスである。
- _build_glyph_table()[source]
内蔵 stroke 定義を返す。
座標は 0.0 から 1.0 の正規化座標で定義する。 path の順序が筆順である。
ここで定義する点は制御点に近い粗い点である。 実際に返す FontStrokeGlyph では、stroke_division に従って 各線分を細かい点列へ分割する。
- _subdivide_segment(start_point, end_point)[source]
2点間の線分を stroke_division 個の小区間へ分割する。
返す点列には始点を含めない。 終点は含める。
glyph_motion.lib.font_centerline_cleaner module
K.NAKADA, kengo.nakada@gmail.com
中心線抽出後の線分を、ロボット移動命令へ渡しやすい点列へ整理する。
FontCenterlineExtractor が出力する FontCenterlineGlyph は、画像処理で得た 生の中心線である。生の中心線には、短い枝、重複点、細かすぎる点間隔、 孤立した短線分が含まれる可能性がある。
このモジュールは、生の FontCenterlineGlyph を入力として受け取り、 短すぎる線分の除去、連続重複点の除去、点間隔の再サンプリングを行った FontCenterlineGlyph を返す。
ここではフォント読み込み、輪郭抽出、塗りつぶし、中心線抽出、表示、 ロボット固有API呼び出しは行わない。
- class FontCenterlineCleaner(min_path_length, point_spacing)[source]
Bases:
object生の中心線をロボット向けの中心線へ整理するクラスである。
- _calculate_path_length(centerline_path)[source]
中心線パス全体の長さを計算する。
- Parameters:
centerline_path (FontCenterlinePath)
- Return type:
- _remove_consecutive_duplicate_points(centerline_path)[source]
連続する同一点を除去する。
- Parameters:
centerline_path (FontCenterlinePath)
- Return type:
- _resample_path(centerline_path)[source]
中心線パスを指定間隔に近い点列へ再サンプリングする。
- Parameters:
centerline_path (FontCenterlinePath)
- Return type:
- clean(centerline_glyph)[source]
中心線群を整理する。
- Parameters:
centerline_glyph (FontCenterlineGlyph) – 整理対象の中心線群である。
- Returns:
整理後の中心線群である。
- Return type:
glyph_motion.lib.font_centerline_extractor module
K.NAKADA, kengo.nakada@gmail.com
塗りつぶし済み文字領域から中心線を抽出する。
FontFilledGlyph を入力として受け取り、FontCenterlineGlyph を出力する。 太さを持つ文字領域を、ロボットがなぞる候補になる細い線へ変換する。
- class FontCenterlineExtractor[source]
Bases:
object塗りつぶし済み文字領域から中心線を抽出する。
- extract(filled_glyph)[source]
文字領域から中心線群を抽出する。
- Parameters:
filled_glyph (FontFilledGlyph)
- Return type:
glyph_motion.lib.font_fill_glyph module
glyph_motion.lib.font_geometry module
K.NAKADA, kengo.nakada@gmail.com
フォント文字を中心線へ変換する処理で共有する幾何データ型を定義する。
このモジュールは、処理段階の入出力データだけを保持する。 フォントの読み込み、輪郭抽出、塗りつぶし、中心線抽出、表示、移動命令生成は それぞれ別モジュールで行う。
- class FontCenterlineGlyph(text, paths)[source]
Bases:
object指定文字列から得た中心線群を表す。
- Parameters:
text (str)
paths (List[FontCenterlinePath])
- paths: List[FontCenterlinePath]
- class FontFilledGlyph(text, mask, x_min, y_min, pixel_size)[source]
Bases:
object輪郭を格子上に塗りつぶした文字領域を表す。
- mask: ndarray
- class FontOutlineGlyph(text, paths)[source]
Bases:
object指定文字列から取り出した輪郭線群を表す。
- Parameters:
text (str)
paths (List[FontOutlinePath])
- paths: List[FontOutlinePath]
- class FontOutlinePath(points, closed)[source]
Bases:
objectフォントから取り出した一本の輪郭線を表す。
- class FontPoint(x, y)[source]
Bases:
objectXY平面上の一点を表す。
- class FontStrokeGlyph(text, paths)[source]
Bases:
object筆順付き文字データを表す。
paths の順序が、そのままロボットに書かせる順序である。 各 FontStrokePath は、一回ペンを下ろして書く単位である。
- Parameters:
text (str)
paths (List[FontStrokePath])
- paths: List[FontStrokePath]
glyph_motion.lib.font_kanjivg_stroke_loader module
K.NAKADA, kengo.nakada@gmail.com
- KanjiVG の SVG ファイルから筆順付き stroke データを読み込む。
[oai_citation:1‡KanjiVG](https://kanjivg.tagaini.net/svg-format.html?utm_source=chatgpt.com)つ SVG path を読み取り、FontStrokeGlyph に変換する。
KanjiVG の StrokePaths グループには、漢字の各筆画が SVG path として 筆順順に格納されている。この順序をそのままロボット筆記順として使う。
このモジュールは、漢字用の本命ルートである。
KanjiVG SVG -> FontStrokeGlyph -> FontMotionBuilder
という流れで使う。
- class FontKanjiVGStrokeLoader(kanjivg_directory, height, spacing, curve_division=16)[source]
Bases:
objectKanjiVG SVG から筆順付き FontStrokeGlyph を生成するクラスである。
- load_character(character)[source]
一文字の KanjiVG SVG を読み込み、筆順付き stroke データを返す。
- Parameters:
character (str)
- Return type:
- class SvgPathSampler(curve_division)[source]
Bases:
objectSVG path の M/L/H/V/Q/T/C/S/Z 命令を点列へサンプリングする。
- Parameters:
curve_division (int)