# スクリプト関数一覧

- 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 の名前リストらしき物を探して読み込みます。ディレクトリ名を省略した場合、デフォルトのディレクトリから読み込みます。カレントフォントがない状態でも実行できます。
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”を生成します。
OverlapIntersect()
  交差部以外のすべてを除去します。

P

Paste Into
  クリップボードの内容を、カレントフォントの選択中のグリフにコピーします (今まであった内容に追加されます)
Paste
  クリップボードの内容を、カレントフォントの選択中のグリフにコピーします (そこに今まであった内容は削除されます)。
PasteWithOffset(xoff,yoff)
  PasteInto() を行う前に、クリップボードの中身を (xoff, yoff) だけ平行移動します。アクセントつきグリフを構築するのに使用できます。
PositionReference(x,y,[refname/ref-unicode]+)
  参照は、参照されるグリフの名前を含む文字列か、参照されるグリフの Unicode 符号位置を含む整数によって指定できます。(1 個以上の) 任意の個数の参照される参照を指定することができます。選択された各文字に対して、引数で指定した名前または Unicode 値にマッチする参照を検索します。見つかったすべての参照は指定した位置に変更されます。

  >     PositionReference(0,0,"circumflex")

  > はすべての circumflex への参照を基底文字 circumflex の位置に移動します。

PostNotice(str)
  UI から実行した時は、文字列を表示するウィンドウを開きます (ウィンドウはプログラムを停止せず、1 分ほど経過すると消滅します)。コマンドラインから起動した時は、文字列を標準エラー出力に書き出します。カレントフォントがない状態でも実行できます。
Pow(val1,val2)
  val1 の val2 乗を返します。カレントフォントがない状態でも実行できます。
PreloadCidmap(filename,registry,ordering,supplement)
  指定した ROS の組合せに対するユーザ定義の cidmap ファイルを読み込みます。最後の引数以外は文字列で、supplement は整数でなければなりません。これはフォントが読み込まれていなくても実行することができます。
Print(arg1,arg2,arg3,...)
  メニュー項目には対応する項目はありません。与えられた全ての引数を標準出力へ印字します。カレントフォントがない状態でも実行できます。
PrintFont(type[,pointsize[,sample-text/filename[,output-file]]])
  カレントフォントを PrintSetup の設定に従って印刷します。type の値は以下のとおりです (意味は印刷に関するセクションの記述のとおりです):
  - 0 ⇒ pointsize で指定された大きさでフォント全体を印刷します。
  - 1 ⇒ 選択中のグリフの一覧をページに収まるように印刷します。
  - 2 ⇒ 選択中のグリフを、複数のポイントサイズで印刷します。
  - 3 ⇒ ファイルから読み込んだサンプルテキストを pointsize で指定された大きさで印刷します。
  - 4 ⇒ テキストサンプルを印字します。3 番目の引数をファイル名ではなく、(UTF-8 で符号化された) サンプルそのものを表すものとして扱います。

  pointsize は 1 個の整数か、整数からなる配列 1 個のいずれかです。この値の指定は type が 0, 3 または 4 の時のみに意味を持ちます。省略時または 0 を指定した時はデフォルト値が使用されます。フォント表示の時は、値を 1 個しか参照しません。

  type に 3 を指定した時は、サンプルテキストを含むファイルの名前を指定することができます。このファイルは UCS2 フォーマット (頭に 0xfeff がつきます) か、現在のデフォルトエンコーディングが使用できます。空の文字列を指定するか、引数を省略した場合には、FontForge はデフォルト値を使用します。

  環境設定の PrintSetup がファイル (PostScript または PDF) に出力するように指定されている場合、4 番目の引数で出力ファイルのファイル名を指定します。

PrintSetup(type,[printer[,width,height]])
  印刷コマンドの環境設定ができます。type は 0〜4 の範囲の値で、以下のように解釈されます。
  - 0 ⇒ lp で印刷
  - 1 ⇒ lpr で印刷
  - 2 ⇒ ghostview に出力
  - 3 ⇒ PostScript ファイルに出力
  - 4 ⇒ その他の印刷コマンド
  - 5 ⇒ PDF ファイルに出力

  type が 4 (その他) で 2 番目の引数が指定されている場合、2 番目の引数は「その他の」印刷コマンドを含む文字列でなければなりません。
  type が 0 (lp) または 1 (lpr) で 2 番目の引数が指定されている場合、2 番目の引数はレーザプリンタの名前を含むものと解釈されます (2 番目の引数が空文字列ならば、何もセットされません)

  3 番目と 4 番目の引数はそれぞれページ幅と高さを指定します。単位は 1/72 インチ (1 ポイントにほとんど等しい) なので、8.5×11 インチの用紙は 612, 792 となり、A4 の用紙は (約) 595, 842 となります。

