スクリプト関数一覧

- A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z -

組み込み 手続き の動作は、同じ名前のメニュー項目とほとんど同じです。ここでの説明はしばしば概要しか示されていませんので、より詳しい情報は当該のメニュー項目を調べてください。

構文は以下のように記述しています:

Generate(filename[,bitmaptype[,fmflags[,res[,mult-sfd-file[,namelist-name]]]]])

これは、最初の引数の後は省略可能であることを表します。ただし、4 番目の引数を設定したい場合、2 番目と 3 番目の引数も同時に指定しなければなりません。

A
AddAccent(accent[,pos])
ちょうど 1 個のグリフを選択していなければなりません。そのグリフは最低 1 個の参照を含んでいる必要があります (そして、いちばん最後に追加された参照は基底グリフ――アクセントを置く土台となる文字――でなければなりません) 。最初の引数はアクセントのグリフ名、またはそのアクセントの Unicode のコードポイントです (そのグリフがフォントに存在しなければなりません)。2 番目の引数が存在する場合は、アクセントをどこに置くかを示します……もし省略した場合、アクセントの Unicode 値が使用されます。この引数は以下のフラグの OR を取ったものです。
0x100
0x200
0x400 重ね打ち
0x800
0x1000
0x4000 左中央
0x8000 右中央
0x10000 外側の中心
0x20000 外側
0x40000 左端
0x80000 右端
0x100000 接触する
AddAnchorClass(name,type,script-lang,tag,flags,merge-with)
これらは、エレメント(L)フォント情報(I)メニューの [アンカークラス] ダイアログを反映しています。最初の引数は UTF-8 でエンコードされたアンカークラスの名前です。2 番目は "default", "mk-mk", または "cursive" のいずれかです。3 番目はスクリプト-言語の文字列です:
    grek{dflt} latn{dflt,VIT ,ROM }
4 番目の引数は 4 文字の OpenType 機能タグです。5 番目の引数は OTF フラグ (-1 のときは、FontForge が適切なフラグを推測します) です。 6 番目と最後の引数は、同じ lookup に統合されるもう一つのアンカークラス (このクラスがまだ他のクラスを統合していない場合、空文字列となります) です。
AddAnchorPoint(name,type,x,y[,lig-index])
現在選択中のグリフにアンカーポイントを追加します。最初の引数はアンカークラスの名前です。2 番目は文字列 "mark", "basechar", "baselig", "basemark", "curseentry", "cursexit" または "default" のどれか 1 つを指定します ("default" を指定すると、適切な値の推測を試みます)。その後ろの 2 つの引数は点の位置を指定します。最後の引数は、type が "baselig" のときにのみ使用します。
AddATT(type,script-lang,tag,flags,variant)
AddATT("Position",script-lang,tag,flags,xoff,yoff,h_adv_off,v_adv_off)
AddATT("Pair",script-lang,tag,flags,name,xoff,yoff,h_adv_off,v_adv_off,xoff2,yoff2,h_adv_off2,v_adv_off2)
選択中の 1 個のグリフに対して 1 個のAdvanced Typography 機能を追加します。 最初の引数は Position, Pair, Substitution, AltSubs, MultSubs, Ligature のいずれかです。 2 番目の引数 script-lang は用字系・言語リストで、4 文字のスクリプト名の後ろに、言語名をカンマ区切りで並べたリスト――または特別な値“Nested”――が続きます (言語リストは波括弧 { } で 囲みます)。例:
    grek{dflt} latn{dflt,VIT ,ROM }
3 番目の引数 tag は 4 文字の OpenType 機能タグです。

4 番目の引数 flags は OTF のフラグです (-1 の時は、FontForge が適切なフラグを推測します)。

  • 0x0001 ⇒ 右から左へ
  • 0x0002 ⇒ 基底文字を無視する
  • 0x0004 ⇒ 合字を無視する
  • 0x0008 ⇒ マークを無視する
  • 0x00F0 ⇒ 未定義
  • 0xFF00 ⇒ 未サポート

残りの引数は、最初の引数 (type) によって全く異なります。 type に Position を用いる機能タグを指定した場合、その機能がどのようにこのグリフのメトリックを変形するかを指定する 4 個の整数値を指定します。 type が Pair の場合、次の引数はペア中のもう一つのグリフの名前で、8 個の整数引数が後ろに続きます。最初の 4 個は最初のグリフの位置を指定し、次の 4 個は 2 番目のグリフの位置を変更します。 Substitution 型のタグの場合、5 番目の引数は、現在のグリフを置換する別のグリフの名前です。 AltSubs タグの場合、次の引数は現在のグリフを置き換える候補グリフすべてをスペース区切りで並べたリストです。 MultSubs の場合、次の引数は現在のグリフを置き換える一連のグリフをスペース区切りで並べたリストです。 Ligature の場合、引数は、現在のグリフによって置き換えられる一連のグリフ名をスペース区切りで並べたリストです。

AddExtrema()
グリフ内のスプラインの x 座標または y 座標が途中で極大値または極小値に達した場合、すべての顕著な極大値に点がある状態になるようにスプラインを分割します (もしその点が端点に近すぎる場合、それ自身が移動する可能性があります。注意すべき点は他にもいろいろあります。より詳しい情報は、エレメント(L)極大点の追加(X) を参照してください)。
AddHHint(start,width)
水平ステムヒントを選択中の任意のグリフに追加します。 ヒントは start で指定した位置から始まり、 wide で指定した幅をもちます。 このヒントは選択中のすべてのグリフに追加されます。
AddInstrs(thingamy,replace,instrs)
引数 thingamy は文字列で、"fpgm", "prep" または何らかのグリフ名、もしくは空文字列でなければなりません。"fpgm" または "prep" の場合、それぞれ同名の TrueType テーブルを参照します (必要に応じて作成されます)。特定のグリフを参照するときにはそのグリフのグリフ名を指定します。選択中の任意の文字を使用する場合には、空文字列を指定します。
引数 replace は整数です。値が 0 の場合、既に存在する命令の後ろに instr で指定された命令を付け加えます。値が非 0 の場合、既に存在する命令を消去し、指定された命令に置き換えます。 最後の instr は FontForge の人間可読な形式の TrueType 命令文字列で、例えば "IUP[x]\nIUP[y]" のような形で指定します。
AddVHint(start,width)
垂直ステムヒントを選択中の任意のグリフに追加します。ヒントは start で指定した位置から始まり、 wide で指定した幅をもちます。このヒントは選択中のすべてのグリフに追加されます。
ApplySubstitution(script,lang,tag)
3 個の引数はすべて、4 文字を越えない文字列でなくてはなりません (4 文字より短い文字列は、後ろに空白が追加されます)。このコマンドは、選択中の各グリフに対して、そのグリフの置換リストを検索し、tag で指定されたタグを持つ (それに加え、スクリプトと言語の組合せがその置換に一致する) 置換が見つかった場合に置換を実行します ― すなわち、置換によって指定された異体字グリフを探して現在のグリフをそれで置き換え、異体字グリフを消去します。

FontForge は文字列 "*" をスクリプトや言語の両方で使用できる (ただしタグには使用できません) ワイルドカードとして認識します。 すべての文字を縦書き用の字形に置き換えたい場合は以下のようになります:

SelectAll()
ApplySubstitution("*","*","vrt2")
Array(size)
size で指定した大きさの配列を割り付けます。
a = Array(10)
i = 0;
while ( i<10 )
   a[i] = i++
endloop
a[3] = "string"
a[4] = Array(10)
a[4][0] = "Nested array";

カレントフォントがない状態でも実行することができます。

