FontForge は、機能を拡張するためにプラグインの機構を提供しています。
プラグインは実行時に読み込むことができる共有ライブラリの形式です。FontForge の起動時 (正確には、環境設定の読み込み時)、以下の 2 つのディレクトリに含まれる、共有ライブラリと思われるファイルをすべて読み込みます。
/usr/local/share/fontforge/plugins
$(PREFIX)/share/fontforge/plugins
)
~/.PfaEdit/plugins
現在、バイナリパッケージにはプラグインは含まれていません。プラグインで遊びたい方は ソース配布を入手して構築し、インストールする必要があります。それを行うには、以下のように入力してください:
$ cd plugins $ make install
現在 FontForge は以下の 2 つのタイプのプラグインをサポートしています:
(実際には 3 番目のタイプのプラグインが存在すると思います。プラグインを呼び出した時、FF は初期化ルーチンを呼び出します。プラグインが実行を続け、FontForge に戻りもせずに仕事を行ってしまうことは可能だと思います)。
追加予定にある物は以下のとおりです:
(しかし私はまだやっていません)。
FontForge は、プラグインの読み込み時にルーチン int FontForgeInit(void)
を呼び出します。このルーチンは責任を持って FontForge のプラグインを登録し、それから FontForge の実行を続けるために呼び出し元に帰ります。FontForge は 2 つの登録ルーチンを提供します。
AddEncoding(char *name,int (*enc_to_uni)(int), int
(*uni_to_enc)(int))
この関数は失敗したとき (例えば、組込みの符号化方式を書き換えようとした場合) 0 を返し、指定された符号化方式を追加したときには 1 を、前に呼び出されたプラグインが登録した同名の符号化方式を書き換えたときには 2 を返します。
AddScriptingCommand(char *name, void (*UserScriptFunc)(Context *),
int needs_font)
この関数は失敗したとき (例えば、組込みのスクリプト関数を再定義しようとした場合) 0 を返し、指定されたコマンドを追加したときには 1 を、前に呼び出されたプラグインが登録した同名のコマンドを書き換えたときには 2 を返します。
FontForgeInit
の中で 2 個以上の物を登録することができます。例えば、多くの符号化方式は EUC 形と ISO-2022 形をもっているので、1 個のプラグインが両方を取り扱うことには意味があります。
FontForgeInit
は成功時には 1 を返し、失敗時には 0 を返します。失敗した場合には、FontForge は dlclose() を呼び出してライブラリを削除します。
プラグインを書く時には、fontforge ディレクトリにある“plugins.h”を呼び出すべきです。
どのようにしてプラグインを作成し、ビルドしてインストールするかについては、plugins サブディレクトリの例を参照してください。