雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2006-05-02

[FreeBSD] TrueType fonts without X11

意外に手間がかかったのでメモ。

背景

Webサーバをサンドボックス(SB)上で運用する環境の管理をしているのですが、このWebサーバで、グラフィックを扱うCGIを設置する必要が出てきました。このCGIは、GDというグラフィックライブラリを使っていて、GDは文字を扱うためにfreetypeというTrueTypeフォント用エンジンを使っています。freetype自体は単独でインストール可能だったので問題なかったのですが、エンジンだけでは当然駄目で、フォントもSBにインストールする必要があります。ところが、Portsのフォント類は、実際には必要ないのに、X11ライブラリのインストールを大前提としていて、WITHOUT_X11オプションも効きません。SBに不要なライブラリをインストールするのはディスクの無駄な上、余計なものがSB内に存在するのはセキュリティ上好ましくないので、X11ライブラリをSBに入れるのは避ける方向での解決を図ります。

フォントのインストール

要点を先にまとめると、インストールしたいフォントのportsを展開だけして、フォントファイルをSB内にコピーするというやり方です。例として、Portsに収録されているwebfontとIPAフォントのインストール手順を書きます。

  1. インストール先のディレクトリを作成する
    # mkdir -p /[sandbox]/usr/local/share/fonts/TTF_en
    # mkdir /[sandbox]/usr/local/share/fonts/TTF_ja
  2. webfontを展開して、コピーする
    # cd /usr/ports/x11-fonts/webfonts
    # make extract
    # cp work/webfonts-0.30/*.ttf /[sandbox]/usr/local/share/fonts/TTF_en
    # make clean
    インストールされるフォントはこんな感じ。基本的な書体はこれで一通りそろいます。
    andalemo.ttf    comicbd.ttf     fonts.scale     timesbd.ttf     verdana.ttf
    arial.ttf cour.ttf georgia.ttf timesbi.ttf verdanab.ttf
    arialbd.ttf courbd.ttf georgiab.ttf timesi.ttf verdanai.ttf
    arialbi.ttf courbi.ttf georgiai.ttf trebuc.ttf verdanaz.ttf
    ariali.ttf couri.ttf georgiaz.ttf trebucbd.ttf webdings.ttf
    ariblk.ttf fonts.cache-1 impact.ttf trebucbi.ttf
    comic.ttf fonts.dir times.ttf trebucit.ttf
  3. IPAフォントをコピーする。portsにはjapanese/ipa-ttfontsがありますが、これはdatabases/grass-i18nをベースにフォントの設定を実行するだけのダミー(?)portsのようです。
    # cd /usr/ports/databases/grass-i18n
    # make extract
    # cp work/fonts/*.ttf /[sandbox]/usr/local/share/fonts/TTF_ja/
    # make clean
    インストールされるフォントはこんな感じ。ipag*がゴシック体でipam*が明朝体です。
    ipag.ttf        ipagp.ttf       ipagui.ttf      ipam.ttf        ipamp.ttf
  4. アプリケーションの設定
    設定はアプリケーション毎に違ってくるので、要点だけ。
    • フォントの探索pathに/usr/local/share/fonts/TTF_en(ja)を指定する
    • 書体とフォントファイルの対応付けを行う(ARIAL->arial.ttf, MINCHO->ipam.ttf, など)

余談

一番手間がかかったのは、フォント探しとライセンスの確認だったり。