FontForge への以前の変更点

最近の変更点
PfaEdit (FontForge の旧名称) の変更点

- 2005年8月31日
  - 8/25 の Mac の修正は十分ではありませんでした。
  - 今まで、OS/2 の linegap フィールドの隠れた値を保持していました。これはユーザがフォント情報ダイアログで linegap を設定したときに変更されておらず、ユーザに不満を残していました。
  - 「ヒント→ヒントを追加」および「ヒント→ヒントを作成」コマンドは両方ともすべてのヒントマスクを壊していました。今やそれらのヒントマスクを正しく更新されました。
  - 「オリジナル」エンコーディングが壊れており、「オリジナル」へのエンコーディング変換を行うとグリフ 0 の前に 256 個の空グリフを追加していました。やれやれ。
  - CodeRange ビットの symbol ビットの意味は、標準の "Symbol" フォントに含まれるグリフのどれかが含まれると言う意味ではなくて、3,0 cmap サブテーブルが含まれているか、3、1 (Unicode) サブテーブルの 0xf000-0xf0ff にマップされたグリフが存在すると言う意味でした。

    そのビットをセットすると、ビットを立てたその他のエンコーディングに加えて Symbol エンコーディングが使用できるようになります。これは Windows では動作しません。動作しません。TrueType フォントは Symbol エンコーディングを提供せず、Symbol エンコーディングを提供するのはただ 'CFF ' フォントだけです。それでも、これをサポートすることにしましょう!

    「表示→移動」が MS Symbol の位置を知っているように変更。

  - EPS ファイルの取り込み (または X クリップボードの貼り付け) が未初期化変数を使用していました (8/7 以来)。
  - フォントをまたいだ参照の貼り付け処理を整備 (参照に Unicode 符号位置が含まれていないとき、非常に変な結果を招いていました)。
