FTA(3) — NEWS-OS Programmer’s Manual
名称
fta − フォントテーブルアクセス用ライブラリ
形式
#include<stdio.h>
#include<CDFF/fta.h>
s_fonttab ∗load_fonttab()
s_fonttab ∗get_fonttabbyname(tp, s)
s_fonttab ∗tp;
char ∗s;
free_fonttab(tp)
s_fonttab ∗tp;
s_dfpath ∗get_dfontpath(dp)
char ∗dp;
free_dfontpath(dfp)
s_dfpath ∗dfp;
解説
ここに記す一連の関数は、 フォントテーブルアクセス用ライブラリ libfta.a に用意されているものです。
マルチフォントセット (NWF-629〜) の供給にともない、 供給されるアウトラインフォントの書体の数が増えました。 フォントを扱うプログラムはこれらのフォントのうち、どの書体が インストールされているかをフォント情報テーブル /usr/sony/etc/fonttab をアクセスするすることにより知ることができます。 このフォント情報テーブルに記述された情報を 簡単に読込むためのライブラリが、この libfta.a です。
各関数の説明の前に、 s_fonttab という構造体について説明します。 この構造体は以下のような構造をしています。
typedefstruct chain {
char∗name;/∗ font entry name ∗/
struct chain ∗next;/∗ next entry name ∗/
} s_chain;
typedefstruct ftb {
s_chain ∗entry;/∗ font entry name ∗/
s_existtc;/∗ typeface code ∗/
s_existdg;/∗ design group ∗/
s_existaf;/∗ alternative font ∗/
s_existvs;/∗ vector font coding scheme ∗/
s_existds;/∗ dot font coding scheme ∗/
s_existth;/∗ roff thickness ∗/
s_existol;/∗ roff outline ∗/
s_chain∗rn;/∗ roff font ∗/
char∗cc;/∗ code category ∗/
char∗nm;/∗ name used for application ∗/
char∗vp;/∗ vector font path ∗/
char∗dp;/∗ dot font path ∗/
struct ftb ∗next;/∗ next font entry ∗/
}s_fonttab;
typedefstructdfp {
char∗path;/∗ dot font path ∗/
intw;/∗ width pixel ∗/
inth;/∗ height pixel ∗/
struct dfp ∗next;
}s_dfpath;
1 エントリが 1 フォントファイルに対応しています。 また、この構造体はリンクリストを構成するようになっています。 各メンバの意味については、 fonttab(5) を参照して下さい。 以下に各関数についての説明をします。
s_fonttab ∗load_fonttab()
フォントテーブルをオープンし、その全内容を s_fonttab の リンクリストの形で確保したメモリ上に読み込みます。読込み に成功すれば先頭の s_fonttab エントリへのポインタを返し、 失敗すれば 0 を返します。
s_fonttab ∗get_fonttabbyname(tp, s)
s_fonttab ∗tp;
char ∗s;
ditroff で使用される書体 ID (R、HIなど) を受け取り、該当する s_fonttab エントリへのポインタを返します。エントリ名 s が 見つからなければ 0 を返します。 パラメータの tp は load_fonttab() で得られた値を使います。
free_fonttab(tp)
s_fonttab ∗tp;
load_fonttab() で確保したメモリを解放します。 パラメータの tp は load_fonttab() で得られた値を使います。
s_dfpath ∗get_dfontpath(dp)
char ∗dp;
load_fonttab() で得られた s_fonttab のメンバ ’dp’ をもとに 実際にどのサイズのドットフォントがあるかを調べ、s_dfpath の 構造体のリンクリストとして返します。
free_dfontpath(dfp)
s_dfpath ∗dfp;
get_dfontpath() で確保したメモリを開放します。 パラメータの dfp は get_dfontpath() で得られた値を使います。
使用法
名前とコードだけを読み取る、簡単なプログラム例を以下に記します。
s_fonttab ∗tp0, ∗tp;
int n;
if((tp0= (s_fonttab ∗)load_fonttab()) == 0)
/∗ ERROR ∗/;
for(tp=tp0, n=0; tp; tp=tp->next, n++) {
strcpy( name[n], tp->nm );
code[n]= tp->tc.value;
}
:
free_fonttab(tp0);
関連事項
バグ
現在、nm のエントリとして、文字列が "/" で始まった場合の ファイルを参照する処理は行っておりません。
NEWS-OSRelease 4.2.1R