kanta's spike

InkscapeでPythonを使い、縁取り文字の作成を自動化したい。

解決策

PythonスクリプトでInkscapeの機能を使いやすくするSimple Inkscape Scriptingという拡張機能がある。

まず、この拡張機能をインストールする。

cd  ~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions
git clone https://github.com/spakin/SimpInkScr.git

Inkscapeを再起動すると利用可能になる。

メニューのエクステンション->レンダリング->Simple Inkscape Scripting...を選択し、 表示されるダイアログで、Pythonスクリプトファイルを選択するか、直接Pythonコードを入力すれば、 Pythonを使ってInkscapeに描画できる。

また、Inkscapeで何かを手動で描いた後、 メニューのファイル->名前を付けて保存を選択し、ファイル保存先の選択ダイアログで、 ファイルの種類をSimple Inkscape Scripting script (*.py)に設定し保存すれば、 描いたものがPythonスクリプトとして保存される。

使い方

Simple Inkscape Scriptingダイアログに以下のコードを入力して実行すると、 Inkscapeで文字を書きますという文字が指定したスタイルで追加されます。

text("Inkscapeで文字を書きます", (30, 30), font='Dela Gothic One', font_size=24*pt, font_weight='Bold', fill='#2937c2', stroke='#c2b329', stroke_width=1)

また、以下を入力して実行すると、テストです!という文字を30x4個追加します。

OFFSET_X = 24*pt
OFFSET_Y = 24*pt * 1.5
MARGIN_X = 12*pt
MARGIN_Y = 6*pt
font_style = {"font": 'Dela Gothic One', "font_size": 24*pt, "font_weight": 'Bold', "fill": '#000000', "stroke": '#c31913', "stroke_width": 0.3}
txt = text("テストです!", (0, 0), **font_style)
box = txt.bounding_box()
txt.remove()
cursor = [OFFSET_X, OFFSET_Y]
for i in range(30):
    for j in range(4):
        text("テストです!", cursor, **font_style)
        cursor[0] += box.width + MARGIN_X
    cursor[1] += box.height + MARGIN_Y
    cursor[0] = OFFSET_X

参考

作成日: 2022/12/11