- 2005年8月25日
  - Mac リソースフォークのルーチンを書き直し、FSSpec 構造体を使用しなくなりました。それをしていると 10.4 が文句を言うのです。
  - マルチプルマスターフォントの charstring 生成のバグ修正。
  - Mac 機能の設定名を含むフォントでは、FF がそれを生成したときに 'name' テーブルに同じ項目を重複して生成していました。1 つはフォントそれ自身に含まれる名前で、もう 1 つは ff が、その設定が含むべきと判断した名前です。
  - Apple Unicode で 'name' テーブルに名前を登録した人が誰もいないので、私もそうするべきではないのでしょう。Adobe はそうするべきでないと言う一人です。Apple の Web サイトでは、そうするべきだと示唆していますが、自分でははそうしていませんし、Apple の TTF に関する Web サイトは非常に不正確なのです。
  - ff が TTF/OTF を Apple モードつきで、OpenType モードをオフにして出力したとき、フォントのバージョンは 'true' となります。これにより、Windows はこのフォントを拒否します。これは Mac でのデフォルトなので、おそらく良い考えではありません――GSUB/GPOS テーブルが含まれていないときでも、少なくともグリフをウィンドウに表示すべきでしょう。

    その一方、Mac でのみ動作するフォントを作成したいと考える人が何人かいます。そういうわけで configure にフラグを追加しました。

  - FF は合字キャレットの変更を取り消せません (複数レイヤ機能つきでコンパイルしないかぎり)。
  - ペア単位の位置指定をコピーするとメモリが不正な状態のままになっていました。
  - 機能ならびに用字系・言語が等しいすべての照合を統合します。これにより、Windows 上でのカーニングに関して ATM がうまく動くようになります。
  - 複数レイヤフォントをラスタライズするとき、我々は、ストローク処理ルーチンから、ストロークが自己交差しているとの警告を受けることがときどきありました。これらの警告を削除。
  - 複数レイヤフォントから通常フォントにペーストするとクラッシュしていました。
  - 2 次フォントを PS フォントに変換すると、ヒントつき文字がヒントの無いことに混乱していました。
  - Mac のフォント製作者は文脈依存置換においてフラグとして、しばしば範囲外の GID を使用することがあります。私が見た例では、あるサブテーブルが、マッチが発生した時にそのような「グリフ」を挿入し、次のサブテーブルがフラグを削除し、引き続き変換を行います。Mac においては 1 個のマッチの発見時に行うことのできる置換の個数が限られているのに対して、マッチが先頭で (つまり、何らかのマジックマーカグリフであるというマッチが) 起こった時は置換を無制限に行うことができるので、この技法は重要です。FF が最初にこれらのフォントにつまづいた時にはクラッシュを起こしていました。その後 gid>glyph_cnt をエラーとして扱うようにしました (つまり置換を無視していました)。このほど変てこな GID が出現した時には常にダミーグリフを作成し、ff を通した後でもフォントが動作するようになりました (と思います。変更されるのは、一連の実体の無いグリフが実体をもついくつかの空グリフになる点だけです)。
  - [有効なヒント] タブ (「点の情報」のはグリフが 1 個より多くの輪郭をもっていた時に常に失敗します。
  - Type1/Type2 の出力で参照により多くのサブルーチンを使用するようにしました。
  - 文脈依存の照合を生成するとき、ff は GPOS と GSUB の各々に含まれる照合の個数を設定していませんでした。それにより、フォントが文脈依存の GPOS と GSUB の両要素を含んでいた場合、FF は混乱していました。
  - CFF 符号化 (つまり、裸の CFF 非 CID フォントでの) のコードは多重符号化されたグリフを扱っていませんでした。
  - 前の制御点のデフォルトの色を変更 (これにより、より見やすくなりました)。
- 2005年8月11日
  - /usr/X11R6/libs だけに libfreetype があるとき、configure スクリプトが検出に失敗していました。
  - Mac では、誤ってメニューに Ctl ではなく Cmd を表示していました (Cmd はより以前の X サーバで動くように使っていましたが、それは X11 メニューバーそれ自身に横取りされていまいます)。
  - FF は、編集ウィンドウで同じツール (拡大・物差し・ポインタ・鉛筆など) に別のふるまいをさせるために Alt/Meta キーを使用します。これは Mac ではよく動きません。第一の理由として、本物の Alt/Meta キーが内からです。Option または Command キーで代用しようとしても、一般には、1 ボタンマウスを 3 ボタンマウスとして使用するために既に使用済みです (Option-マウス→ボタン2, Command-マウス→ボタン3)。だから代わりに CapsLock キーを使用します。
- 2005年8月9日
  - Big5 エンコーディングは 64000 で止まっており、これが符号化されていないグリフが 65536 から始まることを前提としていたルーチンを混乱させていました。
  - 符号化されていない代替 Unicode 符号位置がある程度以上含まれるフォントのエンコーディング変換を行うとクラッシュしていました。
  - 8/16 cmap サブテーブルを作成するコードが動いていませんでした。
  - 同じフォントのウィンドウを複数開いていて、片方でエンコーディング変換を行うとクラッシュしていました。
  - フォーマット 4 'cmap' サブテーブルの長さを設定していなかったので、フォーマット 12 (32 ビット Unicode) テーブルへのオフセットが間違っていました。
  - ttfcopyfile が、TTF テーブルオフセットが間違っていると文句をいう可能性がありました。どのテーブルのオフセットが間違っているのかを表示できるだけの情報を提供しました。
  - ポップアップ作成時、メトリックビューに未初期化変数がありました。
  - フォント情報ダイアログの [TTF 名] の作りなおし。名前を編集かの得りストとして表示するようになりました。
  - 「柱状グラフ」ダイアログは、ヒントメニューからヒストグラムを起動したときに選択されたグリフの符号位置をまだ間違っていました。
- 2005年8月7日
  - SelectIf() に範囲外の文字符号を与えると正しく動作しませんでした。
  - 新しいスクリプトコマンド ToString() を追加。
  - X のクリップボードを使って、何らかのデータが含まれているグリフにグリフをペーストしようとするとクラッシュしていました。
  - X のクリップボードを使って、参照をもつグリフの張り付けを行おうとしたときや複数レイヤフォントの貼り付けを行うとクラッシュしていました。
  - TTF, OTF, SVG のどれも複数の文字符号をもつグリフを正しく出力できていませんでした。
  - SVG フォントから合字を作成したときにメモリを破壊していました。
  - フォントの併合時に不正なメモリに書き込んでいました。
  - FF は、おかしな MM フォントに混乱させられていました。
  - FindExistingSlot() は altuni を理解するべきです。
  - フォントビューが複数の文字符号をもつグリフの現在の Unicode を表示していませんでした (ポップアップと同じ)。
  - 複雑な参照グリフの Type1 コード生成にまだ問題がありました。
  - 同じグリフの複数 Unicode 符号位置の情報を保持。グリフが複数の符号位置をもっていて、エンコーディング変換を行ったときに使用されます。
  - エンコーディングのコンパクト表示を再追加。古いエンコーディングを覚えていた以前の「コンパクト化」と同じではありません。単純にコンパクト表示をするだけなので、ユーザは明示的にエンコーディングの再変換を行う必要があります。
  - 新しいエンコーディングのスロットが、以前よりも多い場合に「エンコーディングを強制」が動いていませんでした。
  - FF は文脈依存の照合に基づくグリフの解析も正しくできていませんでした。
- 2005年8月3日
  - FF はクラスベースの文脈依存の照合を正しく解析できていませんでした (文脈連鎖依存の照合は大丈夫)
- 2005年8月2日
  - OS/2 の ulCodeRanges フィールドが長い間壊れており、ラテン文字のコードページの存在を一切検出できていませんでした。
  - ulCodeRange のベトナム語、繁体字中国語、Mac および PC OEM の各フィールドは常にセットされないままになっていました。
  - FF は iconv の EUC-CN, ISO-2022-CN, ISO-2022-KR 各符号化方式を適切にサポートできていませんでした。
  - iconv の CP1258 サポートのバグを回避。
  - TTF の 'name' テーブル内に含まれる未知の言語/ロケール名に対する警告コードを追加。
  - 新しい MS の言語/ロケールコードをいくつか登録。
  - 2 次スプラインフォントの開いたパスの端を移動するとクラッシュしていました。
  - 符号位置によって指定されたエンコーディングを読み込み、そのエンコーディングの名前を聞かれたときにキャンセルすると、ff はクラッシュを起こしていました。
  - 明らかに間違っていることが判明した Adobe のグリフ名の使用を廃止 (代わりに uni???? を使用)
  - 新しい dotlessj の (より良い) サポートを追加。
  - コンテキスト連鎖ダイアログに、シーケンス番号が大きすぎるシーケンス/照合ペアを追加しないようにするためのチェックを追加。
  - 範囲指定テーブルに代わり、文脈依存/文脈連鎖依存の置換をクラス作成時のデフォルトフォーマットに変更。
  - LineBreak.txt ファイルのフォーマットが Unicode 4.1 で変更されたので、改行可能情報は全部間違っていました (基本的にテキストフィールド内の行は全く改行されていませんでした)。
  - 組み合わせリスト内のポップアップを作成時に不正なメモリを参照していました。
  - 'name' テーブルには、Mac と Mac Unicode の文字列が一致しない時にはまだ問題がありました。
  - グリフを平行移動するのに X クリップボードを使用するとクラッシュしていました。
  - 旧スタイルの 'kern' テーブルを (OpenType モード、Apple モードのどちらもセットせずに) 生成する時、AFM ファイルの処理と同じように、すべてのカーニングクラスをカーニングペアに分解していました。
  - スクリプト処理には、Apple と OpenType テーブルのどちらも生成しない方法がありませんでした。追加しました。
  - おっと、スクリプトで OTB フォントを処理するときのデフォルトの拡張子が間違っていました。
  - 新しいフィールドがセットされないままになっているフォント型を読み込む時に、クラッシュする可能性がある所をいくつか修正しました。
- 2005年7月28日
  - エンコーディングの扱いを設計変更しました。ユーザの視点からは、エンコーディングはフォント情報ダイアログからではなく、エンコーディングメニューから変更されるようになりました。
  - 空のフォントでビットマップを作成すると、フォントビューがそのビットマップを参照するようにしました。
  - 空のフォントのフォントビューで SetWidth() コマンドを実行した時のデフォルト値が壊れていました。
  - ビットマップのみのフォント、マルチレイヤフォント、ストロークフォントや 2 次フォントでは「ヒントが必要」ビットをオンにしないようにしました。
  - 「ファイル→複数フォントを出力」で出力された名前に関する問題を修正。
  - 保存コマンドがフォントウィンドウのタイトルをうまく更新できていませんでした (「変更済」のままになっていました)。
  - 「エンコーディング→グリフを切り離し」が可能になる条件が間違っていました。
  - FF は、同じグリフに対して 2 種類の合字を設定することがまだできていませんでした (つまり、"f + f + i → ffi" と "ff + i → ffi" の療法を作ろうとすると文句をたれていました)。
  - スクリプトに TypeOf() コマンドを追加。
  - スクリプトに GetPosSub() コマンドを追加。
  - 負の幅と深さの値が TFM ファイルでは 0 になっていると Werner が指摘しました。
  - FontForge は不正な警告メッセージを出力していました。もし、ある特定のプラットフォーム/固有/言語/文字列ID が 'name' テーブルの複数の項目に含まれているならば、それはフォントのエラーです。しかし ff は Mac 用の名前を Windows 用の名前と併合しているので、言語/ID の 2 つしかチェックしていませんでした。ですから、Mac と Windows で異なる名前を使用していると (これはおそらく良くない設計思想ですが、エラーではありません) ff はそれが間違っていると表示していました。これは、その言語の Mac エンコーディングに含まれていないときには文字列内の文字を使用することによっても引き起こされる可能性があります。
  - ビットマップのみのフォントでは「ヒントづけが必要」フラグを設定しないように変更。
  - ヒントづけの対象となるグリフに開いた輪郭が含まれていると自動ヒントづけ時にクラッシュしていました。
  - デフォルトでチェックするブラウザのリストに 2 種類追加。
  - カーニングペアの拡大ダイアログを使用してカーニングペアを新しく作成すると (ときどき) クラッシュしていました。
  - TTF ビットマップグリフのブロックを保存するとき、全部同じメトリックになっていました。
  - AFM ファイルの読み込み時に、カーニングペアが EM サイズに拡大・縮小されていませんでした。
  - 一連の選択コマンドをフォントビューとスクリプトに追加しました。
    - SelectChangedGlyphs
    - SelectHintingNeeded

    (スクリプトのみ)

    - SelectSingletons
    - SelectMoreSingletons
    - SelectFewerSingletons
  - グリフの復元が動作していませんでした。複数レイヤ編集機能に伴って生じたバグが 1 つ、エンコーディングの変更によるバグが 1 つ、そしてもう 1 つ非常に古いバグがありました。
  - GetFontNames() が、不正な TTF ファイルに対して初期化されていない値を返していました。
  - TeX のグリフ単位のフィールドにアクセスするための新しいスクリプトコマンドをいくつか追加。
  - Werner の示唆を受けて TFM 出力をいくつかの点で改良。
  - TTF ビットマップをスクリプト内で出力するときのふるまいを明確化。
  - GPOS/GSUB の解析時に、用字系/言語を各々の照合に割り当てていました。これは十分よくはありません。各サブテーブルはそれぞれ独自のセットをもっているので、サブテーブルにも同様に用字系/言語を割り当てる必要があります。それだけではまだ不完全な点があり、サブテーブルがいくつかの拡張サブテーブル経由で、または直接参照される場合を考慮していません。この複雑さ場合に長い間気づかずにいました。
  - Word のために OTF フォントの何らかのカーニングを取り扱う ATM は、'kern' 機能に 2 個以上の照合を含む場合、それを処理することができません。そういうわけで、複数の照合を含む機能があった場合は、それを複数のサブテーブルを含む 1 個の照合に詰め込むことができないか毎回試します。
  - (フォントビュー内で)「変形」または「表示を全角に変換」を呼び出した時に、縦書きの送り幅を変形していませんでした。
  - 参照を含むサブルーチンがどこから始まるかを決定する時に、正しいテストを行っていませんでした。
  - エンコーディングの修正を行って、「アンドゥ履歴のクリア(N)」が動かなくなっていました。
  - 複数フォントを保存する時、(現在のサブフォントに含まれないグリフに対する) 余計なカーニングを含んでいないかの確認を追加。
  - (ヒントの更新が必要であることを示す) 青い線の表示がちゃんと消されたかの確認を追加。
  - SameGlyphAs() コマンドにいくつか表示上の問題。
  - 「置換を適用」のコードが a→b→c→d→a というループの可能性を考慮していませんでした。
  - バージョン文字列にマルチレイヤかどうかを示すことを Werner が提案しました。
  - マークからマークへのアンカークラス群は各マークグリフに基底マーク項目が含まれることもできる必要があります。
  - ドットつき文字の名前に対する Unicode 名前データを (灰色で) 表示。(つまり、A.super は Unicode 名 "A" ですが、それが変更されたことを示すために灰色で表示します)
  - グリフをエンコーディングから切り離すためのスクリプトコマンドと、フォントから削除するためのコマンドを追加。
  - FF はある非常に奇妙な 'gasp' テーブルを生成していました…… SFD 内のビットマップフォント に依存していて、出力される TTF 内のビットマップを反映していませんでした。
  - Werner が、[選択範囲を反転] コマンドを欲しがっています。
  - コプト文字とグラゴル文字の位置は Unicode 4.1 でシフトされました (いくつかのより以前の提案で、既にシフトされていました)。
  - 狩野からのパッチ。TTC ファイルが壊れていました。
  - フォント情報ダイアログの [TTF 名] タブ内のいくつかの英語文字列が、[名前] タブの等価なフィールドとある種の結び付きをもっていました。これをより明白にし、一貫性をもたせました。
  - Werner の考えにより、スクリプトのエラーメッセージを改良。
  - SFD ファイルに不正なピクセルサイズなどの値が含まれていないかどうかのチェックを追加。
  - スクリプトを実行せずに構文チェックだけを行う --dry <スクリプトファイル> コマンドの追加を Werner が提案しました。それは簡単なことだと思います。
  - Werner の指摘によると、DSC バージョンコメントの構文は非常に厳格です: %%Version: <version> <revision>
    <version> は実数で, <revision> は非負の整数です。ですからここに (どんな値でも許される) バージョン文字列を使うわけにはいきません。DSC コメントの代わりに、バージョンコメント
    %Version: <string>
    を出力するようにしました。
  - PS エンコーディングファイルの読み込み時に、エンコーディングが制御も時の範囲内に含まれているときに Unicode 値 ".notdef" を割り当てていました (それにより、位置 1 は uni0001 となるのに対し、位置 65 は -1 となります)。一貫性がないように思います。
  - おっと。他のエンコーディング名をメニューに追加するメカニズムを提供しそこねていたようです。
  - グループ表示をサポートするためのコード。
  - PS エンコーディングファイルを正しく読み込んでいませんでした。
  - 「エンコーディングを削除」は常に利用可能であるべきです。
- 2005年7月19日
  - Unicode 4.1 へ拡張。
  - configure スクリプトに対して --with-freetype-src で相対パスを指定できるようにするための変更が動いていませんでした。
  - 文脈連鎖依存ダイアログには空パターンに関する問題がありました (空文字列を表すのに使われる NUL が末尾にありませんでした)
  - 文脈依存フォント情報タブ内の [データを編集] ボタンは、現在もう成り立たない理由により使用不可能になっていました。
  - 拡大率に負の値を指定すると、ヒントが壊れていました。
  - カーニングクラスダイアログ (クラスリストエリア) に上/下に移動するボタンを追加しました。オフセットをハイライトするためには、クラスリストからの選択を行ってください。
  - サンプルテキストの印字が、クラス単位のカーニング処理を行っていませんでした。
  - あるグリフが複数の参照を含んでおり、そのグリフがそれ自身また別のグリフからとして使用されて参照されていた場合、サブルーチンに含まれた (最後のグリフを除いて) すべてのグリフは、複数回ヒントが宣言されて、中間のグリフは本来あるべき位置からずれてしまっていました。
  - リストに変更を加えるたびに、最初に戻るという動作には問題がありました。
  - ヒントに関する各種の修正: ヒントの変更時に、文字の変更フラグを立てるべきでした。グリフの変更時に、それを参照するすべてのグリフにはヒントが古くなったという表示をフォントビュー内で行うべきでした。今まで、文字ビュー内での貼り付けと変形を行った時には、ヒントを保持するべきではありませんでした。
  - ff を複数レイヤ使用可能な状態でコンパイルした時、「置換を適用」がひどく壊れていました。
  - 「カーニングペア」ダイアログを閉じる時に、壊れたメモリを参照していました (それにより時々クラッシュしていました)。
  - ff は、フォントに命令が含まれているか否かに基づいて 'gasp' テーブルをフォントに追加するかどうかを判断します。ff で作った TTF ファイルは .notdef に命令を含んでいますが他には誰もそうしていないので、このチェックを行う時には .notdef を無視するようにしました。
  - simplify() がとんでもない結果を返すのを禁止する試みをもう 1 つ追加しました。
  - 「サイドベアリング」ダイアログに負の値を与えた時、(実際に文字幅が負であるかどうかを問わず) 「文字幅が負の幅である」という文句を表示していました。
  - $italicangle が、スクリプトに実数を付け加えて以来壊れていました。
  - カーニングクラスダイアログが、削除されたクラスを正しく扱っていませんでした。
  - ヒントのアンドゥ機能を追加。
  - またもや、Windows でのブラウザ起動が壊れていました。
  - エンコーディングの names 配列内のインデックス作成の際に、(文字をスクラッチから組み立てるとき) 境界チェックを行っていませんでした。インデックスが巨大だと、結果はゴミとなり、一般にはその後しばらくしてクラッシュを引き起こす結果となっていました。
  - 1 個の点だけを含む開いたパスが存在すると、「参照に置換」の実行時にクラッシュを引き起こしていました。
  - Mac 上で、スクリプトからの PostScript リソースフォントの生成がうまく動いていませんでした。
  - Werner は、FontForge が出力する AFM ファイルがまだ「PfaEdit で作られた」と表示していることを指摘しました。ありゃ。
  - ユーザ定義のエンコーディングを正しく構文解析しておらず、よく最初のグリフを落としていました。
- 2005年6月24日
  - 印刷時の Type42 フォントの扱いを改良。
  - 壊れた CFF ファイルの解析時にクラッシュするのを修正。
  - 驚異の三重バグ:
    - Adobe の Tech Note 5176 (CFF フォーマット) によると、プライベート辞書は必須です。これは、Type1 フォントには必ず必要という意味です。
    - そういうわけで、CID CFF フォントに空の項目を 1 個含んだプライベート辞書を置くことにしました。
    - ghostview は空のプライベート辞書項目を発見し、たとえそれが長さ 0 であってもデータを読み込もうとします。
  - CFF フォントの読み込みに必要な PostScripto コードを、書き出される CFF フォントに追加。
  - 表示ダイアログの未初期化変数をいくつか修正。
  - CID フォントを印字する時に、DSC ページを正しく獲得していませんでした。
  - Palm 出力ルーチンで出力した、デフォルトの (notdef) グリフにはちょっと不安定なところがありました。
  - SFD 処理ルーチンの中のランレングス圧縮画像読み込み部に 1 ずれエラーがあり、画像を読み込めないことがありました。
  - Mac の NFNT リソースから空のグリフを読み込むとき、メモリを使いすぎていました。
  - 最初にフォントビューウィンドウを開くまでのデフォルトの背景色をしばしば正しくセットしていないことがありました。具体的には、ウィンドウを開く前に (つまり、コマンドラインで指定して) グレイスケールビットマップを開いたときに、ビットマップの clut フィールドが適切な背景色の相対値にならず、白色からの相対値で表示されていました。
  - sfnt に含まれる不正なビットマップのデータ片に対する防御を行うコードをいくつか追加。
  - OTF フォントでは、一般に vhea および vmtx テーブルが正しく出力できていませんでした (残り全文字用の縦書きメトリックが残り全文字用の横書きメトリックとたまたま一致する場合を除いて)。CID の hmtx 書き出しルーチンも修正。
  - CID キー指定フォントの読み込み時に、SFD 読み込み部が、用字系/言語インデックスを誤った場所から読み込んでいました。
  - くそ。デフォルトの出力 (標準出力) の符号化方式が、スクリプトから全く初期化できてなかった。
  - 名前と、Unicode の符号位置に基づいた文字符号に食い違いがあることに、2, 3 ヶ月前から気づいていました。残念なことに、名前のみに基づいて (必要なら必要ならデフォルトの名前を生成して) いるものの、文字符号のみを保存していました。このパッチは、文字符号が環境設定フォルダに保存している場合であっても、それらを区別するようにします。
  - AddAccent は、グリフ名を与えたときと Unicode 符号位置を与えたときで振舞が異なっていました。グリフ名を与えた場合、指定されたグリフを使用します。Unicode 値を与えた場合、指定されたグリフを常に使用するとは限らない不可思議な検索を実行します (これは、seac が使えるように Adobe 標準エンコーディングをグリフ内で使用することが重要だったころから残っていました)。
  - 複合グリフのデバッグ時に、あるグリフから別のグリフに移ったことを ff が検出するのに失敗し、命令リストを新しいグリフの物に再設定できないでいました。
  - 3 次から 2 次へのスプライン近似に問題がありました。オリジナルと近似結果のスプライン比較をより注意深く行うようにして修正しました。
  - カーニング (およびアンカー位置指定) が、PDF への出力時に動作していませんでした。
  - Won-kyu Park は、ff 内蔵の UTF-7 パーサ (sfd.c の奥深くにある) が、ff の出力した UTF-7 文字列しか読み込めないことを指摘しました。彼が Python で生成した UTF-7 文字列を挿入したところ、ff は読めませんでした。彼はこの問題を解決するパッチを提供しました。
  - 不正な 2 次スプラインが得られた時、妥当と言えば言えなくもない形に補正することにしましょう。そうすれば哀れなユーザがエラーとなることもなくなります。
  - Type42 ヘッダの余計な "-" を削除。
  - アンカーダイアログが完全に壊れていました。
  - 「ATTを表示(S)」内での、置換の全要素が存在するかのテストが、末尾にあるスペースの処理に失敗していました。
  - 「ATTを表示(S)」で Up/Down キーが動作するように変更。
  - 単純かアルゴリズムがうまく収束しないことがたまにありました。
  - TFM ファイルの生成時に幅 (高さ、深さ、ic) テーブル が 2 回縮尺変換されていました。
  - 2 次スプラインの移動時に発生する NaN を除去。
  - おっと、グリフ情報ダイアログ内で指定できる Unicode 符号位置が BMP に制限されていました。
  - グリフが順番に並んでいないフォントを Werner が送って来ました。この場合、グリフの大きさは loca[i+1]-loca[i] では求められません。それにも関わらず、データは確かに正しいのです。そういうわけで、この特殊な場合のための警告を追加しました (今までも警告を出力していましたが、その状況に合った意味の警告ではありませんでした)。
  - 「表示(V)→ATTを表示(S)」がマーク接続クラス情報を認識し、クラスを表示できるようにしました。
  - 2 次アウトラインのフォントを補間する時、2 つのデザインが一致しない箇所で、不正なスプラインを生成するようなエラーが生じる可能性が多数ありました: パス上の点の個数が異なるということは、端点における制御点の個数が (片方のデザインで輪郭の端に達し、もう片方ではそうでない場合) 異なるということでした。異なるデザインがあるときには、(制御点を持たない) 直線を補間すると、曲線が生成される結果となり、これがまた汚い出力を得る結果となっていました。
  - ドラッグ&ドロップが壊れていました。
  - 照合フラグが (GDEF で定義された) マーク接続クラスをサポートするように拡張。
  - AddAccent スクリプトコマンドにおける引数の型チェックが誤っていました。
  - 輪郭の最初の点に flex ヒントがある稀な場合に、無限ループに陥っていました。
  - 「フォントを併合」コマンドがクラッシュを引き起こしていました。
  - 裸の CFF フォントの解析に伴ういくつかの問題を解決。
- 2005年5月2日
  - マーククラスのサポートを追加。
    - 作成のためのペインをフォント情報ダイアログに追加。
    - 使用するためのフィールドを機能タグダイアログに追加。
    - 入出力ルーチン
  - ドラッグアンドドロップが壊れていました。
  - ヒントつきの OpenType フォントを出力する時に、幾つかの異常な場合に無限ループに陥っていました。
  - フォントの統合(M) コマンドが壊れていました。
  - スクリプトコマンド: AddAccent の引数型チェックが誤っていました。
  - ff は、いくつかの裸の CFF フォントの読み込み時にエラーを起こしていました。
  - prefs ファイルにフォントビューサイズの望ましいサイズを格納するようにしました。
  - Mac のダイナミックローダが Fink ライブラリを探せるように小細工を行いました。
  - CFF の CID キー指定フォントの解析に問題がありました。
  - コードページ 932 が SJIS の一変種であると認識するようにしました。
  - 機能タグ 'nutf' は 'afrc' の廃止された名称でした。
  - 2 個のスクリプト関数を追加
    - 実数/整数/Unicode 引数を整数にキャストする Int()
    - 実数/整数/Unicode を Unicode にキャストする UCodePoint()
  - スクリプトの CharInfo が、問い合わせられた文字を作成しないようにしました。
  - WorthOutputting/DrawsSomething を現在の選択範囲に適用することができるようになりました。
  - FreeType ラスタライザを使用時に、開いたパスを自動的に閉じないようにしました。
  - SCWorthOutputting において、!widthset と width==em-size の両方をチェックしていました。em-size のチェックを削除しました。冗長でしょうし、時には (マークに関して) 誤っている個とがあるからです。
  - 各種の FindBounds ルーチンは、ストロークの太さだけの余裕を取っていませんでした。
  - Auto[tT]race コマンドのスペリングに文書とコードで違いがあったので、どちらも受け付けるようにしました。
  - PS インタプリタにデバッグ文が残っていました。
  - ja ロケールではヘルプコマンドが日本語の文書を探すようにしました。
  - SelectFewer() スクリプトコマンドを追加。
  - カスタムエンコーディングに関するいくつかの問題を修正。
  - バックスラッシュによる継続行で、'\r' と '\r\n' を改行としてサポート
  - 日本語 UI の新バージョン
  - カーニングペアダイアログが、ペアの 2 番目の文字を検索中にペアを表示できないことがありました。
  - いくつかのスタイル名のデンマーク語の翻訳。Anders Lund に提供いただきました。
  - SJIS エンコーディングに関するいくつかの問題を修正
  - 点の情報ダイアログが、数値以外のものを入力すると全く使えなくなっていました。
  - デバッグモードではポインタ位置をピクセルベースで表示するようにしました。
  - 点の情報ダイアログに、2 次スプラインに関する問題がありました。
  - デバッグウィンドウのヒント命令ペインが、そこにないはずのキーストロークを解釈していました。
  - Peter Selinger が potrace のビルド方式を変更し、cygwin を使うのを止めました (代わりに MinGW を使用しています)。つまり、(Windows では) /tmp は cygwin の仮構なので、ff は一時ファイル名を '/tmp/foo' として渡せなくなったというわけです。そのため、Cygwin の /tmp にファイルを書き出すのは従来通りですが、そのディレクトリに cd してから裸のファイル名を渡すように変更しました。
  - PUA に割り当てられたギリシャ語のスモールキャップスをいくつか追加しました。
  - デバッグウィンドウにスクロールバーがなかったので追加しました。
  - どの TTF 命令を使用しようとしていて、何を行おうとしているのかを説明する「命令の説明」ウィンドウを追加しました。
  - キリル文字のブリーブつき文字を構築するのに誤ったアクセントを使用していました。
  - Adobe による私用領域の定義を libgunicode から削除し、FontForge に置きました。
  - ff には、存在しない文字を使用するカーニングペアを含む PFM ファイルの読み込みに問題がありました。
  - レジスタビューに、em あたりのピクセル数を追加しました。
  - トワイライトゾーンには輪郭はありません。
  - TT フォントの出力時に、'head' フラグのビット 8 をセットしていませんでした。これは、em あたりピクセル数が整数でない時に問題がありました。
  - Adobe standard に符号化方式を変換した時 (またはグリフ名のほうがコードポイントよりも重要なすべての場合)、コードポイントでなくグリフ名を使用するようにしました。(ですから AdobeStd では "f_i" ではなく "fi" が存在します。ですがそれらは同じコードポイントにマッピングされます)。
  - デバッグウィンドウを命令を含まないグリフ内で開いたとき (または 'gasp' によってヒントづけがオフになっているとき)、それをラスタライズしていませんでした。
  - いくつもの場所で、用字系/言語の個数を数え間違えていました。
  - おっと、座標変換ダイアログとメニューの両方で、"整数に丸める" という文字列を使用していました。それをメニュー表示にあるように変更した時に、変換ダイアログでは適切でない置き換えを行ってしまっていました。ダイアログでのみ使用する新しい文字列を追加。
  - Tavmjong Bah が "ypogegrammeni" リストに何かを追加しました。
  - 同じウィンドウに含まれる複数のテキストフィールドがすべて (インプットメソッドの) 入力コンテキストを必要としているときの問題を修正。
  - 出力に価しない合字に対して morx の合字コードを生成していました。
  - Pierre Hanser が、最近の SetWidth の変更がスクリプトの SetWidth コマンドを壊していることを指摘しました。
  - 重複除去から丸め処理のエラーを除去するためのさらなる努力。制御点が僅かなオーバーシュートを起こしていると、端点に非常に近い所に思わぬ極大値ができていました。あまりにも近いとこれが問題を起こす可能性があります。これが起こらないように制御点を微調整します。
  - Solaris は isnan とその類似品を math.h ではなく ieeefp.h に格納しています。
  - 標準数学関数 (三角関数, exp, log) へのスクリプトアクセスを追加。
  - 実数への単項マイナスが正しく動いていませんでした。
  - ビットマップビューの「ビットマップの再計算」ボタンは、カーソル位置を更新した時に破壊されていました。
  - CharInfo("BBox") がゴミを返していました。
- 2005年3月9日
  - クラスによるカーニング指定に含まれるクラスを削除するとクラッシュする問題がありました。
  - Palm ビットマップフォントのある程度のサポートを追加。
  - 参照による置換では、最初のインスタンスしか置き換えていませんでした。
  - Apple および OpenType モードに関して、オプションダイアログが変な動作をしていました。
  - 矛盾するヒントをもち、最初の輪郭にヒントが含まれないグリフが与えられたとき、Type2 出力においてグリフが正しい位置に比べ変にずれて描画されていました。
  - スクリプトから OpenType フォントを出力する際、フラグを指定するとき、座標値を整数へ丸めるフラグ指定が無視されていました。
  - スクリプトからデフォルトのフラグ設定でフォントを出力するとき、常に AFM/TFM/PFM ファイルを出力していました。
  - ストロークフォントのグリフ取り込みコマンドが正常に動作するのはマルチレイヤのときのみであることを狩野が指摘しました。
  - EPS ファイルに、プレビュー用のビットマップを追加。
  - ビットマップのみのフォントでは、フォントメトリックメニューの項目は予想外の振舞をしていました (ビットマップフォントでなく、PostScript フォントとして参照されたかのように振舞っていました)。
  - ストロークフォントへのEPS ファイルの取り込みがより良好に動作するようにするための多数の修正。
  - フォントビューで FreeType を使わないようにするための環境設定項目を狩野がリクエストしました。
  - 重複除去における丸めエラーの追加修正。
  - 任意の 4 次式の根を求めるルーチンのいくつかの問題修正。
  - 単純化コマンドのコブを取り除くオプションが、メモリを破壊していました。
  - 重複除去処理は、隣接するスプライン間に非常に小さな重なり合い生じるような制御点があると不幸な結果をもたらしていました。
  - フォントビューでのやりなおし処理がたびたびクラッシュを引き起こしていました、。
  - MakeLine スクリプトコマンドを狩野が提供。
  - Type3 (マルチレイヤ) を使用可能にしていないとき、関数が何も返さないことによる制御の氾濫がありました。
  - エラー回復ファイルに複数レイヤマスクが含まれておらず、奇妙な振舞いやクラッシュを引き起こしていました。
  - フォントをマルチレイヤフォントに変換するとき、アウトライングリフウィンドウが開いているとクラッシュを引き起こしていました。
  - スクリプトのエンコーディングを常に UTF-8 と見なすように変更。
  - Export スクリプトコマンドがフォーマットを引数で指定できるように変更。
  - スクリプト言語への実数サポートの追加。
  - NearlyHv{Cps,Lines} スクリプトコマンドは、引数が多すぎるというエラーを誤って出していました。
  - OTF 文脈依存の合字の出力部分にバグがありました。
  - 壊れたフォントファイルの解析処理で無限ループが起こる各種のバグを修正。
  - ユーザ定義のエンコーディング処理に問題がありました。
  - 仮想データ型 "real" を double に typedef しても動くように変更。
  - スクリプトで文字列を += で結合した時にメモリを破壊していました。
  - -c <arg> 構文に問題がありました。
  - フォントタイプ検出ルーチンが、バイトオーダ識別文字で始まる SVG ファイルの検出に失敗していました。
  - Ord は、2 番目の引数の型が正しいかのチェックを正しく行っていませんでした。
- 2005年2月9日
  - ff の内部データ構造を FreeType でラスタライズするために、FT_Outline_Get_Bitmap をしよう。フォントビューとメトリックビューでは (いくつかの場合を除き) FreeType をデフォルトに変更。
  - FreeType をラスタライズに使用するように指定したとき、マルチレイヤフォントではビットマップダイアログが動いていませんでした、。
  - ある輪郭が別の輪郭の内側に入れ子になっている時、内側の輪郭を選択して「重複部分を除去(E)」を呼び出してもその輪郭が除去されませんでした。
  - PostScript の取り込み時には、[]アウトラインの向きを修正(C) チェックボックスが何の役にも立っていませんでした (と言うか、修正はしていたのですが、後で取り消されていました)。
  - ビットマップのみのデータでは、文字幅の線を移動しない場合には作成されたビットマップは失われていました。
  - スクリプトコマンド "SelectByColor" の追加。
  - 出力する意味のないグリフには座標変換を適用しないように変更。
  - 2 次スプラインの制御点を、「情報を得る(I)」ダイアログで数値入力して移動した時の処理に問題がありました。
  - Type42 サポートを追加した時にマルチプルマスターサポートを動かなくしていました。
  - Type1 フォントのファイル末尾に改行を付け加えるためのパッチを Werner が提供しました。
  - PaintType == 2 およびストロークフォントのサポート。
  - 近い値のまとめ処理の多数の問題を解決。
  - おっと、なぜかパッチが逆戻りして、iconv のないシステムで動かなくなってました。
  - Mac での設定問題が他に 2, 3 あったのを直しました。
  - ヘッダのないライブラリをインストールしている人がたまにいます。備えておくようにしました。
  - Uniscribe (MS の Unicode テキストレイアウトルーチン) は、用字系によって GPOS または GSUB テーブルの存在を無視することがあり、場合によっては GPOS/GSUB に適切なデータがないとフォントの仕様を完全に拒否する可能性すらあります。ヘブライ語フォントは GPOS と GSUB の両方を含んでいる必要があります。どちらかがフォントに含まれていないとそれは使用されません。ラテン文字のフォントはどちらも含んでいる必要はありませんが、GSUB が含まれていないと、GPOS は使用されません。

    そういうわけで、GPOS/GSUB 両テーブルの GPOS/GSUB は、(現在存在する字形処理に関わる文字だけでなく) フォント内に含まれる全ての文字の用字系を含んでいるべきだということになります。

  - AddATT スクリプトコマンドは Nested を理解していませんでした。
  - コマンドライン引数 "-c" を、引数でのスクリプトコマンド直接指定を導入するために追加。
  - FF を iconv の載ってない Solaris で実行した人がいます (iconv はデフォルトで入っているので、不思議な話です)。FF はちゃんと動きました (もっと不思議です。ライブラリを要求しなかったのはなぜでしょう?) が、存在しない変換ルーチンを使おうとした時にクラッシュを起こしていました。
  - ASCII とのもう 1 つの対応 (0xe0000-0xe007f) を Unicode に追加。
  - ユーザが自分自身の OtherSubr ルーチンを提供することができるようにしました (Adobe の著作権に縛られたくない人々がいるからです)。
  - 相対ファイル指定によって読み込んだフォントの識別処理コードが動いていませんでした。
  - 「極大点の追加(X)」コマンドを変更し、以下の場合のみ点を追加するようにしました:
    1. スプラインの長さ ≧ em_size/32 である
    2. スプラインの極値が、そのスプラインを含む曲線全体の極値である

    (アウトラインビューで範囲選択を行っているときのふるまいは今までと同じです。ですから、あるスプラインの端点が両方選択されているときは、スプラインの長さに関わらず、全ての局所的な極値がスプラインに追加されます)。

  - UniqueID のないフォントの構文が誤っていたのを Ralf Stubner のパッチにより修正。
- 2005年1月17日
  - アウトラインビューで、CapsLock キーを押していると矢印キーで画面スクロールできるように変更。
  - Type2 フォントを出力したときに、重なり合わないヒントを含む別グリフへの参照を含むグリフからヒントの個数が失われていました。運が悪いと、<間違った個数+7>/8 が <本当の個数+7>/8 と違う値になり、charstring 内にゴミデータが書き出される結果となりました。
  - TeX のメトリックを格納する TeX テーブルを追加。
  - TFM 出力が間違っていました。TFtoPL の文書には " と書いてあります。
  - Original エンコーディングに符号化方式を変換するとグリフテーブルの文字数が 1 個少なくなることがあり、その結果としてゴミを読み書きしたり、クラッシュしたりしていました。
  - BDF フォントからのグリフ名の読み込みにあった 2,3 の問題を狩野が修正しました。
  - 狩野は、"Point" を長さの単位「ポイント」と幾何学的対象「点」に訳し分ける必要がありました。
- 2005年1月16日
  - OpenType デバイステーブルのサポートを追加 (これらのテーブルを使って、特定のポイントサイズのカーニングなどの微細な補正が出来るようになりました。小さなサイズではカーニングや送り幅が丸められた値が不愉快な結果をもたらすことがよくあります。デバイステーブルを使うと、それを修正することができます)
  - カーニングペアとアンカーに関するダイアログを追加し、ユーザがデバイステーブルを追加できるようにしました。カーニングクラスの拡張ダイアログがそれです。
  - ラテン文字のフォントに適用されない Panose 値に関するパッチを Neil Parker が提案しました。
  - Mac 上で、1 個の点に対して「情報を得る」を行うとクラッシュを起こしていました。
  - 合併(M)および単純化(S)コマンドが使っているスプライン近似をさらに改良しようと試みました。
  - 単純化(S)で使用している平行の定義を緩やかな物にし、直線以外の物を合併できるようにしました。
  - 「さらに単純化」のふるまいをフォントビューとアウトラインビューで一貫性のある物にしました。今や、将来の「単純化」コマンドとして「更に単純化」をデフォルトのふるまいとして品質上差し支えないでしょう。
  - em ユニットの 100 分の 1 に丸めるコマンドを追加。
  - 座標を同じ値にまとめる新機能を追加。重複除去の前処理として役立ちます。
  - TFM ファイルから合字データを読み込む処理にバグがありました。
  - GPOS の 'size' 機能のサポートを追加。フォント情報ダイアログに「サイズ」タブを追加。
  - 「参照に置換」には興味深い欠陥がありました。黒丸文字と白丸文字があったとしましょう。黒丸の (1 個しかない) 輪郭が、白丸の外側の輪郭と一致したとすると、それは参照で置き換えられます。しかしこれは誤りです。なぜなら、白丸の 2 個の輪郭を 1 個の単位として扱わなければならないからです。
  - フォントビューで選択範囲を広げるためにマウスをウィンドウの外側に移動しなければならないとき、不正なメモリ参照を起こしていました。
  - ファイルが存在するかどうかを返すスクリプト関数を追加。
  - Type1 フォントでは、あるグリフに衝突するヒントが存在せず (なおかつ flex ヒントが存在せず)、それがサブルーチン内に存在したとき、ヒントが完全に失われていました。
  - フォーマット 12 の cmap サブテーブル (Unicode の非 BMP 対応のテーブル) をより積極的に出力するようにしました。
- 2005年1月6日
  - メッセージなどの著作権表示を更新。旧称 PfaEdit に関するメッセージを削除。
  - 2 次スプラインで単純化コマンドが変な結果を出していました。
  - 直線と曲線の接点 (曲線の開始点) の単純化に問題がありました。
  - 曲線の開始点を曲線上の点に変換したとき、一般に予想外の結果を引き起こしていました。
  - ユーザが、2 本の交差する反対向きの輪郭を重複除去処理に渡したときに、警告処理を出すようにしました。残念ながらその他の場合にもこの警告が出てしまうことがあります。
  - 12 月 18 日に加えた重複除去処理への変更により、ある稀な場合 (2 本のスプライン間の距離を求めるときに傾きが 0 の場合) に無限ループを起こすようになってしまっていました。
  - スクリプト処理で条件演算子 (&& や || など) の 2 番目の引数が評価されず、そこに手続き呼び出しが含まれていた場合、ff はクラッシュしていました。
  - 「点の情報」ダイアログが、小さなオフセットをよりよく表示できるように微調整。
  - 小さなスプライン部品を合併するときによりよく動作するように 合併(M) コマンドを微調整。 (スプライン部品の長さが非常に小さく、事実上長さ 0 のスプラインと見なすべきときは、傾きを無視します)。
  - アウトラインビューに「選択範囲を反転」コマンドを、林芳樹の提供により追加。
  - フォントビューからの貼り付けはグリフの命令をクリアしていませんでした。
  - 自動ヒントづけの新バージョン。斜交ステムヒントと最小距離ヒントをを削除しました。
- 2004年12月31日
  - ああ、Windows の PFM ファイルは、メトリックを PFB ファイルでの定義順ではなく、Windows のラテンエンコーディングの順序で出力されると想定していました。(実際にはエンコーディングは他のものである可能性もありますが、何も文書化されていないので、それを無視せざるを得ません。)
  - ReplaceWithReference は、ある種の点で壊れることがわかりました。
  - ReplaceWithReference() スクリプトコマンドに、ユーザが許容できる誤差の量を指定できるように 2 個の引数ペアを追加。
  - Type 1 フォントを出力する時、あるグリフに、Adobe エンコーディングに含まれないグリフへの参照があり、そのグリフ自身に (Adobe エンコーディング内の) 単一参照があったとき、ff は Adobe エンコーディングへの参照を行い、スプラインを無視していました。
  - Adobe-Japan1-6 への更新
  - SVG 出力の各種の修正
    - グリフの SVG 書き出しが動いていませんでした。
    - マルチレイヤフォントの出力に問題がありました。
  - Type2 フォントでは、ghost ヒントがグリフのバウンディングボックスをはみ出すことがありました。
  - TrueType ユニーク ID 文字列を出力した時、日付が1ヶ月ずれていました。
  - マルチレイヤモードでの点線サポートの追加。
  - ページ全体にグリフを印字するとき、グリフが本来あるべき場所から僅かにずれていました。
  - マルチレイヤフォントに参照を貼り付けたとき、とてもおかしなレイヤデータができていました。
  - ff は、ユーザがマウス中ボタンで選択内容を貼り付けたときにメトリックビューの更新をしていませんでした。
  - 文字が現在のエンコーディングの中に存在しない場合、ff は (それがフォント内に存在しても) メトリックビューで表示していませんでした。
  - 開いたパスの端点にある制御点のふるまいをより納得のいく物にしました。
  - 「点(P)→曲線(C)」コマンドは、制御点を正しく補正していませんでした。
  - 「表示(V)→置換グリフを表示(U)」にはいろいろ問題がありました。
  - Unicode におけるアクセントの包摂に伴ういくつかの問題を修正しました。セディラが下につくことになっている文字の多くが実際の処理ではカンマを用いており、キャロンを使用すると言われている文字が実際にはカンマを用いていました。アポストロフィつき n の文字をアクセントつき文字に変更しました。
  - 直線は (後で直線ではなくなるため) 一般に単純化してはならないと Werner が指摘しました。この知識を単純化コマンドに導入しました。
- 2004年12月18日
  - ラスタデバッガウィンドウを追加。
  - デバッガが起動するたびに、前回デバッガを使った時にどのウィンドウが開いていたかを思い出すようにしました。
  - ペンツールの限定が意図通りに動いていませんでした、。
  - 1 個のフォント内で同じグリフに 2 個 (乃至それ以上) の文字符号が割り当てられていた場合、OpenType (および、おそらくビットマップのみのsfntも) の生成時に、2番目のエンコーディングの後にある全てのグリフの幅がが間違った値になっていました (すなわち、水平メトリックテーブルに、二重符号化されたグリフの (存在しない) コピーに対応する余計な項目が hmtx テーブルに含まれていました)。
  - Type1 フォントに .notdef グリフが定義されていないにもかかわらず、Encoding ベクタで 2 回以上使われていた場合、ff はクラッシュしていました。
  - 日本語 UI の更新 (狩野による)
  - BMP に収まらないインデックスを isalnum (など) に与えることに関連するいくつかのクラッシュを Werner が発見しました。
  - 重複除去のさらなる変更 (改良であることを願います)
- 2004年12月13日
  - デバッグウィンドウのラスタ表示をいくつか修正
  - 3 次→ 2 次変換には、-O2 によって生じる丸めエラーがありました。丸め誤差により寛容であるように修正。
  - 点の情報ダイアログに、現在の輪郭を歩いて回るための 2 つのボタンを新設 (通常、[次]ボタンは現在の輪郭の最後の点にいる時には次の輪郭の先頭に移動しますが、[同じ輪郭上の次の点]ボタンは輪郭上の最初の点に戻ります)。
  - ある種の Type 3 フォント (Fontographer 4 で出力されたものを含む) に対応する改良
  - レイヤパレットでのニモニックによるクラッシュを修正する林芳樹のパッチを当てました。
  - Rand() スクリプトコマンドの追加
  - スクリプト内での行分割のための行末のバックスラッシュのサポート
  - Adobe Standard エンコーディング
  - カラー/グレーを指定した Type3 フォントが動作していませんでした。
  - 140 ポイントでの印字時に、3 文字しか表示できないにもかかわらず 4 文字印刷しようとしていました。
  - インストール時に、pkg-config に FontForge のバージョンを教えるようにしました。
- 2004年12月3日
  - CFF ファイルに文字符号をもたないグリフが含まれていた場合、ff が読み込み時にクラッシュしていました。
  - 3 次から 2 次スプラインに変換したとき、ff はスプラインを置くべき場所に直線を作成していることがしばしばありました。
  - TTF グリフのデバッグ中に、現在のスプラインが使用されていた場合、ラスタライズ処理がどのような結果となるかを表示するようにしました (変更されるピクセルをハイライト表示)。
  - デバッガウィンドウは、"<空>" を表示すべきときに必ずしも表示していませんでした。
  - デバッガウィンドウを 2 回目に閉じたときにクラッシュが起きていました。
  - ".notdef" の属する用字系を調べるときに、割り当てていないメモリを参照しようとしていました。
  - デバッガ内で制御点をラベルづけしていませんでした。
  - TTF のデバッガとグリッド合わせ機で、曲がったスプラインを直線として表示していました。
  - em サイズの変更値にカーニングペアが尺度変換されていませんでした。
  - ユーザがグリフウィンドウで文字キーを押したときにその文字に自動移動しないようにできる環境設定項目を追加しました。
  - グリフウィンドウが最近開いた 2 個のグリフを行き来できるコマンド (簡易ヒストリ) を追加。
  - 点のデバッガウィンドウが以下の情報を表示できるように改良。
    - 暗黙の点 (2 個のオフカーブ点の中点)
    - 点が曲線上の点またはオフカーブ点 (通常または制御点) のどちらか
    - スクロールバーの追加
  - マウスを点の上に置いたときに、点のデバッグ情報を表示するようにしました。
  - 割り当てられていないメモリの (無害な) 参照を修正。
  - 解釈されないテーブルを SFNT 中に挿入できる機能を追加
    - 新しい環境設定項目: PreserveTables。これは、SFNT ファイルから解釈せずに読み込むテーブルタグのカンマ区切りリストです (ff がそのテーブルを解釈可能だと判断した場合には、そのテーブルを保持せずに解析することにご注意ください)
    - スクリプトコマンド LoadTableFromFile("tag ","filename")。
    - スクリプトコマンド SaveTableToFile("tag ","filename")
    - スクリプトコマンド RemovePreservedTable("tag ")
    - スクリプトコマンド HasPreservedTable("tag ")
- 2004年11月22日
  - 新しいスクリプトコマンド DrawsSomething() を Kevin Schoedel が提案しました。
  - PrintFont 関数が (サンプルファイルでなく) 引数で与えた文字列サンプルを印字できるように Kevin Schoedel がリクエストしました。
  - Mac のリソースフォークに詰め込まれた Type1 フォントは、ファイル順でなくリソース順に読み込まれるようになっている (しばしば両者は同一です) ことを Kevin Schoedel が指摘し、これを修正するパッチを作成しました。
  - フォント情報(F)→[TTF名]で、デフォルトの言語/ロケールを抽出する方法を変更。
  - どのパレットが隠されており、どれがそうでないかを (次の呼び出し時にも) 覚えているようにしました。
  - PostScript 文字列を読み込むときに NUL 文字を無視するように変更 (PS は NUL が含まれる文字列をサポートしていますが、面倒なので私はやるつもりはありません。し思わい、それによって文字列を正しく解析できないのは困ります)。
  - ff は、スクリプトで Select("U+xxxx") または Select("=") を行う能力を失いました。
  - おっと、PostScript の FontName を TTF ファイルから読み出すルーチンが、エンコーディング処理の書き換えで壊れていました。
  - TTF ファイルに、あるグリフの後ろにさらなる構成要素が存在することを示すフラグの設定された、エラーのある複合グリフが含まれていた場合、データが使い尽くされ、ff は命令を読み込もうとして問題を起こしていました。
  - フォント内に、特定の文字列に対して複数の同一言語の TTF 名が含まれていた場合、ユーザが望むものを選択できるようにしました。
  - 壊れた OTF テーブルが FontForge をクラッシュさせる例がまだありました。
  - TTF/OTF フォントに PostScript FontName 文字列が含まれていなかった場合に、ff が FullName/FamilyName のどちらかと同期しようとする処理で、名前文字列が正しいかどうかのチェックをしていませんでした。
- 2004年11月15日
  - ff を prefs ファイルのない環境で起動したとき、フォントの新規作成時にクラッシュしていました。
  - 著作権表示文字列に改行が入っているときに、ff は間違った PostScript を出力していました。
  - ユーザが空のグリフにコメントを追加しても、そのコメントは SFD ファイルに保存されていませんでした。
  - ff が UTF-7 文字列を SFD ファイルに (TTF 名などで) 保存していて、その文字列に base64 でエンコードすべき文字列の直後にハイフンが続いて出現していたとき、ハイフンが抜け落ちていました。
  - フランス語 UI の更新。
  - ff は (公式には) hhea テーブルの ascent/descent フィールドを 0 に設定していました。フォントを Mac で描画したとき、表示がクリッピングされて何も表示されていませんでした。 警告: 古い SFD ファイルはまだ壊れたままであり、これを修正するための UI は存在しません。その値を手で編集して、さらに以下のように書き換えなければなりません:

        HheadAOffset: 0
          HheadDOffset: 0

    を以下のようにします:

        HheadAOffset: 1
          HheadDOffset: 1

- 2004年11月12日
  - PostScript フォントが、Charstrings で定義されていないグリフ名をエンコーディングに含んでいたとき、ff がそれを開こうとしたときにクラッシュしていました (おそらく10月12日以来壊れていました)。
  - 重複除去処理のさらなる作業
  - グリフウィンドウ内で、ウィンドウの上端と下端の間で拡大・縮小された距離が 1 emユニットよりも小さい場合、垂直ルーラーの上下のラベルが逆転していました。
  - TTF の 'name' テーブル文字列の長さが、1023 文字までに限られていました。
- 2004年11月6日
  - エンコーディング処理の変更により、環境設定ダイアログが壊れていました。
- 2004年11月5日
  - 変更されたエンコーディング処理は libiconv のあるシステムでは動いていませんでした。
- 2004年11月4日
  - 新しいスクリプトコマンドの追加: 任意のグリフに任意のアクセントを追加するための AddAccent() コマンド。
- 2004年11月3日
  - このリファレンスマニュアルの日本語版を狩野が構築中です。
  - マルチレイヤモードで、「新規レイヤ」メニュー項目がダングリングポインタを残しており、背面レイヤを表示しようとしたときにクラッシュを引き起こしていました。
  - 複数レイヤモードで、レイヤパレットで最後のレイヤより後をクリックすると ff がクラッシュしていました。
  - レイヤパレットでクラッシュが起こるもう 1 つの場合のパッチを狩野が提供しました。
  - 新しい日本語 UI を狩野が提供しました。
  - CharInfo() スクリプトコマンドに、ユーザが特定の垂直位置における水平方向の極大値を知ることができる機能追加を行いました。同様の追加は、特定の水平位置での垂直方向の極大値に対しても行っています。
  - ユーザが貼り付け時にオフセットを適用できるスクリプトコマンド (PasteWithOffset) を追加しました。手動でアクセントつき文字を構築するのに使えます。
  - 新しいエンコーディング処理で起こる問題を解決するパッチを狩野が提供しました。
  - Select(".notdef") は一般に動作していませんでした。
- 2004年10月28日
  - ISO 15924 が更新されていたことに狩野が気づき、新しい用字系を含むパッチを提供しました。
  - ff が文字エンコーディングを内部的に扱う方法を書き直しました。今までは gdraw/gunicode に組み込まれたエンコーディングに依存していました。今後、iconv() を使用することにします (iconv が存在しない場合、ff は gdraw/gunicode 組み込みの符号化方式を理解するダミーの iconv を使用します)。エンコーディングは数字でなく名前によって識別されるようになります。
  - 極大値検出処理の追加修正。
  - 重複除去処理の追加修正。
  - スクリプトの RoundToInt に追加引数を追加し、丸め処理の単位 (例: 1/100, 1/10 など) を調節できるようにしました。
  - 殆んど水平・垂直に近い制御点または直線を検出し、それを強制的に水平・垂直に揃える 2 つの新規スクリプトコマンド NearlyHvCps() および NearlyHvLines() を追加。
  - GRadio.Font リソースがグリフビューのレイヤパレットも制御するようなパッチを狩野が提供しました。
- 2004年10月23日
  - 重複除去処理は、突然方向変化するスプライン (すなわち、極大点を発見した後に微小なスプラインが発生し、スプラインを極大点の間で分割した場合) の扱いに問題がありました
  - 重複除去処理がメモリを喰い尽くすことがありました。
  - ものさしツールは、すべての微小なスプラインを長さ 0 と表示していました。
  - 機能を含むグリフの自動回復に問題がありました (用字系/言語インデックスに関する問題があると表示していました)。
  - グレイマップフォントを拡大・縮小できるように狩野が望みました。
  - fvfonts.c と重複する fvcomposit.c, metricsview.c のルーチンを削除。
  - おっと、Mac のデフォルトファイルシステムは大文字/小文字を区別しないんでした。Windows の書き出し処理のパッチを Mac にも適用しました。
  - 単純化コマンドはあまりよい極大値検出ルーチンを持っていなかったので、たまに極大値を削除することがありました。
- 2004年10月14日
  - 微小なスプラインがあるときに重複除去処理に問題がありました。
- 2004年10月13日
  - メトリックビュー内のラベルが平行移動できないことに (Fontes & Codages を読んでいて) 気づきました。
  - 文字 (character) という単語をグリフ (glyph) に書き換えた方がよい場所は変更しました。
  - ウィンドウメニューのアウトライン/ビットマップ/メトリックコマンドを移動し、「…を開く」を「新規…」に書き換えました。
- 2004年10月12日
  - スペイン語の UI が、Walter Echarri のおかげで使用可能です。イェイ!
  - Type3 フォント (ff が出力したもの) の読み込みサポートが壊れていました。注意: ff は現時点でも多くの Type3 フォントを読み込めません (フィルタ処理を要するもの、または画像などを使用するもの) が、自分で書き出したフォントは読めるようにしておくべきです。
  - PostScript ファイルからの読み込み時の .notdef の扱いを少し変更しました (と思います)。
  - PDF ファイルへの印刷サポートを追加しました。
  - (書き出しコマンドからの PDF 出力のバグを修正。)
  - フォント情報ダイアログでマルチレイヤビットをオフにしたときに発生するさまざまな問題を修正。
  - さらに 2 個の文字列の厳密な区別を狩野が要求しました。
  - Type42 と Type 11 (Type42 CID) フォントの出力サポートおよび、Type42 読み込みのサポート (Type11 の読み込みまでは対応しないつもりです) の追加ならびに、2 次アウトラインのフォントを印刷するときにそれらを使うようにしました。
  - TrueType (および SVG) フォントの読み込み時に、PostScript フォント名が正しいかのチェックを加え (構文上不正なものも可能です)、不正な場合はユーザに警告して修正するようにしました。
  - 誰かが欲しがっているようですので、MM フォントの処理のためのスクリプトコマンドを追加しました。
  - ユニークフォント ID が TrueType 'name' テーブルに 2 個以上含まれているときに警告するようにしました。(OpenType メーリングリストで、それは 1 個しか存在するべきではなく、そうでなければユニークではないからです)。しかし Apple も MS も複数の Font ID を含むフォントを出荷しています。その真意は神のみぞ知るですが、またはどれか 1 個を選択してもらう必要があります…。それにも関わらず、エラーを警告に変更しました。
- 2004年9月30日
  - 重複除去処理を一から書き直しました。クラッシュが減ったように思いますが、他の点で品質が向上したかは疑問です。
  - 文字ビュー上では、重複除去 (および「重複部分を抽出」「交点を発見」) は選択されている輪郭、または輪郭を選択していないときはすべての輪郭に適用されるように変更しました。この変更により、これらのコマンドが文字ビュー上のほとんどの他のコマンドと一貫したふるまいをするようになりましたが、今までのふるまいとは違います。
  - スクリプトコマンド Import を、ユーザがストローク処理フラグ (方向の補正、重複除去、消しゴムの扱い) を制御できるように拡張しました。また、背景フラグをビットマップ以外のものに適用できるように拡張しました。
  - ff は、同じギリシャ文字の複数のバージョンを含むフォントを読み込んだときに、解放したメモリブロックを指すダングリングポインタが残っていました。
  - U+1D400〜U+1D7FF の範囲はラテンおよびギリシャアルファベットの、数学で使用される各種スタイルつきのグリフです。フォントビューで (グリフヘッダに) グリフの適切なスタイルを表示するようにありました (そのスタイルのフォントが見つかることが前提です)。
  - AMS (アメリカ数学会) は、Unicode の私用領域に対する独自の解釈をもっています。FF はそれらのグリフ名をそれらのグリフの別名と理解し、ff が新規に作成するフォントで AMS の解釈 (フォント情報→[エンコーディング]で) による名前を使用できるようになりました。
  - AMS の PUA にある文字の多くは別の場所にあるグリフを重複符号化したものです。FontForge はそれらの再符号化を自動的に生成します。
  - AMS は、いくつかの TeX グリフ名を どのように Unicode に対応させるかを定めています。これらの名前も我々の別名リストに取り込みました (これにより正しい対応づけができるようになりましたが、人々にこれらを使うように推奨するためではありません)。
  - AMS による PUA の定義と Big5 の定義の両方とも、Unicode の別の面に正規に定義された文字を BMP に割り付けています。ff はこれを理解できるようになり、BMP エンコーディングから完全な Unicode エンコーディングを行うときに、PUA から上位面にあるそれらの適切な符号位置に移動できるようになりました。
  - 問題点を発見ダイアログは、は、隣同士のスプラインは共通の端点で交差すると考えていました。私はそうだと思いますが、これは有益な情報ではありません。
  - 文字ビュー内では、マウスをウィンドウの外側に移動したときにステータスラインを消去していました。しかし一情報は正しいままなので、意味をなさない部分のみを消去するようにしました。
  - 英語では同じラベルをもっていても、日本語では異なる意味をもつ「垂直」と「縦書き」を区別するように狩野がリクエストしました。
  - 点(P)→直線に変換(L)コマンドは、2個の点のどちらかが前または次のスプラインをもたないときにクラッシュを引き起こしていました。
  - problems.c に対するパッチを Pierre HANSER が提供しました (今までは、32 未満のコードポイントを使用しているフォントを扱うとクラッシュしていました)。
  - フォントの合併処理に対するパッチを Pierre HANSER が提供しました (ビットマップフォントを合併するとクラッシュしていました)。
  - 連結表示したパレットをもつ文字ビューウィンドウを閉じるとき、マウスカーソルが、新しいカーソルを必要とする別の文字ビューに素早く移動するとクラッシュしていました。
  - 透視変換アイコンの背景が間違っていました。
  - ff が幅 0 のストロークを扱うやり方に対して、Piska にはまだ不満がありました。彼は、幅ゼロをもたせたかったのです (私は、表示が消えると思いました) が、PS は、デバイスが表示可能なもっとも細い線を引くように定めているのです (これが ff でどのような意味をもつかは明瞭ではありませんが、私は幅 1 em のストロークと解釈しました)。しかし METAPOST では、幅 0 のストロークを、輪郭を引かずに (塗りつぶしだけを) 行いたいときに使用していますので、幅 0 のストロークで塗りつぶしを行うときには、輪郭を引かないようにしました。
  - 端点において傾きが固定された点の集合を近似するのに、今までと違うアプローチを使うようにしました。(傾きの補正に) 最小自乗法を適用し、(傾きの補正に) 最小自乗法をもう一度適用していました。これからは、(傾きの補正に) 最小自乗法を適用し、最良近似が見つかるまで傾きベクトルの長さを微調整するようになります。
  - flex ヒントを出力すべきでないときに出力していました。ff が小さな円に対して flex を追加しないようなヒューリスティックを追加しました。
  - 長いフォーマットの pk ビットマップの読み込みができていませんでした。
  - スクリプティントコマンド Skew が分子/分母形式の引数をとれるように、Mchael Ghrken がパッチを提供しました。
- 2004年8月24日
  - Oops, didn't get the expand stroke scripting patch quite right
  - スクリプトでの環境設定項目の扱いを変更:
    - デフォルトで、スクリプト開始時に環境設定ファイルを読み込むことはなくなりました。
    - 環境設定は、ユーザが指定しない限りファイルに保存されなくなりました。
    - LoadPrefs() と SavePrefs() の 2 つの新スクリプトコマンドを追加。
    - ユーザが環境設定を読み込むかを設定できる FONTFORGE_LOADPREFS を追加。
  - DumpGlyphMap という環境設定項目を廃止しました。これと同じフラグを、フォント出力の [オプション] ダイアログに作りました。
  - SetPanose スクリプトコマンドが動いていませんでした。村岡太郎がパッチを提供してくれました。
  - 環境設定項目 NewCharset() を GetPref/SetPref スクリプトコマンドで獲得・設定することができていませんでした。GetPref は、SetPref の引数に使用できるマジックナンバーを返すようになりました。SetPref では、マジックナンバーか、Reencode() で使用可能なエンコーディング名のどちらかを使用することができます。
  - グリフからそのグリフに含まれていないグリフ機能をコピーを試みて、次にそれをペーストすると ff はクラッシュしていました。
  - アウトライン文字ビューに 2 個の新しいツールを追加しました。一つはグリフの 3 次元回転を行うことができる (それを XY 平面に再び投影した結果が得られる) ツールで、もう一つは透視変換を行うことができるツールです。
  - 3 次元回転 + 投影を処理するできるように、変換ダイアログを拡張しました。実際に加えたのはこれだけです:

    cos(Y軸の回転量) | 0
    0 | cos(X軸の回転量)

  - 本物の透視変換を行うための透視変換ダイアログを追加しました。
  - FONTFORGE_CONFIG_NONLINEAR フラグを削除し、非線型変換のダイアログを常に使用できるようにしました。透視変換を行うのに、その一部のルーチンが必要なためです。
  - (スクリプト内で) LoadEncodingFile を通る処理の流れに、失敗時に何も出力しないものがありました。
  - LoadEncodingFile はデフォルトの符号化方式を読み込んでいない時ですら、それを保存していました。それを行わないように変更したので、今後は SavePref を自分で行う必要があります。
  - フォントビュー内で単純置換を見る (そして撮影する) 機能を追加しました。
  - フォント情報ダイアログの周りの凹凸のあるボックスが正しい場所に置かれていないことがありました。
- 2004年8月8日
  - Zhang Lin-bo が 2 つのバグを報告しました (確かにありました)
    - パスが 1 個の点と、それ自身に戻る長さ 0 のスプラインからなる場合に、「輪郭を太らせる」の処理が失敗していました。
    - AddExtrema は、パスの最初のスプラインに局地を追加する必要がある場合、無限ループに陥っていました。
    - 「輪郭を太らせる」はある非常に説明しがたい条件化においてゴミを出力していました。
    - 屑データを与えると自動ヒントづけがクラッシュしていました。
  - CID キー指定フォントのための BDFMakeChar のパッチを狩野が提供しました。
  - ビットマップビューの諧調パレットを変更し、現在のカーソル位置の灰色の濃度を表示するようにしました。
  - 幅が非常に大きいと、それを移動した時に負の値に回り込んでいました。おそらく、その代わりに SHRT_MAX に固定すべきでしょう。
  - 文字幅を負の値に移動してマウスを離すと、それを警告するエラーメッセージがポップアップします。カーソルを幅の側で動かし続けると、移動はし続けます。
  - 文字幅を負の値に移動して、文字幅の警告に [いいえ(N)] と答えると、幅が誤った値に設定されていました。
  - ff は、シーケンス "{}" を含む PostScript が定義された最初の関数にあるとクラッシュしていました。
  - 香港のロケールを間違えていました。
  - 取り込みダイアログで (またはファイルを開くダイアログのどれであれ) 何も選択されておらずに [OK] を押した時、ディレクトリに戻るようにしました。
  - 取り込みダイアログのエラーメッセージを改良。
  - スペイン語版で、ダイアログのボタンが近づきすぎていました (他にも各種の同様な問題がありました)。
- 2004年8月8日
  - ff は amfm ファイルを正しく出力していませんでした。
  - カーニング情報の取り込み (メニュー項目とスクリプトコマンド) を変更:
    - PFM ファイルのサポート
    - 拡張子でなくファイルヘッダからファイルタイプを検出するように変更
  - スクリプトコマンド InterpolateFonts を追加
  - スクリプトコマンド GetEnv を追加
  - スクリプト疑似変数 $fontversion と $copyright を、fond 名の変更を追加した時に壊していました。
  - TFM ファイルに関するさらなる問題。
  - 異なる言語におけるダイアログの大きさに関する 2 個の問題を修正。
  - Windows 3.1 ではいくつかの中国語フォントは TTF バージョン 2 (1 でなく) で公開されていました。サポートしている TrueType/OpenType のバージョンに追加。(FreeType メーリングリストの議論を参照のこと。より詳しい情報が 2004 年 7 月分に)
  - カーニングと置換の情報をあるグリフから他のグリフにコピーするコマンドをメニューとスクリプトの両方に追加。
  - FontForge は一部の SVG フォントを正しく読み込めませんでした ("t" ディレクティブを、2 次スプラインで、暗黙の制御点を最後の点からの相対位置で指定しているパスで使用した場合)。結果は汚らしいごちゃごちゃでした。
  - Windows のファイルシステムは大文字/小文字を区別しません。書き出しに使用するファイル名は、グリフ名 (これは大文字/小文字の区別があります) を使用しています。そのため Windows では "a" と "A" を書き出すと、同じファイルを上書きすることになります。(大文字の前には区別のために "$" をつけることにしました)。
  - 角をドラッグした時には参照/画像を拡大/縮小しておらず、両辺を同じ比率で拡大/縮小していました (これは正方形では正しく動作しますが、それ以外では間違いです)。
  - XML では、たとえ実体参照による指定であっても、バックスペースを入力文字に認めていません。これは、SVG フォントではバックスペースに対して、Unicode の符号位置を指定することができないということです (そして、多くの TTF フォントは空白のバックスペース文字を指定しています。その理由は神のみぞ知るです。)
  - < !-- The Default ATT->Unicode decomposition didn't work. --> デフォルトの ATT→Unicode 分解は動作していませんでした。
  - デフォルトの ATTに、新規項目「大文字→小型大文字」を追加しました (そして、「小文字→小型大文字」を整理しました)。
  - 幅 0 のヒントを避けるようにしました。
  - 各国語版の Unicode グリフ名のサポートを追加しました (現在はフランス語のみが使用可能です)
- 2004年7月3日
  - ガイドレイヤでアンドゥを行うとクラッシュしていました (マルチレイヤを追加時以来)。
  - Type1 書き出し時のサブルーチン参照に関するもう 1 つの問題を解決。
  - hhea.ascent/descent といくつかの OS/2 値を保存するようにしました (これらに関する UI はありませんが、それらは保存されます)。
  - 狩野が 2 個のパッチを提供しました。
    - OS/2 テーブルの平均文字幅フィールドを正しく設定するパッチ
    - 'gasp' テーブルを設定して、Windows が実際に埋め込みビットマップを使うようにするパッチ
  - (アクセントを組み立てるときに) アクセントの大文字用とキリル文字用を探す処理をサポートしました (grave でなく grave.cap を、breve でなく breve.cyr を使用します)
  - (2 次スプラインモードで編集する時に) 点が順序正しくないときに、正しく並べ替えられていませんでした。
  - 文字に色が設定されている時、ユーザがそれを変更すると表示がおかしくなっていました。
  - チェックボックスにチェックがされているとき「×」印を表示するようにしました。
  - FF は、トノスをアクセントと見なすべきだと気づいていませんでした (幅のある文字であったため、ff を混乱させていました)。
  - nomen ファイルに含まれるはるか昔のメッセージを整理しました。かつて 3 個のバラバラな文字列を使用していたのを、フォーマット指定を使用するようになりました。
- 2004年6月18日
  - 2 次スプラインから 3 次に変換した時、点のタイプが正しく設定されていませんでした。
  - 環境設定項目のうち、保存されず、スクリプトからアクセス不可能なものがいくつかありました。
  - スクリプトで BDF フォントの解像度を設定できませんでした。
  - Type1 サブルーチンにおける参照への参照に問題がまだ残っていました。
  - 複数レイヤモードで、自動トレースに問題がありました。
  - 文字ビューで、"ItalicConstrained" がイタリック角に平行な制約だけでなく、垂直方向の制約された動きも可能になるようにしました。
  - ビットマップ文字が関係しているとき、アクセントつき文字の組み立てに問題がありました。
  - 最初の flex を避けるため、Type2 フォントでは SplineSet を無条件に回転できなくなりました。
  - 「問題点を発見」に 3 個の新しい問題点を追加。
    - 交差する交点をチェック
    - 同じ Unicode コードポイントをもつ複数のグリフをチェック
    - 同じ名前をもつ複数のグリフをチェック
- 2004年5月31日
  - 5 月 19 日のビルドで、制御点の値が NaN になるバグを持ち込んでいました。
- 2004年5月29日
  - MergeKern スクリプトコマンドに相当する機能が同等なメニュー項目にありませんでした。
  - カーニング情報を Mac の FOND リソースからパターンマッチで取得する機能を拡張しました (FOND には、スタイル名を保存する場所がないので、妥当な推測を行うのができる最善のことです)。
  - 2 次フォント (TrueType) を編集中に、点のタイプを曲線の開始点に変更すると直前の制御点が次の制御点と同じ場所に設定されていました。ボケ。
  - 新しいバージョンの libpng は自分が読み込まれたときに自動的に libz を読み込んではくれないので、libz を自分で読み込むパッチが必要になりました。
  - 文脈依存/文脈依存連鎖 ダイアログのバグを 2 個修正。
  - PostScript 配列の読み込み時に、FF は負の値の読み込みにつねに失敗していました。
  - NFNT を生成せずに Mac の PostScript リソースを作成するのをエラーとしました (こうするべきでしょう)。
  - OS X では NFNT は動作せず、POSTリソースはおそらく廃止されたであろうことを警告するようにしました。
  - WinAscent/Descent が SFD ファイルに誤って保存されており、TTF/OTF の OS/2 テーブルの WinAscent/Descent が誤った値になっていました。
  - 平行線の交点を求めようとしたときに Nan が発生して ExpandStroke がクラッシュしていました。
  - 2 次スプラインの合併を少し改善しました。
- 2004年5月23日
  - 「フォントを開く」ダイアログで、ファイルに含まれる術とのフォント名を表示するポップアップを追加しました。
  - FontForge は背景画像の読み込みに失敗していました。2 月 24 日に (複数レイヤサポートとともに) 入ったバグです。
  - アクセントを検索するとき、FF がどのグリフを拾うかの優先順位を変更しました。今までは U+03xx の範囲のものより優先して ASCII 版を使用していました。
- 2004年5月20日
  - Mac ファミリーのスクリプトでの変更にバグがありました。
  - 単語を簡単に組み立てられるように、「隣に貼りつけ」コマンドを追加しました (デフォルトでは見えないようになっています)。
- 2004年5月19日
  - ユーザに OS/2 フィールド WInAscent と WinDescent がアクセスできるようにしました。
  - 選択された 2 個の点の間を直線にする新コマンド (点(P)→直線に変換(L)) を追加。
  - 制御点のデフォルト位置の設定を改良し、自己交差するループが作られないようにしました。
  - ポインタツールにモードを追加。<Alt> キーを押しながら動作を行うと、ドラッグ中に点が接触しても 2 本の開いた輪郭を接続しないようになりました。
  - OTF ファイルを読み込んで TTF として保存すると、ときどきスペースグリフの幅が 0 になっていました。
  - Mac ファミリーの出力法をやり直し。OS X ではより柔軟になったはずです。
- 2004年5月9日
  - TFM ファイルに関するいくつかの問題を解決。128 個を越える合字/カーニングを含む TFM ファイルを扱えていませんでした。
  - 'morx' テーブルで右横書きフラグが設定できていませんでした。
  - ゴーストヒントのコードにまだ誤字がありました。
  - スクリプトの Simplify コマンドでのエラー項を分数で表現できるようにしました。
  - 文脈依存/文脈依存連鎖ダイアログ起動時に表示されるタブが誤っていました。
  - OpenType 文脈依存置換から Mac 状態機械への変換に関するバグをいくつか修正。
  - (Type1 出力で) 参照を含むグリフをサブルーチンに変換しようとするとひどく失敗していました。
  - 新コマンド 編集(E)→参照に置換 (と、スクリプト版も) を追加。フォント内の全てのグリフから、選択されたグリフと同じものを検索し、それが埋め込まれているのを発見するたびに、それらのグリフへの参照に置き換えます。これは、一般に (Type2 または Type1) PostScript フォントを読み込むと全ての参照情報が失われるからです。
  - OS2.winAscent のドキュメントの記述は意味をなしません。これを無視して、 winAscent を hhea.ascent に設定することにします。
  - Sivan は、ヘブライ文字のカーニングがまた壊れていると報告しました。
  - 検索ダイアログが 2 次 (TrueType) フォントで動いていませんでした。
- 2004年5月2日
  - チェックボックスを押したときの色が黒だと皆が混乱するので、変更しました。
  - FontForge はイタリック補正を TFM ファイルから正しく読めず、TFM ファイルの生成に少々問題がありました。
  - カーニングクラスダイアログに初期化されていない変数がありました (マルチプルマスター処理を加えたときに入ったバグだと思います)。
  - FontForge はある種の OTF フォントの GDEF テーブルを出力するときにクラッシュすることがありました。
  - Pierre Hanser がフランス語 UI を更新し、英語 UI のいくつかの問題点を指摘しました。
  - 複数レイヤ機能をオンにしてコンパイルしたバージョンの FontForge では、何らかの参照を含む物をペーストしたときメモリを破壊していました。
- 2004年4月25日
  - 自動ヒントづけにより、曲がったステムに対するゴーストヒントがときどき文字の外側に飛び出すことがありました。
  - MetaFont 機能の未初期化変数をいくつか修正 (ただしアルゴリズムの欠陥はそのままです)
  - FontForge には、フォントビューを最大化したときにいくつかの問題がありました。
  - 4 月 18 日の 3 次→ 2 次変換のパッチには、一般にクラッシュを引き起こすようなバグがありました。
  - フォントの出力の最中にコンパクトモードを出たり入ったりする時に、表示されているビットマップのエンコーディングが元のフォントと同期していなかったので、クラッシュを引き起こしていました。
  - 点のタイプの変換 (角の点 → 曲線上の点/曲線の開始点) を行ったときに制御点情報がもともと適切であった場合は、それを変更しないようにしました。
  - 長方形と楕円の選択が、中央からの位置指定とは独立に設定できるようにしました。
  - 長方形/楕円をどこに置くかを正確に指定することができるダイアログを追加。
  - 拡大縮小/裏返し/回転/ゆがみツールでダブルクリックすると変換ダイアログを起動するようにしました。
  - 変換ダイアログオプションメニューに、情報を最後のものさしツールで測った結果から取得する選択項目を 2 個追加。
  - ものさしウィンドウが表示される長さをユーザが変更できるようにしました。
- 2004年4月18日
  - 複数レイヤ編集における参照の取り扱いに関するバグを 2 個修正。
  - 'name' テーブルの作成時に初期化されていない変数がありました (4月10日以来)
  - 編集(E)→合併 は 2 次スプラインでは正しく動いていませんでした。
  - LCaret はスクリプトで代入された時には無視されるべきですが、そうなっていませんでした。
  - 壊れた GSUB/GPOS テーブルに対する防護をさらに追加。とくに、mangal.ttf は壊れた GSUB テーブルを含んでいます (間違ったクラス指定を含んでいます)。
  - FontForge は `'hhea'.caretSlopeRun` をイタリックフォントで適切に設定していませんでした (`tan(italicAngle)` と一致する必要があります)
  - おっと。3 次から 2 次スプラインには大幅な改良の余地がありました。平行なセグメントをあまりにたくさん作りすぎていました。
  - 我々の 3 次 → 2 次変換は端点の間の距離が 1 ユニットに満たないスプラインを作成する可能性がありました。TTF は全ての座標を整数に変換するので、これはつまり端点が他の端点に重なってしまうということを意味します。
  - TrueType フォントを 3 次曲線を含む SFD から出力するとき、FontForge は 'max'.maxCompositePoints の計算を間違えていました。
  - (たとえ 3 次フォントでも) 点の番号が見えかるどうかをユーザが調節できるようにしました
- 2004年4月10日
  - 単一化コマンドは TTF の 'name' テーブルも 'OS/2' テーブルも保持していませんでした。
  - 'name' テーブルが出力される方法を再実装しました。Mac での出力が改造されたと期待しています。
  - 'kern' テーブルの rangeShift 値が間違っていました (正しい値と正負が逆でした)。
  - あるフォントから別のフォントに参照をペーストしたとき、受け側のフォントに参照されている文字がないとクラッシュしていました。
  - TTF ファイルを 2 回目に保存したとき、'post' テーブルに ".null" が 2 回出現していました。
  - ScaleToEm() スクリプトコマンドが引数を 1 個だけ与えたときに正しく動かないことを Markus Schwarzenberg が指摘しました。
  - 4 月 4 日のバージョンには、Mac で (おそらく他でも) クラッシュするようなバグがあることを Pierre Hanser が指摘しました。
- 2004年4月4日
  - CFF 出力に関するさらにいくつかの修正。
  - 余計なヒントマスク操作を出力に含める悪い癖がありました。
  - 正しい ff のバージョン (まあ、私のバージョンづけが適正である限り) を PostScript/SVG の出力に含めるようにしました。
  - sfnt に含まれるフォーマット 2 ビットマップの読み込みに関する狩野からのパッチがありました。
  - 狩野からのパッチ。MS は縦書き用フォントの GSUB のフォーマットに奇妙な制約を課しています。
- 2004年3月29日
  - Type1 出力において、参照を (サブルーチンコールや seac コマンドではなく) インラインスプラインとして出力する必要がある場合、その参照に適用されたすべての平行移動が失われていました。
  - R.L.Horn による Type3 出力へのパッチ。
  - FontForge used to crash when reading in a bdf glyph with a bad bounding box. バウンディングボックスが不正な BDF グリフを読み込むと FontForge がクラッシュしていました。
  - SFD ファイルからのカーニングクラスを読み込んだときに、そのクラスの第 1 文字クラスよりも第 2 文字クラスのほうが多い場合、メモリを使い尽くしておそらくクラッシュしていました。
  - 'cvt ' テーブルが存在しないフォントで、テーブルを編集しようとするとクラッシュを起こしていました。 'cvt ' テーブルが 1 個存在するフォントでテーブルを編集しようとすると〜のテーブルが表示されていました。
  - フォントビューからの拡大・縮小をカーニングと位置指定のデータにも適用。
  - 中央からのドラッグによる長方形の描画がうまくできませんでした。
  - デバッグ時にファントムポイントを表示。インストールされている FreeType のバージョンにより、点を 2 個 (水平メトリック) 探すかまたは 4 個 (水平と垂直の両方) 探すかのどちらにも対応。
  - エンコーディングフォーマット 0 の CFF フォントの読み書き両方にバグがありました。.notdef を無視するのを忘れていたので、全部が 1 個ずれていました。
  - グリフが他のグリフへの参照として使われており、そのグリフ (の Type1 出力) にサブルーチンを追加した場合、ヒントに衝突があると、最初のヒントグループが全く出力されていませんでした。
  - マルチレイヤモードでは、「グリフを戻す(Y)」コマンドを実行語に、メモリに潜在的な矛盾のある状態が残っていました。(その直後に文字ビューを閉じれば何も問題は起こりませんが、それを編集しようとすると、不愉快な事が起こります。
- 2004年3月21日
  - CID ファイルを単一化する時、FontForge は用字系/言語リストの記録 (とその他のデータ) を失っており、それが置換を行うときのバグを誘発していました。
  - 複数保存を行うと、FontForge がハッシュテーブルを何回も free する可能性がありました。
  - スクリプトから CMap ファイル指定による単一化を行おうとすると、FontForge がクラッシュする可能性がありました。
  - スクリプトに CIDFlatten コマンドを追加。
  - 2月29日の「OS/2 テーブルのバグ取り」で、実際には WinAscent/Descent が壊れていました。
  - 'name' テーブルから Mac の Unicode 文字列を読み込むとき、FontForge は言語を正しく変換できていませんでした。
  - Mac の文脈依存置換の状態機械を読み込むとき、FontForge はマークつきグリフの置換にどのグリフが使用できるかを推測するのにとんでもない間違いを犯していました。
  - フォントのウィンドウタイトルに現在の符号化方式を追加しました (また、フォントが変更されたかどうかを示すフラグも追加しました)。
  - 2 次の輪郭上にある点を動かしているときに、FontForge が算出する制御点が不正な位置に到達することがあり、その事実をユーザに警告する煩わしい内部エラー表示が出ていました。
  - CID の単一化コマンドが、定義済みのグリフのみを表示しているときには動いていませんでした。
  - CID フォントでは文字情報がわざと使用できないようになっていました。
  - CID キー指定フォントでは「ATT を表示(S)」が動いていませんでした。
  - Mac と OpenType のスモールキャップス機能間を対応づける選択肢が誤っていました。
  - Werner は、私が再現できない (し、なぜそれが起こるのか理解できない) splinefill の奇妙なバグを発見しましたが、その修正は自明な物でした。
  - 現在のグリフが置換においてどのグリフを使用するかを表示するコマンドを追加しました (例えば "A.swash" では "A" を表示し、"i" では "fi" がそれを使用する旨を表示するでしょう)。
  - 複数保存 ".pfb" の複数保存に対してフォント出力ダイアログで表示される拡張子変更しました。名前に何かが追加されることをより明白に示すように %s を挿入しました。.pfa フォントでも、それらのユーザ補助を行うようにしました。
  - Mac の機能/設定と OpenType の機能の間の対応を追加/編集するためのダイアログが全く消えませんでした。
  - フォントビューで文字が選択されていないときには「デフォルトのATT」メニューを使用不可能にしました。
  - FontForge は、CID フォントで正しく回転されたグリフをフォントビューの表示行で描画するのに問題がありました。
  - 名前が cidmap ファイルで使用される方法を変更したので、cidmap ファイルをこのたび更新しました。
  - [ATT を表示] ダイアログは、AAT が多数含まれていると自分自身を上書きする可能性がありました (そして、ある一点において、垂直スクロールバーが水平スクロールバーの境界上に設定されていました)。
  - ウィンドウのアセント/ディセントがまだ間違っていました。今回は CID キー指定フォントです。
  - "Bold" などの単語の翻訳に新たな言語版 (オランダ語、スウェーデン語、ノルウェー語) を追加しました。
  - フォントビューから文字ビューダイアログへのドラッグ&ドロップが (置換を作成するために) 行えるようにしたはずが、クラッシュを引き起こしていました。
  - インタプリタが、より複雑な PostScript をサポート。
  - 出力した SVG フォントがまだ存在しない DTD ファイルを指していました。
  - Apple の変形可能フォント (TrueType における一種のマルチプルマスターフォント) のサポート。
  - Control キーを押すと、ポップアップが表示される時間を (マウスを動かすまで) 延長するようにしました。
  - MM メニューへの新コマンド: 補間結果を新フォントに(B)
- 2-Mar-2004
  - PfaEdit から FontForge への名称変更

FontForge の最初の版は 2004 年 3 月 2 日に公開されました。このプログラムはそれ以前 PfaEdit と呼ばれていましたが、2000 年 9 月に開発が始まり、2000 年 11 月 7 日に最初に公開され、2001 年 1 月 21 日に pfaedit.sf.net に移行しました。