glyph_motion package
Subpackages
- glyph_motion.lib package
- Submodules
- glyph_motion.lib.font_alphabet_stroke_builder module
- glyph_motion.lib.font_centerline_cleaner module
- glyph_motion.lib.font_centerline_extractor module
- glyph_motion.lib.font_fill_glyph module
- glyph_motion.lib.font_geometry module
- glyph_motion.lib.font_kanjivg_stroke_loader module
FontKanjiVGStrokeLoaderFontKanjiVGStrokeLoader._collect_stroke_paths()FontKanjiVGStrokeLoader._convert_svg_point()FontKanjiVGStrokeLoader._find_stroke_paths_group()FontKanjiVGStrokeLoader._find_svg_file()FontKanjiVGStrokeLoader._read_view_box()FontKanjiVGStrokeLoader._strip_namespace()FontKanjiVGStrokeLoader.load_character()FontKanjiVGStrokeLoader.load_text()
SvgPathSamplermain()
- glyph_motion.lib.font_outline_extractor module
- glyph_motion.lib.font_viewer module
- glyph_motion.lib.run_font_kanjivg_stroke_view module
- glyph_motion.lib.run_font_view module
- glyph_motion.server_fastapi package
Submodules
glyph_motion.font_bcap_cobotta_writer module
glyph_motion.font_line_layout module
KanjiVG の文字ストロークを固定サイズの一行レイアウトへ配置する。
このモジュールは、文字列を文字単位のセルへ割り当て、KanjiVG から取得した
ストローク座標を各セルの中央へ平行移動する。生成される座標列は
FontStrokePath として保持され、後段の軌道生成処理やロボット制御処理へ
渡すことを想定している。
本モジュールの責務は幾何学的な配置に限定される。ロボットへの接続、姿勢変換、 ペンの上げ下げ、速度指定などの装置依存処理は行わない。これにより、文字配置の 検証と実機制御を分離し、同一のレイアウト結果を異なる出力装置で再利用できる。
配置処理では、作業空間を固定幅のセルに分割し、文字列中の各文字を一つのセルへ
対応付ける。文字の実幅がセル幅より小さい場合は水平方向に中央揃えし、文字高は
指定された character_height を基準として垂直方向に中央揃えする。空白文字も
一つのセルを消費するが、ストロークは生成しない。
- class FontLineLayout(kanjivg_directory, workspace_width, workspace_height, cell_width, cell_height, character_height, curve_division=16, line_direction='left_to_right', writing_direction='horizontal', vertical_direction='top_to_bottom', mirror_horizontal=False, mirror_vertical=False)[source]
Bases:
object固定作業空間内に一行分の文字ストロークを配置する。
作業空間を
cell_widthとcell_heightで定義される固定セルに分割し、 入力文字列の各文字を順番に割り当てる。文字データはFontKanjiVGStrokeLoaderから取得し、セル中央へ移動した後、必要に応じて 水平方向の鏡像変換を適用する。このクラスは、文字列から「どの文字が、どのセルに、どの座標列として置かれる か」を確定するレイアウト層である。後段のモーション生成処理が文字幅や余白を 再計算する必要がないよう、配置結果を絶対座標で返す。
- Parameters:
kanjivg_directory (Path) – KanjiVG の SVG ファイルを格納したディレクトリ。
workspace_width (float) – 一行の配置に使用できる作業空間の幅。
workspace_height (float) – 作業空間の高さ。
cell_width (float) – 一文字へ割り当てるセルの幅。
cell_height (float) – 一文字へ割り当てるセルの高さ。
character_height (float) – KanjiVG から読み込む文字の基準高さ。
curve_division (int) – ベジェ曲線を折れ線へ分割するときの分割数。
line_direction (str) – 横書き時の進行方向。
left_to_rightまたはright_to_leftを指定する。writing_direction (str) – 文字列を横書きまたは縦書きのどちらで配置するか。
vertical_direction (str) – 縦書き時の進行方向。
top_to_bottomまたはbottom_to_topを指定する。mirror_horizontal (bool) – 各セル内の文字を水平方向に反転するかどうか。
mirror_vertical (bool) – 各セル内の文字を垂直方向に反転するかどうか。
- Raises:
ValueError – 作業空間、セル寸法、文字高が正でない場合。
ValueError – セル寸法が作業空間を超える場合。
ValueError – 文字高がセル高を超える場合。
ValueError – 配置方向の指定が未対応の値である場合。
- build(text)[source]
文字列を固定セルへ割り当て、配置済みストローク列を生成する。
各文字について、次の順序で配置を行う。
文字列中の位置から使用するセル番号を決定する。
書字方向に応じてセル原点を求める。
空白文字では空のストローク列を生成する。
KanjiVG から文字ストロークと文字幅を読み込む。
文字をセル中央へ移動するためのオフセットを求める。
各点へ平行移動と必要な鏡像変換を適用する。
配置済み文字情報として結果へ追加する。
入力文字列の順序は
PositionedCharacter.indexに保持される。 返却リストの順序と各文字の筆順は常に入力順を維持し、進行方向の指定は 各文字へ割り当てるセル原点の増分符号だけを変更する。- Parameters:
text (str) – 配置する文字列。空白文字も一文字分のセルを使用する。
- Returns:
入力文字列の順序で並んだ配置済み文字情報のリスト。
- Raises:
ValueError – 文字数が作業空間の収容数を超える場合。
ValueError – 読み込んだ文字幅がセル幅を超える場合。
- Return type:
- class PositionedCharacter(character, index, cell_origin_x, cell_origin_y, strokes)[source]
Bases:
object一つの文字セルへ配置済みの文字情報を保持する。
文字そのものに加え、入力文字列中の位置、割り当てられたセルの原点、 およびセル座標系へ変換済みのストローク列をまとめて保持する。 空白文字では
strokesが空になるが、文字列中の位置とセル割り当ては 他の文字と同様に保持される。- Parameters:
- character
配置対象の一文字。
- index
入力文字列中のゼロ始まりの文字位置。
- cell_origin_x
セル原点の X 座標。
- cell_origin_y
セル原点の Y 座標。
- strokes
配置済みストローク列。