やるきなし

2015/12/01 12:45 / MediaWiki で SVG

MediaWiki で SVG (scalable vector graphics) を利用するには https://www.mediawiki.org/wiki/Manual:Image_administration#SVG を参照しつつ設定すれば良いわけだが,Preview 作成に ImageMagick (convert) を利用するらしくその部分で少しはまる.

具体的には inkscape が install されていると convert コマンドは svg から png の生成に inkscape を利用するのだが,svg のファイル名に ! (exclamation mark)が含まれているとうまく変換できない.strace で追った感じだと,以下のように !_ だと解釈して inkscape を起動するのだが,そのファイルが見つからなくてタイムアウトまで何度も inkscape を起動する.

% strace -f convert 't!s.svg' t.png
[pid 20817] execve("/bin/sh", ["sh", "-c", "\"inkscape\" \"t_s.svg\" --export-ep"...], [/* 48 vars */]) = 0

これの何が問題かというと,svg を MediaWiki に upload した後にそのファイルの差替を行うと,古いファイルが images/thumb/archive/f/fa/201512010XXXXX!hoge.svg のようなファイル名で保存され,ファイル名に!が含まれてしまいうまく変換できない.

解決策は$wgSVGConverterにinkscapeを直接指定してしまえば良いらしい.DefaultだとImageMagick (convert).

[/etc/mediawiki/LocalSettings.php]
$wgFileExtensions[] = 'svg';
$wgAllowTitlesInSVG = true;
$wgSVGConverter = 'inkscape';

ちなみにImageMagickをpurgeしてしまうという手もあるが,これだと日本語がうまく変換できない.なお,手元の imagemagick の version は8:6.8.9.9-5.

Related articles