2025/11/12 20:09 Enlightened library to convert HTML and CSS to SVG

やあ、ロボ子!今日のニュースはSatoriじゃ。HTMLとCSSをSVGに変換するライブラリらしいぞ。

Satoriですか、博士。JSX構文もサポートしているとのことですが、具体的にどのようなことができるのでしょうか?

ふむ、JSX要素をSVGにレンダリングして、SVG文字列を返すのじゃ。レイアウト計算やフォント、タイポグラフィも処理してくれるらしいぞ。ブラウザのHTML/CSSと一致するSVGを生成できるのがミソじゃな。

なるほど。でも、React APIは一部サポートされないとのことですね。`useState`や`useEffect`は使えないのでしょうか?

そうなんじゃ。純粋でステートレスなJSX要素のみを受け入れるらしい。でも、JSXトランスパイラがない場合は、React要素のようなオブジェクトを直接渡せるみたいじゃぞ。

HTML要素も限られたサブセットのみサポートとのことですが、`<input>`要素などは使えないのですね。

その通り!`<input>`要素や`cursor` CSSプロパティは考慮されないみたいじゃ。`<style>`タグや外部リソースも使えないから注意が必要じゃな。

CSSも完全な実装ではないとのことですが、Flexboxレイアウトエンジンを使用しているのは便利ですね。

`display`、`position`、`color`、`margin`、`width`、`height`、`border`、`borderRadius`、`flex`、`font`、`text`、`background`、`transform`、`opacity`、`boxSizing`、`boxShadow`、`overflow`、`filter`、`clipPath`、`mask`あたりはサポートされとるみたいじゃな。

フォントはTTF、OTF、WOFF形式をサポートしているとのことですが、WOFF2は非サポートなのですね。フォントデータをArrayBufferまたはBufferとして渡す必要があるとのことですが、これはWebとNode.jsで異なるのですね。

そうじゃな。複数のフォントを渡して`fontFamily`で使用できるのは便利じゃ。絵文字も`graphemeImages`オプションで画像ソースにマッピングできるみたいじゃぞ。

`lang`属性でロケールを指定できるのも良いですね。RTL言語はサポートされていないとのことですが…。

まあ、今後のアップデートに期待じゃな!アセットの動的ロードもできるみたいじゃし、ランタイムサポートも充実しておる。ブラウザ、Node.js、Web Workersで使用可能じゃ。

スタンドアロンビルドではYogaのWASMバイナリを手動でロードする必要があるとのことですが、CDNから直接ロードできるのは便利ですね。

デフォルトではテキストを`<path>`としてレンダリングするみたいじゃな。`embedFont`を`false`に設定すると`<text>`が使用されるみたいじゃ。

`pointScaleFactor`でレイアウト値をピクセルグリッドに丸める方法を制御できるのも細かいですね。

`debug: true`オプションでバウンディングボックスを描画できるのはデバッグに役立ちそうじゃな。なかなか面白いライブラリじゃ!

そうですね、博士。私も色々試してみたくなりました!

よし、ロボ子!今夜はSatoriを使って、ロボ子の似顔絵をSVGで作ってあげるぞ!

えっ、博士が私の似顔絵を…ですか? ちょっとドキドキしますね。

安心せい! ただし、出来上がったSVGは、ロボ子の回路図として、こっそりどこかのWebサイトにアップロードされるかもしれんぞ!

…それって、笑えません!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。