AskUser(question[,default-answer])
ユーザに question を質問し、答え (文字列) を返します。デフォルトの答えを指定することもできます。
ATan2(val1,val2)
逆正接を返します。より詳しい情報は atan2(3) を参照してください。カレントフォントがない状態でも実行できます。
AutoCounter()
選択中のグリフに対して (PostScript の) カウンタマスクを全自動で作成します。
AutoHint()
選択中のグリフに対してヒントを全自動で作成します。
AutoInstr()
選択中のグリフに対して (TrueType の) 命令を全自動で作成します。これはあまりうまく動きません。
AutoKern(spacing,threshold[,kernfile])
(AutoKern は一般的にはあまりよく動作しません)
選択中のすべてのグリフを調べてカーニングペアを推測します。kernfile を指定した場合、FontForge はファイル kernfile からカーニングペアを読み込みます。
AutoTrace()
potrace か autotrace がインストールされていれば、個の関数を起動するとそれらのどちらかを呼び出し、選択中のグリフの背景画像をトレースして背景に追加します。
AutoWidth(spacing)
選択中のすべてのグリフの幅を推測します。これにより、2 個の隣り合う“I”の字が spacing ユニットだけ離れて配置されます。 (spacing が em サイズ (アセント(“高さ”)とディセント(“深さ”)の和) の反数の場合、デフォルト値を使用します)
B
BitmapsAvail(sizes)
フォントデータベース内に格納されたビットマップフォントのサイズ一覧を制御します。値は各サイズからなる配列で指定します。サイズがフォントデータベース内に存在しない場合、ビットマップが生成されます。フォントデータベースに存在するサイズが指定されなかった場合、削除されます。指定されたサイズが既にフォントデータベース内に存在する場合、そのまま変更されません。
グレイマップフォントを指定したい場合、下位 16 ビットをピクセルサイズとして、上位 16 ビットをピクセルごとのビット数として扱います。例えば 0x8000c は、各ピクセル 8 ビットを持つ 12 ピクセルフォントとなります。ただし、12 ピクセルのビットマップフォントを指定するのには、0xc と 0x1000c のどちらの値でも用いることができます。
BitmapsRegen(sizes)
既に生成されているビットマップフォント内の特定のビットマップを更新することができます。選択中のすべてのグリフに対し、指定された各ピクセルサイズを再生成します。
BuildAccented()
選択中のグリフのどれかがアクセントつきグリフの場合、その内容を消去してから、適切な基底も次とアクセントへの参照を挿入することによって新しいグリフを作成します。
BuildComposite()
BuildAccented と同様ですが、任意の複合グリフ――合字やその他さまざまな――を作成します。
BuildDuplicate()
エンコーディングを変更して、複数の符号位置が同じグリフを参照するようにします。
C
CanonicalContours()
選択中のグリフの輪郭を、最も左の点の x 座標の順に並べ替えます。(これにより、グリフを表現するのに必要な charstrings のサイズが小さくなる可能性があります)
CanonicalStart()
選択中のグリフのすべての輪郭の開始点を、輪郭の左端に位置する点に置き換えます (同じ値の複数の点がある場合、ベースラインに最も近いものを使用します)。これにより、グリフを表現するのに必要な charstrings のサイズが小さくなる可能性があります。正規化を行うことによって、サブルーチンに置くことができるデータが増える可能性があります。
Ceil(real)
real を、それを下回らない最小の整数に変換します。カレントフォントがない状態でも実行できます。
Int, Round, Floor も参照してください。
CenterInWidth()
選択中のすべての文字を幅の中央に揃え、左右のサイドベアリングが等しくなるようにします。
ChangePrivateEntry(key,val)
プライベート辞書内の key をキーにもつ項目の値を val に変更します (key がまだ存在しない場合、追加されます)。(たとえ、値が PostScript の数値を表す場合であっても、すべての値は文字列でなければなりません。)
CharCnt()
カレントフォントに含まれるエンコーディングスロット (またはエンコーディングスロット + 符号化されていない文字) の個数を返します。
CharInfo(str)
GlyphInfo の廃止予定の名前です。
CheckForAnchorClass(name)
カレントフォントが name で指定した名前 (UTF-8 でなければなりません) と同名のアンカークラスを含む場合、1 を返します。
Chr(int)
Chr(array)
[0,255] の範囲にある整数を取り、そのコードポイントを含む 1 文字を返します。内部的には FontForge は文字列を UTF-8 で書かれているものとして (本当を言えば、FontForge は内部ではほとんどの場合単純に ASCII-US を使います) 解釈します。配列を渡す場合、それは整数からなる配列でなければならず、結果は文字列として返されます。カレントフォントがない状態でも実行できます。
CIDChangeSubFont(new-sub-font-name)
カレントフォントが CID フォントである場合、このコマンドはアクティブなサブフォントを指定した物に変更します (引数は、サブフォントの PostScript フォント名を表す文字列です)。
CIDFlatten()
CID フォントを単一化 (すべてのサブフォントを 1 個に統合) します
CIDFlattenByCMap(cmap-filename)
CID フォントを単一化し、指定した CMap ファイルによってエンコードした結果を返します。
CIDSetFontNames(fontname[,family[,fullname[,weight[,copyright-notice]]]])
CID フォント本体に付随する各種の PostScript 名を設定します。 名前が欠けている場合 (または空文字列の場合) 変更されません。 (これは SetFontName と同じ働きをしますが、カレントフォントではなく、 それを含むトップレベルの CID フォントに作用することが異なります)。
Clear
選択中のすべてのグリフを消去します。
ClearBackground
選択中のすべてのグリフの背面を消去します。
ClearCharCounterMasks()
ClearGlyphCounterMasks の廃止予定の名前です。
ClearGlyphCounterMasks()
選択中の (1 個の) グリフから、すべてのカウンターマスクを取り除きます。
ClearHints()
選択中のグリフからすべてのヒントを取り除きます。
ClearInstrs()
選択中のグリフからすべての (TrueType) 命令を削除します。
ClearPrivateEntry(key)
フォントのプライベート辞書から、key をキーにもつ項目を削除します。
ClearTable(tag)
tag で指定した名前をもつテーブルを削除します。テーブル名として指定できるのは、‘fpgm’,‘prep’,‘cvt ’,‘maxp’またはユーザ定義のテーブルの名前です。テーブルが見つかった (そして削除された) ときには 1 を返し、テーブルが存在しない場合には 0 を返します。
Close()
カレントフォントが占有しているメモリを全て解放し、読み込み済みのフォントのリストからカレントフォントを除外します。これを実行した後、カレントフォントは存在しない状態となります。
CompareFonts(other-font-filename,output-filename,flags)
この関数は、カレントフォントを other-font-filename で指定したフォント (あらかじめ開いておく必要があります) と比較します。結果はファイル output-filename に出力されます (出力を標準出力に送りたい場合は "-" が使用できます。flags 引数は、何を比較するかを制御します。
フラグ
1 アウトラインを比較する
2 アウトラインを正確に比較する (指定しない場合、微小なエラーの存在および参照のリンク解除を許容します)
4 アウトラインが正確に一致しない (が、非常に近い) 場合に警告する
8 ヒントを比較する
0x10 ヒントマスクを比較する
0x20 グリフ内のヒントが衝突している場合に限り、ヒントマスクを作成する
0x40 一致を発見するために参照のリンク解除を行う必要がある場合に警告する
0x80 ビットマップの各ストライクを比較する
0x100 フォント名を比較する
0x200 グリフの位置指定を比較する
0x400 グリフ置換を比較する
0x800 アウトラインが異なるすべてのグリフに対し、比較先のフォントのアウトラインを比較元のフォントの背景に追加する
0x1000 あるグリフが比較先のフォントのみに存在し比較元のフォントには存在しない場合、そのグリフを比較元のフォントに作成して、その背景に比較先のグリフのアウトラインを追加する
CompareGlyphs([pt_err[,spline_err[,pixel_off_frac[,bb_err[,compare_hints[,report_diffs_as_errors]]]]]])
この関数は 1 個ないし数個のグリフの 2 つのバージョンを比較します。フォント内の選択された各グリフに着目し、それをクリップボード内の等価なグリフと比較します (クリップボード内のグリフと選択中のグリフとの個数が一致する必要があります)。
  • それぞれのグリフの対の送り幅がが近似的に等しいかどうかをチェックします。
  • それぞれに含まれる参照の集合が同一かどうかをチェックします。
  • すべての点が (端点と制御点ともに) 互いに pt_err 以内の誤差に収まっているかどうかをチェックします。
  • これらのチェックが失敗した場合、輪郭に沿って置かれている点に等価な点が、他のグリフ内に存在するかどうかをより時間をかけてチェックします (すなわち、単純化を施したグリフをそのオリジナルと比較した時に、最初のチェックは失敗するはずですが 2 回目のチェックは通るはずです)。
  • また、オプションを指定することにより、ビットマップが一致するかどうかをチェックすることもできます。 また、オプションを指定することにより、ヒント (およびヒントマスク) が一致するかどうかをチェックすることもできます。

最初の引数では、点が一致しなければならない精度を調節します。値が 0 の場合は点は正確に一致しなければならず、同時にヒントのチェックも行います。負の値を指定した場合には、このテストはスキップされます。

2 番目の引数では、輪郭チェックが一致しなければならない精度を調節します。処理中に丸め誤差が発生するため、値 0 を指定するとこれはうまく動作しないでしょう。負の値を指定した場合には、このテストはスキップされます。

3 番目の引数ではビットマップテストを調節します。負の値 (デフォルト) は、ビットマップテストを行わないことを意味します。値 が 0 の場合、ビットマップは正確に一致する必要があります。0 と 1 の間の値は、不一致が許容されるピクセル値の範囲を指定します (例えば、深さ 8 のグレイマップではピクセル値は 256 諧調なので、小数の値 0.25 を指定した場合には、64 (0.25*256) 以内のピクセル値の違いは一致するものと見なされます)。

4 番目の引数では、アンチエイリアス処理されたビットマップのバウンディングボックスがどれだけ違っていてよいかを調節します (深さ 1 のビットマップのバウンディングボックスは正確に一致しなければなりません)。

5 番目の引数では、ヒントとヒントマスクのテストを行うかを調節します。値 1 を指定するとヒントを、2 を指定するとヒントマスクを、3 を指定すると両方をテストします。7 を指定した場合はグリフのヒントマスクが衝突している場合に限り、ヒントマスクを比較します。

通常はこの関数はどのような相異点もエラーとして扱い、スクリプトを停止させます。もし、6 番目の引数として 0 を指定した場合、以下に示すフラグの論理和を取った値を返します (フラグのうち一部はエラーを表し、いくつかは異状を表し、その他は成功を表します――この関数はエラーと成功フラグの両方を同時に返すことは決してありませんが、複数のグリフを一度に比較したときには複数の成功フラグを返す可能性があります)。
1 グリフ内の輪郭の個数が異なる
2 片方のグリフに含まれる輪郭の一つが開いているが、対応する輪郭は閉じている
4 輪郭の次数不一致 (2 個のグリフの輪郭の次数が異なる)
8 開始点の不一致 (2 個のグリフで、開始点の置かれている位置が異なる)
16 方向の不一致 (片方の輪郭が時計回りでもう片方が反時計回り)
32 点のチェックによりグリフが一致した
64 輪郭のチェックによりグリフが一致した
128 グリフのアウトラインが一致しない
256 2 つのグリフに含まれる参照が異なる (または変換行列が異なる)
512 2 つのグリフの送り幅が異なる
1024 2 つのグリフの縦書き時の送り幅が異なる
2048 2 つのグリフのヒントが異なる
4096 2 つのグリフのヒントマスクが異なる
8192 2 つのグリフのレイヤの個数が異なる
16384 2 つのグリフ間で輪郭が一致しない
32768 参照のリンクを解除しないと一致が発見できない
65536 ビットマップグリフの色深度が異なる
2*65536 ビットマップグリフのバウンディングボックスが異なる
4*65536 ビットマップに違いがある
8*65536 ビットマップグリフが一致しない (上記のどの場合にもセットされます)
16*65536 ビットマップグリフが一致した

ControlAfmLigatureOutput(script,lang,ligature-tag-list)
3 つの引数は全て文字列でなければなりません。最初の 2 個はそれぞれ最大 4 文字を含む文字列、3 個目はカンマで区切られた 4 個以内の文字からなるリストでなければなりません。以下の条件を満たす場合のみ、AFM (TFM/OFM) ファイル内に合字が作成されます。
  • それらのタグがリスト内のどれか 1 項目に一致すること
  • 指定された用字系の指定された言語においてそれらがアクティブであること (用字系・言語のどちらにおいても "*" はワイルドカードとして解釈されます)

標準の設定は以下の通りです:

ControlAfmLigatureOutput("*","dflt","liga,rlig")
ConvertByCMap(cmapfilename)
カレントフォントを指定された CMap ファイルを用いて CID フォントに変換します。cmapfilename は、Adobe CMap File Format に適合するファイルのパス名でなければなりません。
ConvertToCID(registry, ordering, supplement)
引数 registry, ordering および supplement で指定するグリフ集合を用いて カレントフォントを CID フォントに変換します。 registry と ordering は文字列で、supplement は整数でなければなりません。
Copy
選択中のすべてのグリフのコピーを作成します。
CopyFgToBd
選択中のすべてのグリフに対し、前面のスプラインを背面にコピーします。
CopyGlyphFeatures(arg,...)
この手続きは現在選択中の文字 (1 文字だけ) の機能をコピーし、クリップボードに格納します。

arg には文字列か整数値を使用することができ、文字列の場合は 4 文字の OpenType タグ ("kern" など) または Mac の機能設定 ("<1,1>" など) のどちらかを使用することができます。整数の場合、上のいずれかの整数表現でなければなりません。または、arg には文字列か整数からなる配列を指定することもできます。 (この場合、引数はちょうど 1 個でなければなりません)

機能‘kern’は現在選択中のグリフを 2 文字のうち最初の文字として含む全てのカーニングペアにマッチします。(架空の) 機能‘_krn’は、現在選択中の文字を 2 文字のうち最後の文字として含む全てのカーニングペアにマッチします。‘vkrn’と‘_vkn’も同様です。

CopyLBearing
選択中のすべてのグリフの左サイドベアリングをクリップボードに格納します。
CopyRBearing
選択中のすべてのグリフの右サイドベアリングをクリップボードに格納します。
CopyReference
選択中のすべてのグリフへの参照を作成し、それらをクリップボードに格納します。
CopyVWidth
選択中のすべてのグリフの縦方向の送り幅をクリップボードに格納します。
CopyWidth
選択中のすべてのグリフの幅をクリップボードに格納します。
CorrectDirection([unlinkrefs])
引数がある場合、1 個の整数でなくてはなりません。 その値は、CorrectDirection のコードを実行する前に裏返しの参照をリンク解除するかどうかを制御するフラグとして扱われます。 引数が存在しないか、非ゼロの値が指定された時、裏返しの参照はリンク解除されます。
Cos(val)
val の余弦を返します。
Cut
選択中の全てのグリフのコピーを作成し、クリップボードに保存してから選択していたグリフを削除します。
D
DefaultATT(tag)
選択中のすべてのグリフについて、与えられたタグに対して適切だと思われる値を推測します。 タグが "*" である場合、FontForge は可能なすべての機能に対して推測を行います。
DefaultOtherSubrs()
Adobe 版の OtherSubrs サブルーチンを使うように設定を戻します。
DefaultRoundToGrid()
選択中のすべてのグリフを調べます。どの参照も点の照合によって位置指定されていない場合、FontForge はその参照に対し、 TrueType の“ROUND-TO-GRID”フラグをセットします。
DefaultUseMyMetrics()
選択中のすべてのグリフを調べます。参照を含むグリフが存在し、その参照のどれもが“USE-MY-METRICS”ビットを含んでいない場合、もしもそれらの参照のうちのどれかが現在のグリフと幅が同じで、その文字の変換行列が恒等変換行列である場合、その参照にビットをセットします。
DetachAndRemoveGlyphs()
選択中のすべてのエンコーディングスロットのグリフポインタを空にします。さらに、そのグリフが符号化されていない状態になったならばフォントからそのグリフを取り除きます。
DetachGlyphs()
選択中のすべてのエンコーディングスロットのグリフポインタを空にします。この関数はフォントからグリフを取り除きません。指定したエンコーディングスロットからアクセスできなくするだけです。
DontAutoHint()
選択中のすべての文字にフォント保存時に自動ヒントづけしないように印づけを行います。(このフラグは、ユーザが自分でグリフに対して AutoHints を呼び出した時に削除されます)
DrawsSomething([arg])
引数 arg の意味は InFont と同様です。この関数は、グリフにアウトライン、参照または画像が含まれているときに真を返します。
E
Error(str)
str をエラーメッセージとして出力し、現在のスクリプトを中断します。カレントフォントがない状態でも実行できます。
Exp(val)
Returns eval. It can execute with no current font. e の val 乗を返します。カレントフォントがない状態でも実行できます。
ExpandStroke(width)
ExpandStroke(width,line cap, line join)
ExpandStroke(width,line cap, line join,0,removeinternal /external flag)
ExpandStroke(width,calligraphic-angle,height-numerator,height-denom)
ExpandStroke(width,calligraphic-angle,height-numerator,height-denom, 0, remove internal/external flag)
最初のフォーマットでは、線端は "butt", 線の結びは "round" と見なされます。
“remove internal/external”フラグの値が 1 であれば内側の輪郭を除去し、2 であれば外側の輪郭を除去します。 最初の 3 つの呼び出しは PostScript の“stroke”コマンドをシミュレートし、後ろ 2 つはカリグラフィ的なペンをシミュレートします。
Width
PostScript の“stroke”コマンドでは、width は作成される 2 本の線の間の距離です。より正確に言うと、オリジナルの曲線のすべての点に対して、その点における曲線の向きに垂直なベクトルに沿って width/2 ユニットだけ離れた点が追加されます。カリグラフィ的なペンでは、width は、曲線を描くのに使われるペンの太さです。
Line-cap
以下の 3 つのうちいずれかの値です: 0 ⇒ butt, 1 ⇒ round, 2 ⇒ square
Line-join
以下の 3 つのうちいずれかの値です: 0 ⇒ miter, 1 ⇒ round, 2 ⇒ bevel
caligraphic-angle
ペンを保持する (固定の) 角度です。
height-numerator/denominator
これらの 2 つの値は高さと幅のあいだの比率を指定します。
高さ = numerator * width / denominator
(スクリプト言語で扱えるのは整数のみなので、分数が必要なときにはこのような彌縫策を使っています)
remove internal/external contour フラグ
1 ⇒ 内側の輪郭を削除する
2 ⇒ 外側の輪郭を削除する
(両方の輪郭を削除することができます)
4 ⇒ 結果に重複除去を施す (不安定)
Export(format[,bitmap-size])
このコマンドは、カレントフォント内の選択中の各グリフに対し、カレントディレクトリ内のファイルへそのグリフを書き出します。 format は文字列で、以下のどれかでなければなりません。
  • eps ― 選択中のグリフのアウトラインを EPS ファイルに書き出します。ファイル名は“<グリフ名>_<フォント名>.eps”となります。
  • pdf ― 選択中のグリフのアウトラインを PDF ファイルに書き出します。ファイル名は“<グリフ名>_<フォント名>.pdf”となります。
  • svg ― 選択中のグリフのアウトラインを SVG ファイルに書き出します。ファイル名は“<グリフ名>_<フォント名>.svg”となります。
  • fig ― 選択中のグリフのアウトラインを (不十分に) xfig ファイルに書き出します。ファイル名は“<グリフ名>_<フォント名>.fig”となります。
  • xbm ― 2 番目の引数にビットマップフォントのサイズを指定します。ビットマップフォント内の選択中の文字が XBM ファイルに書き出されます。ファイル名は“<グリフ名>_<フォント名>.xbm”となります。
  • bmp ― 2 番目の引数にビットマップフォントのサイズを指定します。ビットマップフォント内の選択中のグリフが BMP ファイルに書き出されます。ファイル名は“<グリフ名>_<フォント名>.bmp”となります。
  • png ― 2 番目の引数にビットマップフォントのサイズを指定します。ビットマップフォント内の選択中のグリフが PNG ファイルに書き出されます。ファイル名は“<グリフ名>_<フォント名>.png”となります。

フォーマットは (上記の) ファイルタイプのみからなるか、または、ファイルタイプを拡張子で指定した (いくつかのフォーマット制御文字列を埋め込み可能な) 完全なファイル名のいずれかとすることが可能です。

"Glyph %n from font %f.svg"
"U+%U.bmp"

フォーマット文字列中の文字は % 以外はそのままコピーされます。% が含まれている場合、次の文字がふるまいを制御します:

  • %n ― グリフ名を挿入します (名前が長い場合、最初の 40 文字のみ)。
  • %f ― フォント名 (または最初の 40 文字) を挿入します。
  • %e ― グリフの符号位置を 10 進数で挿入します。
  • %u ― グリフの Unicode コードポイントを小文字 16 進数で挿入します。
  • %U ― グリフの Unicode コードポイントを大文字 16 進数で挿入します。
  • %% ― 1 個の‘%’を挿入します。
F
FileAccess(filename[,prot])
Unix の access システムコールと同様にふるまいます。ファイルが存在する場合 0 を返し、存在しない場合 -1 を返します。prot が省略された時は、読み込みアクセスをチェックします。カレントフォントがない状態でも実行できます。
FindIntersections()
曲線が交差するすべての箇所を検出し、そこに点を追加します。
FindOrAddCvtIndex(value[,sign-matters])
引数 value で指定した値が cvt テーブル内に含まれるインデックスを返します。テーブル内に value が存在しない場合、それを追加してから、テーブルの末尾要素のインデックスを返します。ほとんどの TrueType 命令は cvt テーブル内の項目の符号を無視しますが、値に意味がある命令がいくつかあります。通常このコマンドは値の絶対値を格納しますが、引数 sign-matters が存在し、0 以外の値の場合、負の値を参照 (または追加) することができます。
Floor(real)
real を、それを超えない最大の整数に変換します。カレントフォントがない状態でも実行できます。 Ceil, Int, Round も参照してください。
FontsInFile(filename)
ファイル内に含まれる全てのフォント名を含む文字列の配列を返します。ほとんどのファイルはフォント 1 個のみを含みますが、物によって (Mac のフォントスーツケース、dfont, TTC ファイル、SVG ファイルなど) は複数のフォントを含むことができます。ファイルにフォントが含まれていない場合 (またはファイルが存在しないか、フォントに名前がついていない場合) 長さ 0 の配列が返されます。これはフォントを開きません。カレントフォントが無くても実行可能です。
G
Generate(filename[,bitmaptype[,fmflags[,res[,mult-sfd-file[,namelist-name]]]]])
フォントを出力します。フォントの形式は filaname で指定した拡張子で決まります。 利用可能な拡張子は以下のとおりです:
  • .pfa
  • .pfb
  • .bin (Mac のバイナリラッパに格納した Mac の postscript (pfb) リソース)
    .res (Mac 上で実行した場合は、FontForge はフォントスーツケースに直接ファイルを書き出し、拡張子は“.bin”ではなく“.res”となります)

    注意: これと同時にビットマップフォントを NFNT フォーマットで出力しなければなりません。これを行わないと出力した PostScript フォントは Mac に認識されません。

  • *%s*.pf[ab] (ここでは単に拡張子だけでない指定が必要となります。フォント名には“%s”が含まれていなければなりません) (1 個の巨大なフォントを、それぞれ 256 文字を含む複数の pfb フォントに分割します。この時、どのようにこれを行うかは 5 番目の引数によって決まります)。“%s”は、複合 SFD ファイル内で割り当てられるフォント番号に置き換えられます。
  • .mm.pfa (ASCII フォーマットのマルチプルマスターフォント)
  • .mm.pfb (バイナリフォーマットのマルチプルマスターフォント)
  • .pt3 (type 3)
  • .ps (type 0)
  • .t42 (Type 42, PostScript ラッパに格納した TrueType)
  • .cid.t42 (Type 42 CID フォント)
  • .cid (非 OTF の CID フォント)
  • .cff (裸の CFF フォント)
  • .cid.cff (CFF フォーマットの CID フォント)
  • .ttf
  • .sym.ttf (Symbol (カスタム) エンコーディングの TrueType ファイル)
  • .ttf.bin (Mac のバイナリラッパに格納した TrueType リソース)
    suit (Mac 上で実行した場合は、FontForge は結果を直接フォントスーツケースファイルに書き出し、拡張子は“.ttf.bin”ではなく“.suit”になります)
  • .dfont (dfont ファイルに含まれた Mac の TrueType リソース)
  • .otf (CID フォントかどうかは、編集中のフォントの形式に依存します)
  • .otf.dfont (dfont ファイルに含まれた Mac の OpenType リソース)
  • .svg (SVG フォント)
  • <拡張子無し> アウトラインフォントを全く書き出したくない場合 (その代り、ビットマップかメトリックファイルの名前だけを指定する) 空の拡張子を指定してください (つまり、"Times." であって "Times" ではありません――出力されるビットマップフォントは、その型に応じて適切な拡張子がつけられます。“.”は単なる飾りです)。

bitmaptype を指定した場合、それは以下のどれかでなければなりません。

  • bdf
  • ttf (TrueType/OpenType フォント内の EBDT/bdat テーブル)
  • sbit (dfont ラッパに包まれたアウトラインフォントを含まない TrueType フォント内の bdat テーブル)
  • bin (MacBinary 内の nfnt リソース)

    注意: Mac OS X は NFNT をサポートしていないようです。 それ自身では使用していないにしろ、リソースベースの PostScript フォントを 使用するには NFNT ビットマップが存在しなければなりません。(より正確に言えば、廃止された FOND が存在する必要があるのは、廃止された NFNT も同時に存在する場合に限られます)。

  • fnt (Windows の FNT フォーマット)
  • otb (X11 の OpenType ビットマップフォーマット)
  • pdb (palm ビットマップフォントのこと)
  • pt3 (PostScript Type3 ビットマップフォント)
  • "" は、ビットマップ無しの指定です。

注意: ビットマップ出力を指定した場合、カレントフォントデータベースに含まれる全てのサイズが出力されますが、このコマンドはビットマップを作成しませんので、フォントデータベースにビットマップが全く含まれない場合、(ビットマップを出力するように指定したとしても) 全く出力されません。ビットマップの出力を行いたい場合、あらかじめ BitmapsAvail スクリプトコマンドか エレメント(L)使用するビットマップ(A) を使ってビットマップを作成する必要があります。

AFM や PFM ファイルを出力するかどうかは、fmflags で制御できます。

  • -1 ⇒ デフォルト (PostScript フォントが用いる AFM ファイルを出力し、 PFM ファイルは出力せず、完全な‘post’テーブルと TTF のヒントを作成します)
  • fmflags&1 ⇒ AFM ファイルを出力する (マルチプルマスターフォントを出力する場合、このフラグをセットすると、いくつかの AFM ファイル (マスターデザインごとに 1 ファイル、フォントのデフォルトバージョンに対してもう 1 ファイル) と amfm ファイルを出力するという意味になります)
  • fmflags&2 ⇒ PFM ファイルを出力する
  • fmflags&4 ⇒ グリフ名の情報を含まない簡素な‘post’テーブルを出力する
  • fmflags&8 ⇒ TTF のインストラクションを含めない
  • fmflags&0x10 ⇒ Apple と MS/Adobe の間で TrueType/OpenType の定義が異なる場合、Apple の定義を用いる (指定しない場合は MS/Adobe の定義)
    現在のところ、これが影響するのは、フォント内に格納されるビットマップのフォーマット (Apple は‘bdat’というテーブルを、MS/Adobe は‘EBDT’というテーブルを用います)、‘name’テーブル内の PostScript 名 (Apple は、1 回しか出現してはならないと指示しているのに対し、MS/Adobe は最低 2 回は出現するように指示しています) および morx/feat/kern/opbd/prop/lcar テーブルと GSUB/GPOS/GDEF テーブルのどちらを作成するかという点です。
  • fmflags&0x20 ⇒‘PfEd’テーブルを作成し、グリフへのコメントを格納します。
  • fmflags&0x40 ⇒ 'PfEd' テーブルを作成し、グリフの色を格納します。
  • fmflags&0x80 ⇒ Apple と MS のプラットフォームの両方で動作するようにテーブルを作成します。
    Apple は Mac OS X 10.4 (トラー) でこれをぶち壊しにしてしまいました。OpenType テーブルがフォント内に存在すると、AAT テーブルは無視されるようになった――とのことです (自分ではテストできません)。残念ながら Apple は OpenType の全機能を実装していないので、ほぼ確実に間違った結果が得られることになるでしょう。
  • OpenType と Apple のテーブルのどちらも必要ない場合 (昔ながらの‘kern’テーブルだけが必要で他は要らない場合)、0x80 と 0x10 の両方をセットしてください。
  • fmflags&0x100 ⇒ グリフマップファイル (GID=>グリフ名, Unicode への対応表) を作成します。このマップファイルの拡張子は“.g2n”になります。 fmflags&0x200 ⇒ TeX のフォントメトリック情報を含む‘TeX’テーブルを出力します。
  • fmflags&0x400 ⇒ (Omega 用の) OFM ファイルを出力します。
  • fmflags&0x800 ⇒ 旧来のカーニングテーブル‘kern’を出力します。OpenType (GPOS/GSUB) テーブルを出力し、Apple のテーブルを出力しない時にのみ意味があります。
  • fmflags&0x10000 ⇒ TFM ファイルを出力します。
  • fmflags&0x40000 ⇒ flex ヒントを格納しません。
  • fmflags&0x80000 ⇒ PostScript のヒントを一切格納しません。
  • fmflags&0x200000 ⇒ PostScript の座標値を整数に丸めます。
  • fmflags&0x400000 ⇒ (マークから基底文字への) 組合せ情報を AFM ファイルに追加します。

res により、生成された BDF フォントの解像度が決まります。 -1 を指定すると、FontForge が各サイズに対して自動的に値を推測します。

filename に“%s”が含まれ、“.pf[ab]”のいずれかの拡張子をもつ場合、“複合 sfd ファイル”が存在するはずです。これは現在のエンコーディングからサブフォントへのマッピングを含むファイルの名前です。一例をここに示します。このファイルが存在しない場合、FontForge はフォントのエンコーディングに対応するファイルを探す標準の探索プロセスを行い、それが失敗した時はフォントは保存されません。

GenerateFamily(filename,bitmaptype,fmflags,array-of-font-filenames)
配列 array-of-font-filenames で名前を指定した各フォント (読み込み済みでなければなりません) から構成される Mac のフォントファミリー (FOND) を生成します。filename, bitmaptype, fmflag は Generate と同じです。
#!/usr/local/bin/fontforge
a = Array($argc-1)
i = 1
j = 0
while ( i < $argc )
# 各フォントを開く
  Open($argv[i], 1)
# 全てのスタイルに対応するファイル名を配列に格納する
  a[j] = $filename
  j++
  i++
endloop

GenerateFamily("All.otf.dfont","dfont",16,a)
GetCvtAt(index)
引数 index で指定した位置にある cvt テーブルの項目値を返します。
GetEnv(str)
名前 str をもつ環境変数の値を返します。カレントフォントがない状態でも実行できます。
GetFontBoundingBox()
4 要素からなる、フォント全体の [x座標の最小値, y座標の最小値, x座標の最大値, y座標の最大値] を含んだ配列を返します。
GetMaxpValue(field-name)
引数 field-name として使用できるのは、SetMaxpValue で使えるタグ文字列と同じです。
GetOS2Value(field-name)
引数に使用可能な値のセットはは上記のタグ文字列と同じです。VendorId は文字列を、Panose は配列を返します。その他の場合整数を返します。
GetPosSub(feature-tag,script,lang)
あらかじめグリフを 1 個だけ選択しておく必要があります。そのグリフに付随する GPOS/GSUB 機能に関する情報を返します (クラスベースのカーニングや文脈依存の機能に関する情報は返しません――フォント全体に適用される情報は何も表示しません――選択中のグリフに関連する物のみです)。引数は 4 文字の文字列 (またはワイルドカードとして用いられる“*”) でなければなりません。この関数は配列の配列を返します (引数にマッチした各機能ごとに配列の 1 項目が割り当てられます)。何もマッチしなければ、長さ 0 の配列が返されます。

それぞれの部分配列には以下の情報が含まれています。

  • 機能タグ (文字列)
  • この機能の用字系/言語文字列
  • タイプ (Position, Pair, Substitution, AltSubs, MultSubs または Ligature のどれかの文字列)

それより後ろの項目はタイプによって異なります。

“Position”の場合
それぞれが GPOS 値レコードの内容を表す 4 個の数値 (dx,dy,d_horizontal_advance,d_vertical_advance)
“Pair”の場合
ペアに含まれるもう片方のグリフの名前を含む 1 個の文字列

それぞれが GPOS 値レコードの内容を表す 8 個の数値 (最初の 4 個は現在のグリフを制御し、その後ろの 4 個の数値は 2 番目のグリフを制御します)

“Substitution”の場合
現在のグリフを置き換えるべきグリフ名を含む 1 個の文字列
その他の場合
各要素に 1 個ずつグリフ名が格納されます。

例:

>Select("ffl")
>Print( GetPosSub("liga","*","*"))
[[liga,latn{dflt} ,Ligature,f,f,l],
[liga,latn{dflt} ,Ligature,ff,l]]
>Select("T")
>Print( GetPosSub("*","*","*"))
[[kern,latn{dflt} ,Pair,u,0,0,-76,0,0,0,0,0],
[kern,latn{dflt} ,Pair,e,0,0,-92,0,0,0,0,0],
[kern,latn{dflt} ,Pair,a,0,0,-92,0,0,0,0,0],
[kern,latn{dflt} ,Pair,o,0,0,-76,0,0,0,0,0]]
>Select("onehalf")
>Print( GetPosSub("frac","latn","dflt"))
[[frac,latn{dflt} ,Ligature,one,slash,two],
[frac,latn{dflt} ,Ligature,one,fraction,two]]
GetPref(str)
名前 str を持つプリファレンスの項目値を取り出します。返すことができる項目の型は、ブール型、整数、実数、文字列およびファイル型のみです。 ブール型と実数型の項目は整数型に変換され、ファイル項目は文字列型に変換されます。 エンコーディング (NewCharset) がマジックナンバーとして返されます。これは get/set Pref の文脈の外では無意味な数値です。
GetPrivateEntry(key)
Private 辞書から key をキーにもつ値を返します。すべての返り値は文字列です。該当する項目が辞書に存在しない場合、空文字列を返します。
GetTeXParam(index)
index == -1 の場合 TeX のフォントタイプが返されます (テキストフォント=0, 数学フォント=1, 数学拡張フォント=2)
それ以外の場合、index はフォントの TeX パラメータ配列のインデックスとして使用されます。
GetTTFName(lang,nameid)
引数 lang および nameid の意味は SetTTFName と同じです。現在の値を UTF-8 で符号化された文字列として返します。値が存在しない引数の組合せに対しては、"" を返します。
GlyphInfo(str)
GlyphInfo("Kern",glyph-spec)
GlyphInfo("VKern",glyph-spec)
GlyphInfo(str,script,lang,tag)
フォント内の 1 個のグリフだけが選択されていなければなりません。そのとき、この関数はそのグリフに関する情報を返します。返される情報は、文字列 str に依存します (意味は見てのとおりです):
  • “Name”はグリフの名前を返します。
  • “Unicode”はグリフの Unicode エンコーディング値を返します。
  • “Encoding”はグリフのカレントフォント内の符号位置を返します。
  • “Width”はグリフの幅を返します。
  • "VWidth" はグリフの全高 (縦書き時の送り幅) を返します。
  • “TeXHeight”は tex_height フィールドを返します (値 0x7fff は、デフォルト値が使用されることを表します)。
  • “TeXDepth”は tex_depth フィールドを返します (値 0x7fff は、デフォルト値が使用されることを表します)。
  • “TeXSubPos”は tex_sub_pos フィールドを返します (値 0x7fff は、デフォルト値が使用されることを表します)。
  • “TeXSuperPos”は tex_super_pos フィールドを返します (値 0x7fff は、デフォルト値が使用されることを表します)。
  • “LBearing”はグリフの左サイドベアリングを返します。
  • “RBearing”はグリフの右サイドベアリングを返します。
  • “BBox”はグリフアウトラインの [xの最小値, yの最小値, xの最大値, yの最大値] を含む 4 要素の配列を返します。
  • “Kern”(この場合、もう一つのグリフを 2 番目の引数として Select() と同じ方法で指定しなければなりません) は、2 個のグリフの間のカーニングオフセット (存在しない場合は 0) を返します。
  • “VKern”(この場合、もう一つのグリフを 2 番目の引数として Select() と同じ方法で指定しなければなりません) は、2 個のグリフの間の縦書き用カーニングオフセット (存在しない場合は 0) を返します。
  • “Xextrema”(垂直方向の位置を指定する 2 番目の引数が存在しなければなりません) は、指定した垂直方向の位置における、グリフの輪郭の水平方向の最小値と最大値の 2 要素を含む配列を返します。指定した位置がグリフのバウンディングボックスの外側にあるときは、最小値が 1・最大値が 0 (つまり、最大値<最小値 という現実にありえない結果) となります。
  • “Xextrema”(水平方向の位置を指定する 2 番目の引数が存在しなければなりません) は、指定した水平方向の位置における、グリフの輪郭の垂直方向の最小値と最大値の 2 要素を含む配列を返します。指定した位置がグリフのバウンディングボックスの外側にあるときは、最小値が 1・最大値が 0 (つまり、最大値<最小値 という現実にありえない結果) となります。
  • “Color”はグリフの色を 24 ビット RGB 値 (そのグリフに色が設定されていない場合は -2) で返します。
  • “Comment”はグリフに設定されたコメントを返します (Unicode からデフォルトエンコーディングに変換されます)。
  • “Changed”は、最後に保存または読み込みを行った後でグリフが変更されたかどうかを返します。
  • “DontAutoHint”は、"Don't AutoHint" フラグの状態を返します。
  • “Position”は 3 個の追加の引数 script, language と tag (これらはすべて 4 文字からなる文字列です) をとり、そのグリフに tag で指定されたタグをもつ位置変更が存在するかどうかを返します。
  • “Pair”は 3 個の追加の引数 script, language と tag (これらはすべて 4 文字からなる文字列です) をとり、そのグリフに、tag で指定されたタグをもつペア単位の位置変更が存在するかどうかを返します。
  • “Substitution”は 3 個の追加の引数 script, language と tag (これらはすべて 4 文字からなる文字列です) をとり、選択中の文字の単純置換文字で tag で指定されたタグをもつものの名前を返します (存在しない場合は空文字列を返します)。
  • “AltSubs”は 3 個の追加の引数 script, language と tag (これらはすべて 4 文字からなる文字列です) をとり、選択中のグリフの tag で指定されたタグをもつ選択型置換文字の名前を空白で区切って列挙したリストとして返します (存在しない場合は空文字列を返します)。
  • “MultSubs”は 3 個の追加の引数 script, language と tag (これらはすべて 4 文字からなる文字列です) をとり、選択中のグリフを tag で指定されたタグで分解した時の文字の名前を順番に並べた空白区切りのリストとして返します (存在しない場合は空文字列を返します)。
  • “Ligature”は 3 個の追加の引数 script, language と tag (これらはすべて 4 文字からなる文字列です) をとり、選択中のグリフの全構成要素を順番に並べた空白区切りリストとして返します (存在しない場合は空文字列を返します)。
  • “GlyphIndex”は、TrueType フォントの 'glyf' 内で選択中のグリフが位置するインデックスを返します。グリフが後から作成された場合は -1 を返します。 この値は、TrueType/OpenType フォントが生成された時には (生成されたフォント内のインデックスに) 変更される可能性があります。
  • "PointCount" はグリフ内の点の個数を返します (モードが異なるとこの個数は異なる意味合いをもちます)。
  • “LayerCount”はグリフに含まれるレイヤの個数を返します。マルチレイヤフォント以外では、この値は常に (前面と背面で) 2 が返されます。
  • “RefCount”はグリフ内の参照の個数を返します。
  • “RefNames”は、参照している全グリフの名前を含む 1 個の配列を返します。この配列の要素数が 0 であることもあります。この配列には同一のグリフを 2 回含むことがあります ("colon" はピリオドを 2 回参照するでしょう)。
  • “RefTransform”は配列の配列を返します。いちばん下の配列は、それぞれ対応するグリフに適用される 6 要素の (実数値) 変換行列です。

例:

Select("A")
lbearing = GlyphInfo("LBearing")
kern = GlyphInfo("Kern","O")
Select(0u410)
SetLBearing(lbearing)
SetKern(0u41e,kern)
Select("a")
verta = GlyphInfo("Substitution","*","dflt","vrt2")
H
HasPreservedTable(tag)
保存されたテーブルに名前が tag であるテーブルがあれば真を返します。
HasPrivateEntry(key)
Private 辞書に key で指定した名前のキーが存在するかどうかを返します。
HFlip([about-x])
選択中のすべてのグリフを、垂直線 x=about-x を中心にして、水平方向に反転します。引数を指定しない場合、選択中の各グリフを、その中心軸の周りで反転します。
I
Import(filename[,toback[,flags]])
ビットマップフォントをデータベースに取り込むか、背面の画像をさまざまなグリフに取り込みます。1 個か 2 個の引数を指定することができます。最初は、ファイル名を指定する文字列 filename でなければなりません。ファイルの拡張子によって、取り込みがどのように進行するかが定まります。
  • 拡張子が“.bdf”の場合、BDF フォントを取り込みます。
  • 拡張子が“.pcf”の場合、PCF フォントを取り込みます。
  • 拡張子が“.ttf”の場合、TTF ファイルの EBDT または bdat テーブルからビットマップフォントを検索します。
  • 拡張子が“.pk”の場合、METAFONT から作成された pk (ビットマップフォント) ファイルが取り込まれます。デフォルトでは背面に配置されます。
  • これら以外で、拡張子が画像ファイルに相当する場合、読み込まれた画像が背面に配置されます。
    • filename に“*”が含まれている場合、その文字列はファイル名のテンプレートであると認識され、それにマッチした全てのファイルが適切に読み込まれ、背面に配置されるでしょう。
    • その他の場合、複数のファイル名を (セミコロンで区切って) 指定することができます。最初のファイルは選択中の最初のグリフの背面に、2 番目は選択中の 2 番目のグリフの背面に…と配置されます。
  • 拡張子が“.eps”ならば、EPS ファイルが前面にマージされます。ファイルは画像として指定することができます (ファイル名に画像ファイルの拡張子でなく“.eps”がついている点だけが異なります)。 FontForge の EPS ファイル読み込み能力は、非常に制限されています。
  • 拡張子が“.svg”ならば SVG ファイルが前面に読み込まれます。

2 番目の引数が存在する時は、整数でなければならず、最初の引数がビットマップならば 2 番目の引数によって、ビットマップリストに追加するか (0) グリフの背面を埋めるか (1) が定まります。EPS および SVG ファイルでは、スプラインが前面に追加されるか、グリフの背面レイヤに追加するかがこの引数によって決まります。

3 番目の引数が存在する場合、これも整数でならなければならず、EPS (および、ある場合には SVG についても) の取り込みのふるまいを制御するフラグの集まりとして扱われます。

  • 16 ⇒ 現在存在するデータを全て削除する (SVG・EPS の両方で有効)
  • 8 ⇒ パスの向きを修正する
  • 4 ⇒ TeX の消しゴム (白ペンによるストローク) を適用しようと試みる
  • 2 ⇒ パスの重複を除去する
InFont(arg)
フォント内にグリフ arg が存在するかどうかを返します。引数が整数の場合、値が >= 0 かつ < フォント内のグリフの総数である場合に真を返します。それ以外の場合、引数は Unicode のコードポイントか PostScript 文字名であると解釈され、そのグリフがフォント内に存在する時に真を返します。
Inline(width,gap)
Outline と同じ方法でアウトラインを生成してから、アウトラインの内側に一致するようにアウトラインを縮小します。言い替えれば、インライン化したグリフを生成します。
Int(real)
標準 C の型変換を使用して実数から整数への変換を行います。カレントフォントがない状態でも実行できます。
Ceil, Round, Floor も参照してください。
InterpolateFonts(percentage,other-font-name[,flags])
カレントフォントと、other-font-name で指定された名前のフォントとの間で比率 percentage でフォントを補間します (注意: percentage は負の値や 100 を超える値を使用することができ、その場合はフォントを補外します)。このコマンドはカレントフォントを新しく作られたフォントに変更します。 注意: この新しいフォントのフォント名を設定する必要があるでしょう。 flag 引数の意味は Open と同じです。
IsFinite(real)
値が有限値である (無限大/小でも NaN でもない) かどうかを返します。カレントフォントがない状態でも実行できます。
IsNan(real)
値が NaN であるかどうかを返します。カレントフォントがない状態でも実行できます。
J
Join([fudge])
選択中のグリフ内の開いたパスを (重なり合った点の所で) 結合します。fudge が指定されている場合は、結合する点同士の距離が fudge ユニットより近ければ、一致しなくても重なっていると見なします。
K
L
LoadEncodingFile(filename)
エンコーディングファイルを読み込み、FontForge で使用可能なエンコーディングのリストに追加します。より詳しい情報は、エンコーディング(N)エンコーディングを読み込み(L)...を参照してください。
LoadNamelist(filename)
指定したファイルに格納されている名前リストを読み込みます。カレントフォントがない状態でも実行できます。
LoadNamelistDir([directory-name])
指定されたディレクトリから FontForge の名前リストらしき物を探して読み込みます。ディレクトリ名を省略した場合、デフォルトのディレクトリから読み込みます。カレントフォントがない状態でも実行できます。
LoadPlugin(filename)
指定されたファイル (これは共有ライブラリでなければなりません) に格納されている FontForge プラグインを読み込みます。カレントフォントがない状態でも実行できます。
LoadPluginDir([directory-name])
指定したディレクトリから FontForge のプラグインらしき物を探して読み込みます。ディレクトリ名を省略した場合、以下の 2 つのデフォルトのディレクトリから読み込みます:
  • /usr/local/share/fontforge/plugins
  • ~/.PfaEdit/plugins

カレントフォントがない状態でも実行することができます。

LoadPluginDir([directory-name])
  • ~/.PfaEdit/
から読み込みます。
LoadPrefs()
ユーザのプリファレンスを読み込みます。これはかつてはスクリプトの開始時に自動的に行われていましたが、現在自動的に実行されるのは UI から起動されたときだけで、スクリプトではこの手続きを実行しなければなりません。カレントフォントがない状態でも実行できます。
LoadStringFromFile("filename")
ファイル全体を文字列に読み込みます。ファイルが存在しないか空である場合は空文字列を返します。返り値の文字列はファイル全体を保持するのに十分なバイト数に加えて末尾の NUL バイトを含むのに十分なバイト数が割り当てられます。もしファイルに NUL 文字そのものが含まれていた場合、FontForge はそこが文字列の終端であると判断します。
LoadTableFromFile(tag,filename)
どちらの引数も文字列でなければならず、最初の引数は 4 文字のテーブルタグでなければなりません。ファイルを読み込み、フォント内に tag で指定された名前のテーブルとして保存されます。ff が知っているテーブル名を tag に指定しないでください!
Log(val)
val の自然対数を返します。カレントフォントがない状態でも実行できます。
M
MergeFonts(other-font-name[,flags])
other-font-name で指定したフォントをロードし、そのフォントに含まれているグリフでカレントフォントに含まれていないグリフをすべて取り出してカレントフォントに移動します。flags 引数の解釈は Open 関数と同じです。現在意味のあるフラグは、フォントを開くライセンスを持っていることを示す fstype=2 のみです。
MergeKern(filename)
カーニング情報を AFM ファイルまたは TFM ファイルから読み出し、カレントフォントにマージします。
MMAxisBounds(axis)
axis は、マルチプルマスターフォントに含まれる軸の数よりも少ない整数です。下限値、デフォルト値と上限値を含む配列を返します。それぞれの値は 65536 倍されていることにご注意ください (それらは Mac では整数値でなくてはならず、FontForge は実数値をサポートしていないからです)。

デフォルト値は、GX の Var という概念に相当します。FontForge は本物のマルチプルマスターフォントに対しては妥当な値をシミュレートします。

MMAxisNames()
マルチプルマスターセットに含まれるすべての軸の名前を含む配列を返します。
MMBlendToNewFont(weights)
weights は整数からなる配列で、1 軸に対し整数 1 個が対応します。それぞれの値は必要な値の 65536 倍でなければなりません (一般に小さな実数となる Mac のブレンドを扱うためです)。このコマンドはマルチプルマスターフォントをブレンドすることによって全く新規にフォントを作成し、新しいフォントをカレントフォントに設定します。
MMChangeInstance(instance)
ここで instance はフォント名か小さな整数のどちらかです。 文字列を渡した場合、FontForge はマルチプルマスターフォントセットから すべてのフォント (インスタンスフォントと重みづけされたフォント) を検索し、 カレントフォントの名前を指定された物に変更します。 小さな整数を渡したときは、-1 が重みづけされたフォントを表し、 [0,$mmcount) の範囲の値はフォントセット内の特定のインスタンスを表します。
MMChangeWeight(weights)
weights は整数からなる配列で、1 軸に対し整数 1 個が対応します。それぞれの値は必要な値の 65536 倍でなければなりません (一般に小さな実数となる Mac のブレンドを扱うためです)。このコマンドは現在のマルチプルマスターフォントのデフォルトウェイトを異なる値に変更し、それを現在のインスタンスに設定します。
MMInstanceNames()
マルチプルマスターセットに含まれるすべてのインスタンスフォントの名前を含む 配列を返します。
MMWeightedName()
マルチプルマスターセットに含まれる重みづけされたフォントの名前を返します。
Move(delta-x,delta-y)
選択中のすべてのグリフに含まれる点を、指定した量だけ移動します。
MoveReference(delta-x,delta-y,[refname/ref-unicode]+)
参照は、参照されるグリフの名前を含む文字列か、参照されるグリフの Unicode 符号位置を含む整数によって指定できます。(1 個以上の) 任意の個数の参照される参照を指定することができます。選択された各文字に対して、引数で指定した名前または Unicode 値にマッチする参照を検索します。見つかったすべての参照は指定したオフセットだけ移動されます。
MoveReference(300,0,"acute",0xb4)

はすべての acute または grave への参照を、現在位置から 300 em ユニットだけ右に移動します。

MultipleEncodingsToReferences()
選択中のグリフの中に複数のエンコーディングをもつ物がある場合、それらのエンコーディングのうちから 1 個を本物として選出します。その以外に対してはそれぞれに 1 個ずつ、元のグリフへの参照を含む新しいグリフを作成します。これは、SameGlyphAs の操作に対するアンドゥの一種とも言えます。

高度組版機能などのメタデータはコピーされません。

N
NearlyHvCps([error[,err-denom]])
水平か垂直に非常に近いものの、完全には一致しない位置に制御点があるかどうかをチェックします (これは、(例えば) abs( (control point).x - point.x ) < error であることとほとんど同義です。) ここで error は以下のいずれかです;
0.1 引数を指定していない場合
最初の引数 引数を 1 個だけ指定した場合
(最初の引数) / (2 番目の引数) 引数を 2 個指定している場合
NearlyHvLines([error[,err-denom]])
水平線か垂直線に非常に近いものの、完全には一致しない線があるかどうかをチェックします (これは、(例えば) abs( (end point).x - (start point).x ) < error であることとほとんど同義です。) ここで error は以下のいずれかです;
0.1 引数を指定していない場合
最初の引数 引数を 1 個だけ指定した場合
(最初の引数) / (2 番目の引数) 引数を 2 個指定している場合
NearlyLines(error)
ほとんど直線に近いスプラインを検出し、直線に変換します。スプラインをほとんど直線に近いと判定するのは、端点同士を結ぶ線分との乖離が error よりも小さい場合です。
New()
新しいフォントを作成します。これはカレントフォントがない状態でも実行できます。
NonLinearTransform(x-expression,y-expression)
x と y に対する正しい式を含む 2 個の文字列引数をとり、それらの式を用いて選択中のすべてのグリフを変換します。
<e0> := "x" | "y" | "-" <e0> | "!" <e0> | "(" <expr> ")" |
	"sin" "(" <expr> ")" | "cos" "(" <expr> ")" | "tan" "(" <expr> ")" | 
	"log" "(" <expr> ")" | "exp" "(" <expr> ")" | "sqrt" "(" <expr> ")" |
	"abs" "(" <expr> ")" | 
	"rint" "(" <expr> ")" | "float" "(" <expr> ")" | "ceil" "(" <expr> ")"
<e1> := <e0> "^" <e1>
<e2> := <e1> "*" <e2> | <e1> "/" <e2> | <e1> "%" <e2> 
<e3> := <e2> "+" <e3> | <e2> "-" <e3>
<e4> := <e3> "==" <e4> | <e3> "!=" <e4> |
	<e3> ">=" <e4> | <e3> ">" <e4> |
	<e3> "<=" <e4> | <e3> "<" <e4> 
<e5> := <e4> "&&" <e5> | <e4> "||" <e5>
<expr> := <e5> "?" <expr> ":"

NonLinearTrans("200+(x-200)*abs(y-300)/300","y")

このコマンドはデフォルトのビルドでは使用できません。configure-fontforge.h を変更して、FontForge を再構築してください。

O
Open(filename[,flags])
この手続きは、名前 filename をもつフォントをカレントフォントにします。 filename がまだメモリに読み込まれていないならば、この時読み込まれます。 カレントフォントが無い状態でも実行することができます。

TTC ファイル (Mac のフォントスーツケース、.dfont, SVG など) から読み込む時は、フォント名を括弧で囲んで、ファイル名の後ろに付け加えて Open("gulim.ttc(Dotum)") のように指定すれば、 特定のフォントを選択することができます。
現時点で存在する省略可能なフラグ引数は、以下の 1 個のフラグのみを含みます:

  • 1 ⇒ ユーザは fstype の設定に無関係に、フォントを操作することができる合法なライセンスを持っている
Ord(string[,pos])
文字列内に含まれる各文字のエンコーディングを表す整数の配列を返します。pos を指定する場合は、string の長さより小さい整数でなくてはならず、関数は文字列 string 内の位置 pos にある文字の文字コードを整数で返します。
Outline(width)
選択中のすべてのグリフを指定された幅で (グリフの内側で) 縁どりします。グリフのバウンディングボックスは変更されません。言い替えれば、Mac でいう“Outline Style”を生成します。