Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fta(3) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fonttab(5)

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);

関連事項

fonttab(5)

バグ

現在、nm のエントリとして、文字列が "/" で始まった場合の ファイルを参照する処理は行っておりません。
 

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026