お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

Inkscapeのフォントの互換性について

 Inkscapeで描いた文字列(テキストオブジェクト)に特定のフォントを設定した場合、それを保存したSVGファイルの互換性はどうなっているのか?他のコンピュータで表示しようとした場合も同じ形状のテキストとして表示できるのか?という問題です。

(2023.08.25更新)

何が問題なのか

 こういうことはフォントを設定する機能を持つデータやソフトに共通の問題なのだと思います。

 例えばCSS(スタイルシート)の中で記述されているフォント名のフォントが表示しようとする環境で利用可能な状態でない場合、表示結果はどうなるのか?という問題です。CSSの場合についていえば、フォント名として第2候補、第3候補というようにフォント名を記述しておくことができますが、それでも使えるフォントがその中にない場合はデフォルトのフォントが使われるそうです。といっても「sans-serif」のように「総称フォント」と呼ばれる、フォントの「種類」を示す名前も使えるので、なんとか意図した表示結果に近いイメージの表示になるようです。

Inkscapeの場合は?

 Inkscapeはお絵描きツールなので、そこで作ったデータは編集したときの見た目と同じフォントで表示して欲しいという思いは、他のソフトに比べて強いかと思います。

 Inkscapeでテキストオブジェクトに対して設定したフォントは、SVGファイルの中では、そのフォント名をテキストオブジェクトのスタイル(font-family)に記述する形で格納されます。

 だから保存したSVGファイルを他のコンピュータに持って行ったとき、同じ名前のフォントがその相手側のコンピュータでもインストールされていて利用可能であれば同じように表示できますが、同じ名前のフォントが利用可能でない場合はむりやり別のフォント(すなわちデフォルトのフォント)で表示されてしまうことになります。

 でも相手側のコンピュータのデフォルトフォントがどんなデザインのものかは知りようがないので、お絵描きツールである場合に限れば、これはあまり望ましくない状態ということになります。

 逆に他のコンピュータで作られたSVG形式データを自分のコンピュータに持ってきてInkscapeで表示させようとしたとき、利用可能ではないフォント名が設定されているテキストオブジェクトが含まれていると、Inkscapeは次のようにそのことを知らせる表示をします。

Inkscapeのデフォルトフォント

 テキストオブジェクトに設定されているフォント名のフォントが利用可能でないときにInkscapeが使うデフォルトフォントが何なのかはわかってません。

 テキストツールのスタイルとして設定されているフォントや、テキストとフォントダイアログのデフォルトとして設定ボタンを押すことで設定されているフォントは、新規テキストオブジェクトに適用されるフォントであって、存在しないフォントの代替フォントとして使われるという意味はないようです。

テキストをパス化すれば解決

 作成時とは違くフォントで表示されてしまうのは嫌だという場合はどうすればいいかというと、いくつかの解説コンテンツによれば、テキストオブジェクトにフォントを設定してからパス > オブジェクトをパスへというメニューを操作して、テキストオブジェクトではなくベタなパスオブジェクトに変換してしまうことが推奨されています。こうすれば、SVG形式の中で統一されているパスオブジェクトのデータになるので、どこへ持っていっても同じように表示できるというわけです。

 どんなフォント名をSVGファイルに格納しても表示できるように、Webフォントなんていう方法を使うことも考えられますが、InkscapeでWebフォントを使うにはどうすればいいのか?はまだ勉強してません。

テキストオブジェクトをまとめてパスにする

 ところで、数多くのテキストオブジェクトをいちいち選択して、パスオブジェクトに変換するのはちょっと面倒です。できるだけテキストオブジェクトの状態で編集したほうが楽なことも多いですし。

 そんな場合は、とりあえずパスオブジェクトに変換する作業は後回しにして、テキストオブジェクトとしてドキュメントを作成し、最後の最後にすべてのテキストオブジェクトをまとめて選択してパス > オブジェクトをパスへメニューを操作すれば良さそうです。

 次のサンプルは、文字列をいくつか描いたものですが、このうち、1つだけはテキストオブジェクトではなく、パスオブジェクトです。ここで、残りのテキストオブジェクトも全部パスオブジェクトに変換したいとします。

 そこで、検索/置換ダイアログを表示し、次のようにオブジェクトタイプとしてテキストを選んで検索ボタンを押します。


 すると、テキストオブジェクトだけが選択状態になります。


 そうしておいて、パス > オブジェクトをパスへメニューを操作すればOKです。

 ちなみに、パスオブジェクトを選択してパス > オブジェクトをパスへメニューを操作しても、何も起こらず無視されます。「オブジェクトをパスへ」とは「パスオブジェクト以外のオブジェクトをパスオブジェクトへ」という意味なのでしょうね。