PrivateToCvt()
  Private 辞書情報に含まれる標準の数値項目を cvt テーブルに追加します。

Q

Quit(status)
  status を終了ステータスとして FontForge を終了します。(保存していないフォントを保存するように促すことはしません)。カレントフォントが無い状態でも実行可能です。

R

Rand()
  ランダムな整数を返します。カレントフォントがない状態でも実行可能です。
ReadOtherSubrsFile(filename)
  Type 1 フォントのOtherSubrs 配列で使用するための新しい PostScript サブルーチンを読み込みます。ファイルフォーマットは必要以上に複雑になっているところが少々あります (なぜなら、OtherSubrs 配列を個々のサブルーチン毎に解析する方法が思いつかないからです)。
  - サブルーチンリストは [ ] で囲まれていてはならない。
  - 各サブルーチンの前には‘%%%%’(この後ろにさらに文字があってもよい) で始まる行がついていなければならない。
  - サブルーチンは自明な順序で配置せねばならず、期待される意味をもっていなければならない。
  - flex ヒントを使いたくない場合、最初の 3 個のサブルーチンは "{}" にセットすること。
  - 最大 14 個のサブルーチン (0〜13) が指定できる。
  - 最初のサブルーチンの前の任意のテキストは著作権表示として扱われる。

  >     % Copyright (c) 1987-1990 Adobe Systems Incorporated.
  >     % All Rights Reserved
  >     % This code to be used for Flex and Hint Replacement
  >     % Version 1.1
  >     %%%%%%
  >     {systemdict /internaldict known
  >     1183615869 systemdict /internaldict get exec
  >     ...
  >     %%%%%%
  >     {gsave currentpoint newpath moveto} executeonly
  >     %%%%%%
  >     {currentpoint grestore gsave currentpoint newpath moveto} executeonly
  >     %%%%%%
  >     {systemdict /internaldict known not
  >     {pop 3}
  >     ...

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

Real(int)
  整数を実数に変換します。カレントフォントがない状態でも実行できます。
Reencode(encoding-name[,force])
  カレントフォントを、指定された以下のどれかのエンコーディングに並べ替えます。
  compacted,original,
  iso8859-1, isolatin1, latin1, iso8859-2, latin2, iso8859-3, latin3, iso8859-4, latin4, iso8859-5, iso8859-6, iso8859-7, iso8859-8, iso8859-9, iso8859-10, isothai, iso8859-13, iso8859-14, iso8859-15, latin0, koi8-r, jis201, jisx0201, AdobeStandardEncoding, win, mac, symbol, wansung, big5, johab, jis208, jisx0208, jis212, jisx0212, sjis, gh2312, gb2312packed, unicode, iso10646-1, 現在の文字の並びを、強制的に与えられたエンコーディングとして解釈するように指定することもできます。
  注意: グリフ名によって指定されるエンコーディングがいくつかあります (例えば、ユーザ定義のエンコーディングは PostScript エンコーディング配列として指定されます) が、その他の物は Unicode の符号位置のリストとして指定されます (AdobeStandard および TeX、符号位置で指定したユーザ定義のエンコーディングを除くほとんど全ての組み込みエンコーディングの場合)。グリフ名によって定義されたエンコーディングを再符号化した時、ff は最初にグリフを適切なスロットに移動し、次に、不正な名前を持つ全てのグリフを強制的に正しい名前に変更します。この最も明らかな例は fi 合字です: AdobeStandard は、これは“fi”と命名しなければならないとしていますが、最近のフォントでは“f_i”と呼ぶのが一般的です。AdobeStandard に符号化変換を行うとグリフは正しい位置に移動され、その後に“fi”という名前に変更されます。
RemoveAllKerns()
  カレントフォントからすべてのカーニングペアとカーニングクラスを削除します。
RemoveAllVKerns()
  カレントフォントからすべての縦書き用のカーニングペアとカーニングクラスを削除します。
RemoveAnchorClass(name)
  アンカークラス (および、それに伴うすべての点) をフォントから削除します。
RemoveATT(type,script-lang,tag)
  引数に一致する任意の機能タグを削除します (引数は基本的に AddAAT と同じですが、何にでもマッチする "*" を使用できる点が異なります)
RemoveDetachedGlyphs()
  現在のフォントにエンコーディングスロットを含まないグリフがあるならば、それらのグリフをフォントから取り除きます。言い替えれば、フォントビューで表示されないフォントは削除されます。
RemoveOverlap()
  その名のとおりです。
RemovePreservedTable(tag)
  tag で指定された保存されたテーブルを検索し、フォントから削除します。
RenameGlyphs(namelist-name)
  引数で指定した名前リストに含まれるすべてのグリフの名前を変更します。
ReplaceCharCounterMasks(array)
  ReplaceGlyphCounterMasks の廃止予定の名前です。
ReplaceGlyphCounterMasks(array)
  これを呼び出すには、ちょうど 1 個のグリフを選択している必要があります。そのグリフに対し、一連のカウンターマスクを作成します。1 個だけ指定できる引数は整数 12 個の配列からなる配列です (C で書けば、int array[][12] となるでしょう)。これは type2 カウンターマスクのフォーマットです。トップレベルの配列要素の個数は、設定するカウンターグループの個数です。ここで内側の配列は、カウンターマスクに対応し、1 個のバイト配列として扱われます。 バイト内の各ビットは、対応するヒントがこのカウンター内でアクティブかどうかを指定します。(ヒントは最大で 96 個なので、最大 12 バイトとなります)。Array[i][0]&0x80 は最初の水平ステムヒントに対応し、Array[i][0]&0x40 が 2 番目、Array[i][1]&0x80 が 8 番目という要領で対応します。
ReplaceCvtAt(index,value)
  cvt テーブルの index 番目の項目に value で指定した新しい値を設定します。
ReplaceWithReference([fudge])
  選択中のグリフのインラインコピーを含むすべてのグリフを検出し、それらを適切なグリフへの参照に変換します。実行後、選択中の文字の一覧はコマンドによって変更された文字の一覧に切替えられます。

  引数 fudge を指定すると、座標値の誤差として許される距離を指定することができます。引数 fudge は実数または 2 個の整数のどちらかの形で指定でき、公社の場合最初の整数が fudge の分子、2 番目の整数が分母となります (fudge = arg1/arg2)。実数をサポートしていなかった頃の名残です。

Rotate(angle[,ox,oy])
  選択中のすべてのグリフを指定された度数だけ回転します。最後の 2 個の引数が指定されている場合、その点が回転の中心となります。指定しない場合、グリフの上下・左右の中心を使用します。
Round(real)
  実数を最も近い整数値に丸めて、整数に変換します。カレントフォントがない状態でも実行できます。
  Ceil, Int, Floor も参照してください。
RoundToCluster([within[,max]])
  最初の 2 個の引数は、近い座標を互いにまとめる値を示します。max は前の点から距離“within”以内に含まれる点の連鎖があるときに、中心点からの何個までの“within”を纏めるかを指定します。例えば

  >      RoundToCluster(.1,.5)

  は、相互に 0.1 em ユニット以内の距離にある座標値をまとめます。`-0.1,-0.05,0,0.05,0.1,0.15` のような並びはすべてまとめられます。これは、各々が次の 0.1 以内にあり、どれも中心から 5 個以上離れていないからです。

RoundToInt([factor])
  すべての点/ヒント/参照オフセットの座標値を整数に丸めます。引数“factor”を指定した場合、`rint(factor * x) / factor` の式に従って丸めを行います。要するに、factor を 100 に設定すると 100 分の 1 単位で座標値を丸めます。

S

SameGlyphAs
  クリップボードに 1 個のグリフへの参照が含まれているときにこのコマンドを実行すると、選択中のすべてのグリフがそのグリフを参照するようになります。

  Adobe は、それを避けるように勧めています。その代わりに参照を使ってください。いくつかの情況 (PDF がその一例だと思われます) においては 、1 個のグリフが複数の文字符号を持っていると問題が起こります (Acrobat は、Unicode コードポイントを算出するために、グリフから符号位置への逆対応表を使用します。しかし、あるグリフが 2 つの Unicode コードポイントを持っているとそれが失敗します)。

Save([filename])
  filename に何も指定しない場合、カレントフォントを元の SFD ファイルに書き戻します (フォントに対応する SFD ファイルが存在しない場合、エラーとなります)。引数 1 個をつけて実行した場合、「名前をつけて保存」コマンドを実行し、カレントフォントを filename で指定したファイルに保存します。
SavePrefs()
  現在の環境設定を保存します。以前は SetPref を呼び出したときに自動的に行われていましたが、現在はスクリプトは明示的に実行する必要があります。カレントフォントがない状態でも実行できます。
SaveTableToFile(tag,filename)
  どちらの引数も文字列でなければならず、最初の引数は 4 文字のテーブルタグでなければなりません。ファイルを読み込み、保存されたテーブルのリストから与えられたタグをもつテーブルを検索して、指定したファイルに保存します。
Scale(factor[,yfactor][,ox,oy])
  選択中のすべてのグリフを拡大・縮小します (拡大率は百分率で指定します)
  - 引数が 1 個の場合、グリフの中心点の周りで一様に拡大・縮小されます。
  - 引数が 2 個の場合、最初の引数が x 方向の拡大率を、第 2 の引数が y 方向の拡大率を指定します。この場合も拡大・縮小は中心点の周りで行われます。
  - 引数が 3 個の場合、指定された中心の周りで一様に拡大・縮小されます。
  - 引数が 4 個の場合、指定された中心の周りで縦横異なる比率で拡大・縮小されます。
ScaleToEm(em-size)
ScaleToEm(ascent,descent)
  フォントの高さと深さを変更し、フォント内のすべての座標値を新しい em 値 (高さと深さの和) と古い値の比に合わせて拡大・縮小します。
Select(arg1, arg2, ...)
  このコマンドは、まず現在の参照を解除し、それから引数を 2 個ずつ対にして得られる範囲内 (両端を含む) のどれかに含まれるグリフをすべて選択します。 最後に 1 個だけ余った引数がある場合、その 1 個のグリフも選択します。 引数は以下のいずれかの方法によって指定できます:
  - カレントフォントの符号化方式における位置を表す整数
  - Unicode の PostScript 名 (カレントフォントのエンコーディングに変換されます)
  - Unicode の符号位置 (例: 0u61) これは、(カレントフォントのエンコーディングに変換されます)
  - Select に与えた引数が 1 個だけで、その引数が配列であるならば、グリフの選択範囲は配列で指定された物となります。array[0] は符号位置 0 にあるグリフの選択を表し、以下の文字も同様です。配列の要素数と、フォント内に含まれるグリフの個数は同じである必要はありませんが、個数が違う場合には、$selection 疑似変数が返すのと同じフォーマットである必要があります。
SelectAll
  すべてのグリフを選択します。
SelectAllInstancesOf(name1[,...])
  1 個のグリフは 2 個以上のエンコーディングスロットに対応づけることができます。この関数は、名前で指定したグリフを参照するすべてのエンコーディングスロットを選択します。引数 name に指定するのはグリフ名、または Unicode の符号位置です。
SelectBitmap(size)
  ビットマップのみのフォントでは、その後で呼び出すメトリックコマンドにおける単位に、どのビットマップの実体を用いるかを選択します。どのビットマップも選択していないときは、単位は em ユニットになり、それ以外の場合、指定したビットマップ実体のピクセル数になります。size はフォントのピクセルサイズでなければなりません。アンチエイリアスフォントを使用しているときは、size は (depth<<16)|pixel_size にセットしなければなりません。value として -1 を選択すると、すべてのビットマップを選択解除します (単位は em ユニットになります)。
SelectByATT(type,tags,contents,search-type)
  処理に関してはATT メニューコマンドによる選択を参照してください。type に指定可能な値は以下のとおりです:

  `"Position"` | 単純な位置指定
  `"Pair"` | ペア単位の位置指定 (ただしカーニングは無し)
  `"Substitution"` | 単純置換
  `"AltSubs"` | 代替文字群からの置換
  `"MultSubs"` | 複数文字への置換
  `"Ligature"` | 合字
  `"LCaret"` | 合字のキャレット位置指定
  `"Kern"` | カーニング
  `"VKern"` | 縦書き用カーニング
  `"Anchor"` | アンカークラス

  search_type の値は以下のとおりです。

  1. 結果を選択する
  2. 現在の選択内容に追加する
  3. 現在の選択内容を絞り込む
SelectChanged([merge])
  変更されたグリフをすべて選択します。merge が真の場合、新しい選択範囲は、現在の選択範囲との和集合になります。
SelectFewer(arg1, arg2, ...)
  Select と同じですが、指定されたグリフの選択を解除する点が異なります。それにより、現在の選択範囲は縮小されます。
SelectFewerSingletons(arg1, ...)
  SelectSingletons と同じですが、引数で指定した個々のグリフを選択範囲から取り除く点が異なります。
SelectHintingNeeded([merge])
  FontForge がヒントを更新する必要があると判断した全グリフを選択します。
SelectIf(arg1,arg2, ...)
  Select() と同じですが、フォントにグリフが存在しなかった時にエラー表示を出さず、その代りにエラーコードを返すところが異なります。
  - 0 ⇒ エラーが発生していないが、選択されたグリフが 1 個もない。
  - <正の整数> => エラーは発生せず、この値と同じ個数のグリフが選択された。
  - -2 ⇒ エラーが発生し、グリフが 1 個も選択されなかった。
  - -1 ⇒ エラーが発生し、それまでに少なくとも 1 個のグリフが選択された。
SelectInvert()
  選択範囲を反転します。
SelectMore(arg1, arg2, ...)
  Select と同じですが、このコマンドは選択中の文字を最初に消去しないので、現在選択中の範囲を拡張する点だけが異なります。
SelectMoreSingletons(arg1, ...)
  SelectSingletons と同じですが、現在の選択範囲に引数で指定した個々のグリフを追加する点が異なります。
SelectNone()
  すべてのグリフを選択解除します。
SelectSingletons(arg1, ...)
  引数で指定された文字だけを選択します。
SelectWorthOutputting()
  WorthOutputting() が真であるすべてのグリフを選択します。
SetCharCnt(cnt)
  フォントに含まれるエンコーディングスロットの個数を設定します。
SetCharColor(color)
  SetGlyphColor の廃止予定の名前です。
SetCharComment(comment)
  SetGlyphComment の廃止予定の名前です。
SetCharCounterMask(cg,hint-index,hint-index,...)
  SetGlyphCounterMask の廃止予定の名前です。
SetCharName(name[,set-from-name-flag])
  SetGlyphName の廃止予定の名前です。
SetGlyphColor(color)
  現在選択されているグリフをすべて、color で指定した色 (24 ビット RGB (0xff0000 が赤) で表す) に設定します。特別な値として、-2 はデフォルトの色を示します。
SetGlyphComment(comment)
  現在選択されているグリフに comment で指定したコメントを設定します。コメントは現在のエンコーディングから Unicode に変換されます。
SetGlyphCounterMask(cg,hint-index,hint-index,...)
  列挙したヒントが第 cg 番目のカウンターマスクに含まれるように、作成または設定を行います。ヒント番号 0 は最初の水平ステムヒントに対応し、1 番は 2 番目に…という要領で対応します。垂直ステムヒントは水平ステムヒントの後に来ます。
SetGlyphName(name[,set-from-name-flag])
  現在選択中の 1 個のグリフに、name で指定した名前を設定します。set-from-name-flag がないか、true と指定されている場合は、その名前に一致する Unicode 値と合字文字列も同時に設定されます。
SetFondName(fondname)
  フォントの FOND 名を設定します。
SetFontHasVerticalMetrics(flag)
  フォントが縦書き用メトリックを含んでいるかどうかを設定します。値が 0 であればメトリックを含まず、それ以外の値であれば含んでいることを意味します。以前の設定値を返します。
SetFontNames(fontname[,family[,fullname[,weight[,copyright-notice[,fontversion]]]]])
  フォントにつけられた各種の PostScript 名を指定します。name が存在しない (または空文字列である) 場合、変更されません。
SetFontOrder(order)
  フォントのアウトラインの次数を指定します。order に指定できる値は 2 か 3 だけです。フォントの以前の次数を返します。
SetGlyphChanged(flag)
  flag が 1 の場合、選択中の全グリフを変更されたものとします。フラグが 0 の場合、変更されていないものと設定します。
SetGlyphClass(class-name)
  選択中の全グリフのクラスを "automatic", "none", "base", "ligature", "mark" または "component" のいずれかに設定します。
SetGlyphTeX(height,depth[,subpos,suppos])
  このグリフの tex_height および tex_depth フィールドを設定します。また、数学フォントにでは下つき文字の位置と上つき文字の位置も設定します。
SetItalicAngle(angle[,denom])
  イタリック体の傾き角を表す PostScript のフィールドを正しくセットします。denom が指定されている場合、angle の値はまず denom で割ってから、イタリック角のフィールドに格納されます (実数値を表すための小細工です)。angle の大きさは度数で表されます。
SetKern(ch2,offset)
  選択中の各グリフと、グリフ ch との間のカーニング量を offset に設定します。最初の引数は Select() での指定と同じです。2 番目の引数は、カーニングのオフセットを表す整数です。
SetLBearing(lbearing[,relative])
  2 番目の引数が存在しないか 0 の場合、左サイドベアリングを最初の引数にセットします。2 番目の引数が 1 の場合、左サイドベアリングを最初の引数で指定した量だけ増やします。2 の場合は、左サイドベアリングは比率〈最初の引数〉/100.0 だけ拡大されます。ビットマップのみのフォントの場合については、SelectBitmap の単位に関するコメントを参照してください。
SetMacStyle(val)
SetMacStyle(str)
  引数は整数でも文字列でも構いません。整数の場合、Mac で定義されているスタイルを表す以下のビットの組合せとなります:

  0x01 | Bold (ボールド)
  0x02 | Italic (イタリック)
  0x04 | Underline (下線)
  0x08 | Outline (縁どり文字)
  0x10 | Shadow (影つき文字)
  0x20 | Condensed (長体)
  0x40 | Extended (平体)
  -1 | FontForge はフォント名から推測を行います。

  ビット 0x20 と 0x40 (長体と平体) は両方同時に指定できません。

  引数が文字列である場合、複数のスタイル名を繋げたものを、例えば "Bold Italic Condensed" のように指定します。

SetMaxpValue(field-name,value)
  引数 field-name は文字列で、以下のいずれかの値をとります: `Zones, TwilightPntCnt, StorageCnt, MaxStackDepth, FDEFs,` または `IDEFs`です。引数 value は整数値でなければなりません。
SetOS2Value(field-name,field-value)
  この関数は field-name で指定した名前をもつ OS/2 テーブルのフィールドに値を設定します。field-name はフィールド名を表す以下のいずれかの文字列でなければなりません:

  `Weight, Width, FSType, IBMFamily, VendorID, Panose,
  WinAscent, WinAscentIsOffset`

  これらは `フォント情報(F)`→`[OS/2]`→`[メトリック]` にある `Win Ascent のオフセット` フィールドと `[] オフセットを指定` チェックボックスと等価です。ここで WinAscentIsOffset は、WinAscent が絶対値として扱われるか、予期される数値に対する相対値かを指定します。

  `WinDescent, WinDescentIsOffset,
  TypoAscent, TypoAscentIsOffset,
  TypoDescent, TypoDescentIsOffset,
  HHeadAscent, HHeadAscentIsOffset,
  HHeadDescent, HHeadDescentIsOffset,
  TypoLineGap, HHeadLineGap, VHeadLineGap,
  SubXSize, SubYSize, SubXOffset, SubYOffset`

  下つき文字の X/Y 方向のサイズ/オフセットを設定します。

  `SupXSize, SupYSize, SupXOffset, SupYOffset`

  上つき文字の X/Y 方向のサイズ/オフセットを設定します。

  `StrikeOutSize, StrikeOutPos`

  第 2 引数は通常整数ですが、`VendorID` の場合は 4 文字の ASCII 文字列、`Panose` の場合は 10 個の整数要素を含んだ 1 個の配列を第 2 引数に指定します。

SetPanose(array) SetPanose(index,value)
  フォントの panose 値を設定します。10 個の整数からなる配列 1 個を引数としてすべての panose 値を設定するか、2 個の整数を引数として `font.panose[index] = value` とする設定を行うかのどちらも可能です。
SetPref(str,val[,val2])
  名前 str をもつプリファレンスの項目値を設定します。プリファレンスの項目が実数型ならば、2 番目の引数を指定することができ、設定される値は val/val2 となります。
SetRBearing(rbearing[,relative])
  2 番目の引数が存在しないか 0 の場合、右サイドベアリングを最初の引数にセットします。2 番目の引数が 1 の場合、右サイドベアリングを最初の引数で指定した量だけ増やします。2 の場合は、右サイドベアリングは比率〈最初の引数〉/100.0 だけ拡大されます。ビットマップのみのフォントの場合については、SelectBitmap の単位に関するコメントを参照してください。
SetTeXParams(type,design-size,slant,space,stretch,shrink,xheight,quad,extraspace[...])
  TeX の (テキスト) フォントパラメータを設定します。
  type は 1, 2, 3 のいずれかで、フォントがテキスト用、数学用または数学用拡張フォントのどれであるかによって変わります。
  design-size は、フォントデザイン時に意図したポイントサイズです。
  残りのパラメータは Knuth の METAFONT ブックの (原書) 98-100 ページに書かれています。
  slant は百分率で表されています。その他のすべての値は em ユニットで表されています。
  type が 1 のときは、上に示した 9 個の引数が必要です。type が 2 のときは、24 個の引数が必要です (残りの 15 個は METAFONT ブックに説明があります)。type が 3 のときは、15 個の引数が必要です。
SetTTFName(lang,nameid,utf8-string)
  MS プラットフォームで使用される、指定された言語・IDの TrueType 名を指定します。Lang は MS のサポートする言語/ロケールに含まれていなければならず、名前 ID は標準の名前指定で用いる小さな整数 のどれかでなければなりません。空文字列 ("") はエントリを削除するのに使用できます。
  例: アメリカ英語の言語/ロケールで、SubFamily 文字列を指定するには以下のようにします:
  `SetTTFName(0x409,2,"Bold Oblique")`
SetUnicodeValue(uni[,set-from-value-flag])
  現在選択されている文字に、uni で指定した Unicode 値を設定します。set-from-value-flag がないか、true と指定されている場合は、その値に一致する名前と合字文字列も同時に設定されます。
SetUniqueID(value)
  PostScript の UniqueID フィールドに指定した値を設定します。値 0 を与えた場合、FontForge は適正な範囲に含まれる乱数値を自動的に選びます。
SetVKern(ch2,offset)
  選択中の各グリフと、グリフ ch との間の縦書きカーニング量を offset に設定します。最初の引数は Select() での指定と同じです。2 番目の引数は、カーニングのオフセットを表す整数です。
SetVWidth(vertical-width[,relative])
  2 番目の引数が存在しないか 0 の場合、文字の全高 (縦書き時の送り幅) を最初の引数にセットします。2 番目の引数が 1 の場合、文字の高さを最初の引数で指定した量だけ増やします。2 の場合は、文字の高さは比率〈最初の引数〉/100.0 だけ拡大されます。ビットマップのみのフォントの場合については、SelectBitmap の単位に関するコメントを参照してください。
SetWidth(width[,relative])
  2 番目の引数が存在しないか 0 の場合、文字幅を最初の引数にセットします。2 番目の引数が 1 の場合、文字幅を最初の引数で指定した量だけ増やします。第 2 引数が 2 の場合、文字幅は比率〈最初の引数〉/100.0 だけ拡大されます。ビットマップのみのフォントの場合については、SelectBitmap の単位に関するコメントを参照してください。
Shadow(angle,outline-width,shadow-width)
  選択中のすべてのグリフを影つきグリフに変換します。
Simplify()
Simplify(flags,error[,tan_bounds[,bump_size[,error_denom,line_len_max]]])
  引数が指定されていない時の処理は自明です。flags が -1 の時には、冗長なデータの整理を行います。それ以外の場合、flags の各ビットは以下のように扱われます。
  - 1 — 端点における傾きが変化することを許す
  - 2 — 極値にある点を取り除いてよい
  - 4 — 角の点を滑らかな曲線に近似してよい
  - 8 — 滑らかにした点が十分水平・垂直に近い場合、水平・垂直に揃える
  - 16 — 線からコブを取り除く
  - 32 — 水平/垂直に近い線を水平/垂直に揃える
  - 64 — ほとんど平行な線を 1 本に統合する
  - 128 — 輪郭の開始点が極値にない場合、どの点が極値になるかを変更する

  引数 error は、変更されたパスがフォント座標系で本来のパスから何ユニットまでかけ離れてよいかを指定します。
  引数 tan_bounds は滑らかにする処理を行わない最大の角度を表します。
  bunp_size は除去して滑らかに変換するコブが、元の線から最大何ピクセル離れて良いかを指定します。
  5 番目の引数が与えられた場合、それは error 項の分母として扱われます (これにより、ユーザは分数ピクセルの距離を指定することができます)。
  一般に、端点の両側で方向が異なる線同士を併合しようとしてもうまくいきません。曲線のセグメントが長くなるほど、不愉快な結果を生み出す可能性は高まります。6 番目の引数を指定すると、併合される線の最大長を指定することができます (それより長い線はすべて併合されずに残ります)。

Sin(val)
  val の正弦を返します。カレントフォントがない状態でも実行できます。
SizeOf(arr)
  配列に含まれる要素数を返します。カレントフォントがない状態でも実行できます。
Skew(angle[,ox,oy])
Skew(angle-num,angle-denom[,ox,oy])
  選択中のすべてのグリフを指定した角度だけ傾けます。
Sqrt(val)
  平方根を返します。カレントフォントがない状態でも実行できます。
Strcasecmp(str1,str2)
  大文字と小文字の区別を無視して 2 つの文字列を比較し、等しければ 0 を、str1<str2 ならば負の数を、str1>str2 ならば 正の数を返します。カレントフォントがない状態でも実行できます。注意: 2 つの文字列に比較演算子を使用することができるので、Strcmp 関数は存在しないことに注意してください。
Strcasestr(haystack,needle)
  大文字と小文字の区別を無視して検索を行い、文字列 needle が文字列 haystack の中で最初に出現する位置を返します (ない場合は -1 を返します)。カレントフォントがない状態でも実行できます。
Strlen(str)
  文字列の長さを返します。カレントフォントがない状態でも実行できます。
Strrstr(haystack,needle)
  文字列 needle が、文字列 haystack の中で最後に出現する位置を返します (ない場合は -1 を返します)
Strskipint(str[,base])
  文字列 str をできるだけ長く字句解析して、解析不可能な最初の文字のオフセットを返します。カレントフォントがない状態でも実行できます。
Strstr(haystack,needle)
  文字列 needle が、文字列 haystack の中で最初に出現する位置を返します (ない場合は -1 を返します)。カレントフォントがない状態でも実行できます。
Strsub(str,start[,end])
  文字列引数の部分文字列を返します。部分文字列は start で指定された位置から始まり、end で指定された位置の前で終わります (end が省略された場合、文字列の終りが使用されます。文字列の先頭は位置 0 です)。ですから `Strsub("abcdef",2,3) == "c"` になり、`Strsub("abcdef",2) == "cdef"` になります。カレントフォントがない状態でも実行できます。
Strtod(str)
  文字列を実数に変換します。カレントフォントがない状態でも実行できます。
Strtol(str[,base])
  文字列 str をできるだけ長く字句解析して、str が表す整数値を返します。変換の基数を表す 2 番目の引数を与えることができます (デフォルトでは 10 進数です)。この手続きの振舞いは strtol(3) に従います。カレントフォントがない状態でも実行できます。
SubstitutionPoints()

T

Tan(val)
  val の正接を返します。カレントフォントがない状態でも実行できます。
ToString(arg)
  引数を文字列に変換します。(この出力は Print() コマンドの印字と同じです)。カレントフォントがない状態でも実行できます。
Transform(t1,t2,t3,t4,t5,t6)
  各引数は 100 で割られます。その後、選択中のすべてのグリフをこの行列で変換します。

  [ | t1/100. | t2/100. | t3/100. | ]
  t4/100. | t5/100. | t6/100.

  これは、以下の変換を行う標準 PostScript 変換行列です。

  x' | = | t1/100 * x + t2/100 * y + t3/100
  y' | = | t4/100 * x + t5/100 * y + t6/100

  100 で割る特別な表記法を用いているのは、FontForge のスクリプト言語がかつて実数を扱うことができなかったためです。その後この制限は解消されましたが、関数のふるまいを当時のままにしておくに越したことはないと思います。

TypeOf(any)
  引数の型を表す文字列を返します:
  - "Integer"
  - "Real"
  - "Unicode"
  - "String"
  - "Array"
  - "Void"
    (以下の型は内部的に用いられますが、ユーザがこれを見ることは決してないと思います。完璧を期すためにここに入れています)。
  - "LValue"

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

U

UCodePoint(int)
  引数を Unicode のコードポイント (いくつかのコマンドで使用される特殊なデータ型) に変換します。カレントフォントがない状態でも実行できます。
UnicodeFromName(name)
  文字列 "name" を、一般に使用されるグリフ名を格納した FontForge のデータベースから検索して、その名前がもつ Unicode 値を (見つからなければ -1 を) 返します。これは、カレントフォント (があれば) を検査しません。カレントフォントがない状態でも実行できます。
UnlinkReference
  選択中のすべてのグリフに含まれる参照を解除します。
Utf8(int)
  整数 [0,0x10ffff] をとり、その Unicode コードポイントが指す文字を UTF-8 文字列で返します。整数の配列を渡した場合、それら全ての Unicode コードポイントを含む UTF-8 文字列を生成します。(サロゲートの値を渡されることは想定していません)。カレントフォントがない状態でも実行できます。

V

VFlip([about-y])
  選択中のすべてのグリフを、水平線 y=about-y を中心にして、垂直方向に反転します。引数を指定しない場合、選択中の各グリフを、その上下中心線の周りで反転されます。
VKernFromHKern()
  カレントフォントからすべての縦書き用カーニングペアとカーニングクラスを削除し、次に、それらのグリフの縦書き用に横転したグリフ同士の文字のペアに設定された横書き用カーニングデータをコピーすることによって、新しい縦書きカーニングペアを生成します。

W

Wireframe(angle,outline-width,shadow-width)
  選択中のグリフをワイヤフレーム化したものに変換します。
WorthOutputting([arg])
  引数が存在しない場合、ちょうど 1 個の引数を選択していなければならず、この関数はそのグリフに適用されます。それ以外の場合、arg は InFont と同様に解釈されます。この関数は、対象となるグリフが何らかのスプライン、参照、画像を含んでいるか、幅が設定されているときに真を返します。
WriteStringToFile("文字列","Filename"[,append])
  "Filename" で指定した名前をもつファイルを作成し、文字列をそのファイルへ書き出します。append フラグが指定されていて 0 でない値の場合は、文字列はファイルの末尾に追加されます。この関数は null で終端された文字列を扱うものであり、バイト配列を扱いません。失敗時には -1 を返し、成功時には書き出されたバイト数を返します。カレントフォントがない状態でも実行できます。

X |
Y |
Z |

— 上 —