【CentOS】SVGをWOFFなどのWebフォントへ変換するfontcustomをインストール

CentOS7の環境でfontcustomをインストールしたときの覚書。
ちなみにIcoMoonを利用すれば無料で簡単に生成できる。

Bootstrap IconsのsvgがIcoMoonだと潰れてしまうのでCentOS7上でビルドしてみた。
(おそらくfontforgeが内部で使っているfreetypeかlibxml2のバージョンが原因だと思う)

環境: CentOS 7.8, ruby 2.0.0 → 2.6.6, fontforge 20120731

公式サイトは古いのでGitHubを参考に
fontcustomが利用するライブラリをインストールおよびビルド。
# cd /opt/software/
# dnf install fontforge
# git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli && cd sfnt2woff-zopfli && make && mv sfnt2woff-zopfli /usr/local/bin/sfnt2woff
# git clone --recursive https://github.com/google/woff2.git && cd woff2 && make clean all && sudo mv woff2_compress /usr/local/bin/ && sudo mv woff2_decompress /usr/local/bin/

Rubyのパッケージ管理システムgemでfontcustomをインストール。
# gem install fontcustom
ERROR:  Error installing fontcustom:
        ERROR: Failed to build gem native extension.

    /usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h

Gem files will remain installed in /usr/local/share/gems/gems/ffi-1.12.2 for inspection.
Results logged to /usr/local/share/gems/gems/ffi-1.12.2/ext/ffi_c/gem_make.out
gemのバージョンが古いから?

このときのRubyのバージョンが2.0.0(YUM経由でインストール)なので、Rubyの最新をインストールする。
これは別記事で(参考:CentOS7の環境にRuby2.6をインストール)。

Ruby 2.6.6にした後に再度実行
$ gem install fontcustom

無事インストール完了。
確認
$ fontcustom --version
fontcustom-2.0.0

適当なsvgファイルで変換実行
$ fontcustom compile svg/ --name=icons --output=icons
エラー
       error  `fontforge` compilation failed. Try again with --debug for more details.

デバッグを有効にして実行
$ fontcustom compile svg/ --name=icons --output=icons --debug

下記issueをヒントに修正する。

$ less ~/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fontcustom-2.0.0/lib/fontcustom/scripts/generate.py
    #tmpsvgfile.file.write(svgtext.encode('utf-8'))
    tmpsvgfile.file.write(svgtext.decode('utf-8').encode('utf-8'))

変換実行
$ fontcustom compile svg/ --name=icons --output=icons --debug
「色  の構文解析に失敗しました」と出るけど無事出力された。

Bootstrap Iconsもきれいにwoffへ変換できた。

【関連記事】

コメント

このブログの人気の投稿

【.NET】DataGridViewを選択した際に背景色を変更しない

Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

既存のディレクトリ(フォルダ)にgit cloneして上書きしたい