FontForge の変更履歴

# 変更点 (拡張とバグ修正)

最新のリリース以降の変更点は、ファイル stamp.c を“cvs log”コマンドで調べれば分かります。

> | テゲウス: 教えてくれ、 きみは進歩を何だと考えているのかを。例えば、進歩の存在を 信じているかね? 退歩なしに進歩だけしたためしがあったろうか? だから、人類はますます歩(ぽ)していると言った方が 簡にして要を得ているんじゃないだろうか? |  | ― A Pheonix too Frequent Christopher Fry, 1950

- 2006年7月15日
  - Apple のビットマップのみのフォントは 'hhea' と 'hmtx' の量テーブルを含んでいてはいけません
    'hmtx' テーブルが無い場合には、そのグリフのビットマップの幅を見てダミーのアウトライングリフを作成。
    ftxvalidate は、縦書きの行メトリクスが 0 だと文句を言います。縦書きメトリック情報を含まないストライクにおいてもそうなのです。そういうわけで何らかのダミーを作成するようにしました。
  - When outputing mark-to-base sub-tables with multiple marks I neglected to output an NUL offsets for the anchors that weren't there. So if a glyph had only one anchor (instead of two, or however many) then the offsets would be all wrong.
  - The SetPref() scripting function was misdocumented to be called SetPrefs() so accept both names.
  - When building an accented letter out of glyphs with an anchor class ff would increase the advance width of the accented glyph by the size (xmax-xmin) of the accent.
  - Expand the functionality of the ruler tool so that it also shows curvature.
  - When importing a bitmap font from a mac binary or an sfnt and the encodings of the destination and the bitmap did not match, then things got rather screwed up and might crash.
  - patch from KANOU. the ref check routine in glyphcomp compared one reference to itself.
- 2006年7月3日
  - Type2 charstrings have no closepath operator. I used to think that meant I could not omit the final vector. In fact it means I can omit the final vector AND the closepath operator.
  - If we had a font with no complete code pages we used to generate a version 0 OS/2 table without codepage info. But now windows refuses to install such a font. Instead generate a bogus codepage field which claims to have latin1 (even though it doesn't).

    Windows won't use a font where the codepages field is 0.

  - When generating a FOND for a bitmap only sfnt, we created dummy 'NFNT' resources with the wrong resource ids. Which meant we got garbage when the font was used.
  - Make the TabSets in the font & glyph info dialogs run vertically rather than hor izontally. (Add an option to get the old display back).
  - Approximate Spline from Point Slopes sometimes set the control point while leavi ng the nonextcp flag on.
  - Add Extrema only looked at how close a point was to the extrema in one dimension. While that dimension is more important, make a less stringent check on the other.
  - Expand Stroke removes "U-turns" from splines because they confuse it. But the routine that did that got a bit rambunctious and did the wrong thing on a circular arc.
  - If a font did not contain an OS/2 table then we didn't retain the 'hhea' ascent/ descent.
  - Various fixes from Matthias Kilian of OpenBSD.
  - When asking for default 'subs' features, every glyph gets assigned U+2080.
  - Display the curvature information at each point. In Point Info dlg, and in a pop up window when editing cps.
  - Add two new menu commands/scripting commands:
    - Canonical Start Points (CanonicalStart())
    - Canonical Contours (CanonicalContours())

    The first sets the start point of each contour to the leftmost point, while the second orders the contours by their leftmost points. This will slightly reduce the size of output charstrings. It will also make more things available to be put in subroutines.

  - Print Multi-Size & Full Page printed the wrong glyphs from the font view. Broken since the encoding change.
  - When stroking a contour that makes a 180degree turn, ff did not give it a semi-circle if linejoin was set to round.
  - SPLCopyTranslatedHintMasks didn't work if there were more than one contour being copied.
  - Nathan Summers points out that if the XUID is garbage the ff can go into an infinite loop when generating an otf/cff font.
  - Somehow the XUID and UniqueID fields crept off the bottom of the fontinfo Names p ane and weren't visible or modifyable. Give them their own pane now.
  - Apply some patches (with some changes) from Nathan Summers to the truetype debug ger.
  - The property count in BDF fonts is wrong.
  - Ralf Stubner points out that the notdef glyph in an otf font should look like that in a ttf font, and not like that in a type1 font. (that is there should be something in the glyph).
  - Add support for group "encodings" which have empty spaces for unused glyphs.
  - make another attempt to find a good default sli for glyphs with no default script.
  - Typo in scripting function DefaultATT.
  - The View->Display Substitutions has been broken since the encoding change last summer.
  - Mark glyphs with out of date instructions differently from those with no instructions.
  - The last change to the cvt table generally did not get made.
  - Make glyph compare check for point matching in anchor points and in references.
  - Add a warning message about out of date instructions when generating a font.
  - When generating a font with anchor points matched to ttf points, ff failed to allocate enough space for them and offsets got all confused.
  - Oops. Some variables which should have been static were dynamic. Which meant we kept dlopening libfreetype.
  - If we had an anchor point which positioned itself with point matching, and we ge nerated an otf font then we'd output a lookup which tried to do point matching i n postscript. Only do point matching if we are sure we're in a tt font.
  - Add a preference item to control clearing of tt instructions.
  - Printing a multi-size page of a truetype font crashed.
  - Anchor Point dlg didn't work well with matching tt points.
  - Add a field to allow users to search for a glyph name within a kerning class.
  - Interesting. In kerning by classes, if the coverage table does not match the glyphs specified in all the classes (for the first (left) glyph), then any glyphs in the coverage table but not in any class should be treated as being in class 0.
  - Add something to the font view's copy from menu to control whether truetype instructions are copied or not.
  - Add some more problems to find problems
    - Check for glyphs with both contours and references.
    - Find out of date point matched references.
    - Find references with transformation matrices which can't be expressed (as refs) in truetype
    - Find references with transformation matrices which aren't translations (and so can't be expressed (as refs) in type1/2 fonts.
  - Allow the user to turn off composite info in afm files.
  - otf kerning classes were dumped in the wrong order.
  - In GaramondPremrPro.otf (version 001.000) Adobe has coverage tables (for some context chaining subs) which have the glyphs mentioned multiple times. I suppose this is legal, but it is annoying. I want my strings to have each glyph appear at most once. So add a little thingy to remove duplicate glyphs when we generate a list of glyph names.
  - Adobe has depreciated the use of PUA to represent small caps, old style numerals, etc. Add a preference item so that ff will no longer recognize "a.sc" as having a PUA encoding.
  - The tool tip for the preference item "NameListForNewFonts" was wrong.
  - Horizontal scrolling in the show att dlg was too slow. It was by pixel. Make it be by something which approximates the width of a character.
  - Add a new scripting command to give a font's bounding box.
  - Sigh. Within a GPOS lookup, sub-tables are not additive. Only one will be applied at a time. So order the 'kern' lookup so that pair-wise kerning comes out first (to override class kerning).
  - Was sometimes outputting mkmk base-mark attachement points as the mark attachment point.
  - Clytie Siddall has many suggestions about how to make the translation process easier for translators. He also tells me how to insert contextual comments into the program source, and provides many fixes for typoes.
  - The OS/2 version 1,2 has a different defn of avgCharWidth than OS/2 version 3(,4) does. Display of CJK fonts is supposed to break under windows if using the v3 defn.

    Use the appropriate defn for the version we happen to be outputting.

  - Autohinting crashed on glyphs in an order2 font if the glyph contained both an outline and a reference.
  - Pressing the help key in the main windows went to the overview page, not to the contextual help for the window.
  - Add a warning when 'CFF ' widths and 'hmtx' widths differ.
  - Set the default and normative widths too late after the cff subroutine change.
  - Make double clicking in the list of kern pair/anchor combinations bring up either Kern Pair Closeup dlg or Anchors Away.
  - The Anchor control dlg didn't work after the encoding change.
  - Add a popup message to explain what "Cor:" means.
  - Doing a Close() from a script didn't work if the windowing system were open.
  - Yet another bug in type1 hinting output.
  - Some versions of realloc don't like allocating 0 bytes.
  - Users expect ff to recognize a glyph name "Diaeresis", even though Adobe (following standard American, but not European spelling) spells it "Dieresis".
  - GhostScript has canniptions when it gets a version 3 OS/2 table in a ttf file.
  - Can't add a flex hint when there's a hintmask at the mid point.
  - The hintmask part of PointInfo would not let you clear a hintmask.
  - Add a new command to the fontview: Edit->Select->Select by Name
    and a new scripting command: SelectAllInstancesOf

    Both will select all encoding slots containing the named glyph (or unicode value)

  - Add scripting command: RemoveDetachedGlyphs
  - Was setting typo linegap to hhead linegap.
  - Using the X clipboard to paste into the character view has been broken at least since I added multi-layered editing.
  - Add a pref to control whether we prefer to use spacing or combining accents when building accented glyphs.
  - Spacing in the group dlg was sometimes off.
  - More hinting fixes. If the edges of a stem aren't quite parallel we had problems
  - Add some new built in variables: $order, $em, $ascent, $descent
  - The 'TeX ' table was output incorrectly if glyph's order wasn't the same in the sf as in the ttf.
  - Allow the [*] Back visibility checkbox to control whether the grid fit lines are visible or not.
  - If scripting is in verbose mode, flush the output buffer before calling a built in procedure (so any errors it generates will at least show the right line).
  - Ambrose LI points out that the master font in a cid keyed font should match the ascent/descent of at least one of its subfonts (so that the typoAscent/Descent f ields will default correctly).
  - valgrind でメモリリークを探し (ああ、そして修正し)、品質向上にいくらかの次間を費しました。
  - (スクリプト関数) ControlAFMLigatureOutput を OFM/TFM ファイルにも適用するようにしました。
  - ありゃ。Mac 状態機械の解析処理中に、sizeof(int32) を使用すべき所で sizeof(long) を使用していました。これは 64 ビットマシンでかなり酷い結果を引き起こしていました。
  - ユーザ定義の cidmap ファイルを読み込むスクリプト関数を追加。
  - うーむ。AMD64 では sizeof(point)==8 ですが、構造体のアラインメントは 4 バイト単位です。これにより、我々の chunkalloc ルーチン類が文句を言います。そう言うわけで、sizeof(pointer) の倍数でない物が与えられた場合、単純に切り上げるように丸めることにしました。
  - GSUB に含まれる照合の順序づけが、カーニング用の照合を合体するためのコードを追加して以来完全に壊れていました。
  - 狩野が関数名に含まれる Char を Glyph に変更する事を提案しました。たしかに、本当に Char を意味している物はほとんど無いようで、残りは Glyph に置き換える事ができます。古い名前は残しておきますが、廃止済であることを文書化しておきます。
  - CID キー指定フォントが新しいサブルーチンメカニズムも使用するようにしました。グローバルサブルーチンも使えるようになりました!
  - ありゃ。Familyname が NULL になることがありました。それと、その長さが 31 文字いないになるように無差別のチェックを行っていました。
  - OTF フォントの出力にサブルーチンをより良く使用するようにしました。CID フォントではまだ動作しません。
  - コンパクト表示にしたままで CID フォントのサブフォントを切り替えるとクラッシュしていました。
  - ありゃまあ。デバッガを組み込む設定では ff が ft22 で使えるようにしたのですが……デバッガが不要な時にはコンパイルが失敗していました。
  - ありゃ、フォントが必要なスクリプト関数 (HasPreservedTable とその属) が「フォント不要」扱いになっていました。
  - フォント比較について追加。2 つのフォント内のあるグリフに相違がある場合、後者のグリフのアウトラインを前者のグリフに取り込むかどうかを指定するオプションを追加しました。最初のフォントにグリフが内場合、背景のアウトラインとして取り込むオプションを追加しました。
  - 大変だ、acorn2sfd で遊びたいと誰かが考えました。またコンパイルできるようにしました。
- 2006年4月8日
  - gentoo の Mike Frysinger からのパッチ。HOME 環境変数を /etc/passwd より優先して使用するように変更。
  - Werner はデバッガの点ウィンドウ中で生データを見ることができるように要望しました。私の推測では、ほとんどの人はこのモードに興味を持たないでしょう (そしてウィンドウの見栄えが少し汚くなるでしょう) から、コンパイル時に --with-debug-raw-points をつけるか否かで調整できるようにしました。
  - sfddiff を FontForge スクリプトとして書き、それをインストール処理に再び追加しました。
  - acorn2sfd を必要な人がいました! それをまたコンパイルするようにしました。
  - configure が libgif を探すように変更。
- 2006年4月6日
  - Ubuntu の Ian Jackson からのパッチ。現在のグリフが (出力するに値しない) 空のグリフであるとき、表示(V)→グリッド合わせを表示 を行うとクラッシュしていました。
  - PLRM は、フォームフィードは空白文字であるとしています。T1_Spec には、そうではないと書いてあります。eexec の後では T1_Spec の指摘通りでした (ff は今まで PLRM の定義に従っていました。
    また、PFB 暗号化において、出力される最初の文字が空白文字ではないことを確かにするためのチェックを追加しました。
  - いくつかの Windows システム (少なくとも私の) では、フォントの /FontName または /FamilyName が 31 文字を超えるような PostScript フォントをインストールすることを拒絶します。これは PostScript フォント本体のフォント辞書に関する話であり、(OTF フォントに関しては) 'name' テーブル内の名前には適用されません。
  - ff を FreeType 2.2.0 と一緒にコンパイル可能にする修正。
  - テキストフィールドのポップアップメニュー表示が壊れていました。
  - Windows ANSI エンコーディングでないフォントが動作できるように PFM 出力を変更。
  - フリーハンドツールが 2 次曲線フォントで動くようにしました。
  - 2 次モードで 情報を得る(I) を用いたとき、スプラインを再構成していない場合がありました。Micael Nowakowski からのパッチ。
  - KDE のブラウザを (ヘルプ表示のために) 呼ぼうとしている所が動いていませんでした。Dimitar Zhekov によるパッチ。
  - 輪郭がオフカーブ点から始まっていた場合、情報の喪失がまだ起こっていました。
  - フォントが .notdef グリフを定義しているとき、FF は通常 'hmtx' テーブル内に誤ってそれを含めていました。
  - 選択メニューの中で「Width」に不要なアンダースコアが加わっていました。
  - OTF フォントから正しいウェイト名を得るための正しい場所を参照していませんでした。
  - 2 次 (TrueType) 曲線を描くための UI については、皆が以前から文句を言っていました。それは 3 次曲線 (PostScript) と共通の方法でしたが、その方法では 2 次曲線を描くのは困難なようです。(3 次曲線のように) オンカーブ点のみに注目するよりも、オフカーブ点に集中するべきでしょう。これにより、ペンツールは 2 次モードではかなり異なったふるまいをするようになりました。エレメント(L)→情報を得る(I) も同様です。
  - 縦書き用置換を日本語環境で動くようにする (正確には、Windows のバグを回避する) ための、2004 年に遡るパッチそれ自体にバグがあり、1 個より多い言語が関わっている時に問題を起こしていました。
  - 平行移動したヒントマスクを含む、OTF フォントの参照のインラインコピーを出力する時、垂直ステムを間違った方法で平行移動しており、結果としてゴミが出力されていました。
  - ユーザが点の X および Y 座標を入力するとその点が選択できるような新規コマンドを追加。私はデバッグのためにこれが欲しいのです。一般的にも有益だと思います。
  - ヒントが衝突しているグリフを含む Type 2 サブルーチンに関する問題を修正。
  - ReplaceWithReference() の許容度が高すぎ、minionpro-regular で macron.sc を見つけるはずの所で macron を見つけてしまっていました。
  - 選択型置換または複数置換が 30 個以上の構成要素を含んでいる場合、OpenType の GSUB テーブル出力時に 30 番目以降の全ての情報を失っていました。
  - うーむ。場合によっては最小自乗法を使った方が、フォントの併合時に我々にとって望ましい答えが出るようです。試しに使ってみましょう。
  - 翻訳上のいくつかの問題を解決する狩野からのパッチ。
  - 図形ツール (角丸長方形、楕円) において: 最初から 2 次曲線の図形を出力するのではなく、3 次の図形を出力して 2 次に変換します。変換ルーチンは今や、どのようにして整数値の制御点などを見つけるかを知っています。
  - ビットマップ編集時のグリッドサイズの値を増やす狩野からのパッチ。
  - グリフが制御点から始まる場合、ff はときどき、点番号が正しくつけられていない物と考えて TTF 命令を捨ててしまっていました。
  - 2 次フォントにフォントを併合すると直線に化けていました。それをやってはいけない場合ですらそうです。
  - 名前リストを非 ASCII のグリフ名をサポートするように変更。
  - おっと。いくつかのヒントづけ用スクリプトコマンドは間違って名前の先頭に誤って "b" をつけていました。やれやれ。これからは両方の名前をサポートするようにします。
  - ヒントつきのグリフを空のグリフに取り込んだ時には、"自動ヒントが必要" フラグをセットするべきではありませんでした。(実際には、オリジナルのコピーが古くなったヒントから得られた物ではないか調べるべきだと思いますが…それはずっと複雑です。)
  - BDF フォントの読み込みをより効率的にするパッチ。
  - 狩野の "fontview" フォントを、フォントビューウィンドウで探索するデフォルトフォントに追加。
  - FF は、ゴーストヒントを通常のヒントと区別していませんでした。
  - エンコーディングの変更を去年の夏に行って以来、フォントの補間が壊れていました。
  - ハッシュ関数が負の値を返す (ことによりクラッシュする) のを避けるための狩野からのパッチ。
  - 2 つのフォントを比較するためのメニューとスクリプトコマンドを追加。
  - おっと。フォント情報ダイアログに余分なアンダースコアがついたフィールド名がありました。
  - グリフ情報ダイアログのグリフ名/Unicode 値を変更したときに、フォントビュー内で表示されている物があれば更新するように変更。
  - 移動ダイアログに入力された名前が 1 個の Unicode 文字である場合、その文字に移動するのだと解釈します。通常はこれで問題ありませんが、ユーザが (例えば) アンダースコアをグリフ名として使用し、それに U+005F を割り当てていない可能性があります。だからグリフ名一覧もチェックするようにしました。
  - 3 次→ 2 次の変換コードを書き直し。コードの見栄えもずっと良くなり、思いがけない丸め誤差が発生しないように整数値 (または半整数値) にあたる中間位置に点を配置しようと試みるようになりました。しかしながら、やや精度が下がりました。
  - PostScript のヒントづけコードに多数の変更を追加。
  - グリフに参照が含まれていて、アルファベット文字が含まれていない場合、グリフ情報ダイアログがクラッシュしていました。
  - FF_SCRIPT_IN_LATIN1 が設定されていない場合、スクリプトコマンド AskUser() が動作していませんでした。狩野からのパッチ。
  - いくつかのエラーメッセージで、文末にコンマを使用していました。フルストップに変更。
  - 日本語訳を改善するための狩野からのパッチ。
  - 狩野が、(グリフ情報ダイアログの) Unicode 文字の変更を扱うコードが間違った事柄に関して文句を言うことを指摘し、パッチを提供しました。
  - 手のひらツール使用時に背景画像をスクロールしていませんでした (おそらくヒントもそうだったでしょう)
  - ヒントマスク操作を含むスプラインをコピーした時に、端点を変形した時にスプラインを再構成することを無視していました。その情報を使ったことは今まで一度もないのでそれは問題ないのですが――スプラインが 2 次で、それを 3 次に変換する必要があるときだけは別です。なので、2 次のフォントデータベースから PS フォントを出力する時には、拡大縮小/回転/その他 を伴う参照がフォントに含まれていたならば、間違った結果を得ることになっていたでしょう。
  - (それ自身または相互に) 交差する輪郭を含む参照が存在する場合、問題点を発見 ダイアログの 反転した参照をチェック(B) のチェックが失敗する可能性がありました。
  - PS の Weight 文字列のデフォルト値の設定の際に、ff が "ExtraLight" を正しいウェイトの値として認識するようにしました。
  - プルダウンリストが付随するテキストフィールド上をユーザがクリックすると、ff はリスト内の最初の項目が選択されたと言うイベントを受け取っていました。これにより、(新しい 合字/置換 などのために用いられる) タグ ダイアログが、空白ではなくリスト内の最初のタグを表示する現象が起こっていました。
  - Richard Kinch の TrueTeX メーリングリストへの投稿にあるいくつかのグリフ名の別名を取り込みました。
  - ゴーストヒントが最上部 (-20) か最下部 (-21) かの決定は、現在の輪郭によって定まるべきであり、グリフ全体によって定まるべきではありません。
  - あるグリフが参照のみから成り立っている場合、可能な名前のリストに _<ref-name-1>_<ref-name-2>...<ref-name-n> を追加するようにしました。いくつかの場合には unixXXXXXXXX も追加します。
  - 狩野がさらに多くの文字列を翻訳したがっています。
  - Barry.SCHWARTZ がスクリプト内でのフォントのコンパクト化ができるようにすることを求めています。
  - Barry.SCHWARTZ は、私の "cfg" ファイル類が改行を含んでいないことを指摘し、それらが受け入れられればどれだけ便利かを示しています:-)。
  - Barry.SCHWARTZ は、OTF フォントとともに AFM ファイルの出力を行った時に、最初の 256 文字にしか符号値が指定されていないことを指摘しました。
  - 単純化処理をこれまでよりはるかに改良しました。
  - 2 次スプラインの単純化が TrueType の特性を考慮するようにしました。それにより、点を補間可能にするようにするためのある単純化処理を行うようになりました。また、補間可能な点が補間可能でなくなってしまうことがあるので、点を削除するのが常に得策だとは限りません。
  - wine/tools/fnt2fon.c の Huw Davies のコードをテストし (その後、流用の許可を得て)、今や .fon ファイルを出力できるとの確信を得ました。
  - (sfnt ビットマップからの) ビットマップ参照のサポートを追加。
  - 狩野によるパッチ。cvknife.c が特定のモードでコンパイルできませんでした。
  - あるエラーメッセージの誤植。
  - 変曲点を表示するためのコマンドを追加 (また、表示(V)→変曲点を表示(M) を、スプラインの端点以外のどこに極大点があるかを表示するように変更)。
  - Michal Nowakowski からのパッチ。単純化ダイアログの初期化されていない変数。
  - 符号値を持たないグリフのグリフ名が "NameMe-<n>" でなければならないところが、昨夏の符号化方式の変更以来、常に "uniFFFFFFFF" になっていました。
  - Werner は AFM ファイルの CC (複合文字) の項目を、マークから基底文字への位置指定を行う GPOS 機能のために必要としています。
  - 去年の夏に UTF8 に切替えた時に フォント情報→[サイズ] の表示が壊れていました。
  - ユーザが 'GPOS' と旧式の 'kern' テーブルの両方を出力できるようにしました。FontLab はこれができます。OpenType メーリングリストは一般的にこの考えに反対のようです。
  - 古い形式のカーニングサブテーブルにおよそ 10000 個を超えるカーニングペアを格納しようとすると、いろいろな short 型の変数がオーバーフローしていました。なので、いくつかの別々のサブテーブルにおよそ 10000 カーニングペアごとに区切ることにしました。
  - 整数値への丸めを行うと、補間された点の情報が壊れていました。
  - TFM ファイルの出力時に (たとえフォントに含まれていたとしても) 16*emサイズ より大きな幅を出力しないようにしました。TeX がそのようなファイルを撥ねてしまうからです。
  - エラーメッセージを修正する Alexey Kryukov からのパッチ。
  - CID キー指定 TrueType フォントを PDF ファイルに印字する時、グリフの並び順が非常に奇妙なものになっていました (一部はコンパクト化され、一部は省略されていたので、グリフを使い尽くしてもまだグリフを要求されてしまい、エラーとなっていました)。
  - Alexey Kryukov はエラーメッセージの句読点修正を示唆しました。
  - Johan Winge は、3 次から 2 次へのスプライン変換の改良を提案しました: スプライン全体を見る時に、最後が直線で終っている場合、変曲点での分割を試みる方法です。これはいい考えのように思います。
  - Johan Winge は他にも、直線と曲線の接点として認識すべきではない点を節点にしてしまっていることを指摘しました。これは、線の傾きが同一方向かどうかを判定する時に、制御点の端点からの近さを考慮に入れずに許容誤差の測定を行っていたためです。おそらく、制御点が基点からどれだけ近いかによって、測定方法を変化させるのが最善の方法でしょう。
  - Alexey Kryukov の考えでは、符号値を割り当てない「エンコーディングスロットを追加(E)」をコンパクト表示でも実行できるようにし、カスタムエンコーディングに変換するべきです。
  - スクリプト関数 Reencode() は "コンパクト表示" マークを取り除いていませんでした。
  - Ralf Stubner は、Type1 charstring の最後で、単に "seac" で済む所に "seac endchar" を出力していると指摘しました。彼の言うとおりでした。
  - 1 個の CID キー指定フォントのサブフォント 1 個だけから OpenType テーブルを出力しようとした時に (例えば、ユーザが 1 個のサブフォントから TTF フォントを出力するように指定した場合) FF はクラッシュしていました。
  - ボールドフォントにうまくヒントづけを行っていませんでした (ステムが emサイズ/10 より大きい場合つねに)
  - リンク解除を行う必要のある参照をもつグリフを含む Type1 フォントを出力するときは、その後にその参照に含まれる垂直ステムにはヒントづけするべきではありませんでした。
  - Type1/2 の読み込み次に、ヒントを接続すべき位置にある点を推測する時に、点があまりに離れている時に失敗していました。寛大さを少し増やしました。
  - SetCharName() が、フラグ値を正しく確認していませんでした。
  - フォントのコンパクト表示をとりやめるとメモリ参照の問題を起こしていました。
  - メタフォント機能の単純なクラッシュを修正しました。
  - 符号値をもたないグリフを既存のフォントに取り込むとき、一致するグリフをときどき見つけ損ねて (それで、新しいグリフを作成して) いました。
  - フォントに ".notdef" という名前の符号値をもつグリフが含まれていて、そのグリフが最初のグリフではなかった場合、Type1 フォントは .notdef グリフをフォント内のランダムな位置に出力していて、それが原因となって FreeType のラスタライザがいくつかの特定のモード下でクラッシュしていました。FreeType は現在では .notdef が常にグリフ番号 0 になるように番号を振り直すようです (2.1.10 で確認)。修正は単純です: 常に .notdef が chars 辞書の最初のグリフになるようにすれば、みんな幸せでしょう。
  - 2 つのグリフを比較する新しいスクリプトコマンドを追加。テストスイート用のためにこれが欲しくなったのですが、他の人もこれを見れば役立つと思うでしょう。
  - g新部は、スクリプト関数 Export() でビットマップ画像を出力しようとすると、指定したフォーマットと違う画像が出力されることを指摘しました。
- 2006年2月9日
  - 2 次フォントの線幅拡張/重複除去処理を拒否するのではなく、輪郭を 3 次に変換し、関数を適用してから逆変換してもいいではないですか。
  - またもや点の番号づけを間違えていました。
  - よそから参照されているグリフを消去した場合 (かつ、それを最初に削除していない場合)、SFD ファイルへの保存時にorig_pos-1 にあるグリフへの参照を行い、(消去されたグリフが SFD に格納されていないので) 再読み込み時にエラーを起こしていました。
  - 著作権表示の文字列の長さがぴったり 100 の倍数である場合、FontForge は SFD ファイルからの読み込み時にメモリを破壊して (おそらくクラッシュして) いました。
  - 併合/単純化コマンド (今や AddExtrema() を呼び出すようになりました) は、制御点が母点に非常に近く、(人間の目には) 角の点のように見える場合の処理に問題がありました。
  - Add support for the r2l script N'Ko. MS says opentype will use script 'nko ', ISO says the tag should be 'nkoo'. Follow opentype. 右から左に書く用字系の ン・コー文字のサポートを追加。MS は、OpenType は‘nko ’を使宇土言い、ISO はタグは‘nkoo’であるべきだと言っています。OpenType に従います。
  - シリア文字とターナ文字も右書きの用字系であり、私の作ったリストに追加すべきだと狩野が言いました。
  - FF に複数のフォントをコマンドラインで指定すると、フォントウィンドウのサイズがまったく類を見ない方法でジャンプしていました。
  - 名前リストの概念を導入。ユーザは新しいグリフに望む名前を指定することができ、また、新しい名前づけの枠組みをフォント全体に適用することもできます。変更箇所は以下のとおり:
    - フォント情報(I)...
    - 開く(O)...
    - フォント (ファミリー) を出力 (G/F)...
    - 環境設定(E)...
    - および、エンコーディング(N) メニューです。
    - 新規のスクリプト関数:
      - LoadNamelist(filename)
      - LoadNamelistDir([dir])
      - RenameGlyphs(namelist)
      - (スクリプトの) Generate() 関数が namelist 引数を取れるように拡張。
  - ユーザが libuninameslist をインストールしていないと、numero と TM (およびその他) の見せかけの合字が作成されていました。
  - BDF グリフを (COMMENT を使って) コメントアウトしても、FontForge がなんらかの読み込み処理を行おうとすることを指摘しました。
  - Latin に「ラテン文字」と「ラテン語」の区別を行う必要がありました。
  - SplineRemoveAnnoyingExtrema1() に、異常な制御点を生成しないように試みるごくわずかな調整を追加しました。
- 2006年1月17日
  - ビットマップのみの SFNT を作成する時にフォント内に含まれるビットマップサイズと一致しないピクセルサイズを指定すると、FontForge がクラッシュしていました。
  - BDF フォントのピクセルサイズを設定するのに (フォントの ASCENT+DESCENT ではなく) PIXEL_SIZE を使用するべきであることを Chia が指摘しました。
  - 1e7 を超える座標を含むグリフを生成しようとするとクラッシュしていました。
  - 極大点の追加(X) が極大点の側の点を削除するように変更した時、それらの点のどれかが角の点である場合のことを考慮していませんでした。
  - Gentium Roman では、BlueValues 値を検索した時に、ベースラインがグリフの y 座標の平均値の標準偏差 1 以内に含まれていませんでした。範囲を変更し、0 が常に含まれるようにしました。
  - フォント情報→[PS Privatet辞書] で、OtherBlues を選択して [推測] ボタンを押した時に、OtherBlues 値が変更されていませんでした。
  - gettext 対応パッチがメニュー項目 柱状グラフ→BlueValues を線に変更していました。
  - フォントの次数を変更した時に、FF はアンドゥ情報を失うことを尋ねていました。フォントが変更されていない場合は尋ねる必要がありません。
  - 点の情報ダイアログは曲線上の点の制御点が同方向であるように強制する必要がありました (つまり、ユーザが片方の制御点を変更したら、ダイアログはもう片方をその逆向きに変更する必要がありました)。
  - PointInfo() から SplineRefigure3() を呼ぶような経路がありました。つまり、スプラインが 2 次でなければならない場合でも 3 次であるとマークされてしまう場合があったということです。
  - 輪郭の拡大処理で、傾いた楕円形のペンがうまく動いていませんでした。
  - ファイル選択ダイアログにホームディレクトリボタンを追加。
  2006年1月17日
  - Import() スクリプトコマンドが {bdf,pcf}.gz ファイルを読み込めるように変更。
  - SFD ファイルからの UTF-7 の (TTF 名) 文字列の読み込み処理が、ビット 15 (上位ビット) が立っている文字が位置 1 (mod 3) にある時に間違っていました。
  - SFNT ビットマップのストライクヘッダにある横書きの行メトリックが間違っていました。
  - 横書きの行メトリック (が役立つなら) を使ってビットマップストライクの高さ/深さを設定するようにしました。
- 2006年1月15日
  - 全ての COMMENT を 1 個の BDF 属性に折り畳む変更が、SFNT 内の 'BDF ' テーブルの処理ルーチンを壊していました。
- 2006年1月15日
  - AddExtrema を変更し、極値が古い点のごく近くにある場合、極値に点を追加して古い点を削除するようにしました。
  - BDF 属性の扱いを書き直し。
    - いくつかの属性に対して、僅かに間違った定義を用いていました。
    - いくつかの廃止された属性を出力していました。
    - CHARSET_ENCODING を ISO8859 の各種符号化方式で出力するとき、値に余分な "-" をつけていました。
    - BDF, PCF フォントの読み込み時に属性を保持。
    - BDF 属性を制御できるダイアログを追加。
    - BDF の属性を格納するための SFNT ファイル用の 'BDF ' テーブルを作成し、FontForge がこのテーブルを読み書きするようにしました。
  - SFNT で "big metrics" を出力する条件判定に一貫性がないことを Ted Packard が指摘しました。個のパッチはそれを一貫してかつ正しく修正するはずです。
  - 古き良き「コンパクト」表示を復活。つまり、コンパクト表示から直前の表示に戻せるようになりました (また、フォント生成時にコンパクト表示からの復元を自動的に行うようにしました)。
  - GenTags: 行を、改行コードが CR+LF の SFD ファイルから読み込むときに、その次の行を失っていました。
  - ff は PDF ファイル内で分割されている xref テーブルを扱えなかったようです?
  - PDF ファイル内の TTF フォントを読み込むときにエンコーディング情報をうまく見つけられない場合には、多数のルーチンがエンコーディングマップがあることを想定しているので、それによってクラッシュが引き起こされていました。マップが見つからないときは ダミーの (オリジナル) マップを追加するようにしました。
  - 参照の中の点を正しく番号づけていませんでした。
  - ウギャー! gettext のコードを導入して以来、フォント出力ダイアログで「ビットマップフォント無し」と「アウトラインフォント無し」を選択できなくなっていました。
  - OpenOffice の Herbert Duerr が、OpenSymbol.ttf フォントを FontForge で出力すると Win98 で動作しないと報告しました。これは、Win98 が ff の生成するコードページビットフィールドが気に食わず、フォント内の全グリフを使用するのを拒否しているせいでした。枯葉、FF が (コードページ情報を含まない) バージョン 0 の OS/2 テーブルを出力するようにするパッチを送りました。その場合、Win98 はそれを受け入れます。彼のパッチは以前の版に対する物だったので、最新版に当てるには修正の必要がありました。
  - Rach Levien からのパッチを見て、FT_Outline_Get_Bitmap を正しく利用する方法がとうとう分かりました。
  - ユーザが PrintSetup を一度も呼んでいない場合 (またはユーザがこのセッションで PrintSetup を呼び出しておらず、かつ設定ファイルを読み込まないようにしているばあい), FontForge は A4 または US レターサイズに収まるように setpagedevice を呼び出します。PS マニュアルは、プリンタは、5 ポイント以内の誤差を持つ紙が存在しない場合、指定されたサイズを拒否するべきであるとしています。ですから、仕様に従うプリンタ (私のは違います) では、紙待ちをして何も印字されない結果となります。

    ページサイズが設定されていない場合、setpagedevice で PageSize を指定しないように変更しました。

  - スクリプトコマンド PrintSetup はフォントを開いていることを必須とするべきではありません。
  - FF が点を暗黙の点に置き換えるのをユーザが禁止できるメカニズムを追加。その点に命令処理を施す場合に有益です。
  - 2006 年になったので著作権表示を更新。
  - 2 次スプラインでのペンツールの振舞いを改善 (点が暗黙の物となることができるように、デフォルトで制御点が存在するようにした)
  - 2 次曲線フォントで楕円が精確に描画されていませんでした。
  - 変更を行った後、点番号の付け直しが正しく行われないことがときどきありました。1 個の (TrueType) グリフに参照とスプラインの両方が含まれている場合、番号が "?" で表示されます。
  - charview が (TrueType の) 点番号を表示したとき、すべての制御点を同時に表示します。しかし制御点を選択することはできません。これは良い事ではないので、選択できるようにしました。
  - PDF へのフォント表示で、各ページの上欄にタイトルが入っていませんでした。
  - 印刷時に "%%Pages (atend)" ではなく "%%Pages atend" としていることを Peter Denisevich が指摘しました。前者が正しいのです。
  - 私の作った Type1 (および Type1 CID) フォントには %%DocumentSuppliedResource 行が含まれており、そうすべきではないことを Werner が指摘しました。それは後の段階で、フォントを取り込む時に追加すべき物です。
  - 画像取り込みダイアログで、.xpm ファイルをサポート対象の画像として表示。それらは常にサポートされてきたので、その旨表示するべきです。
  - どのアンカーを使用するかを決定する時にグリフクラスをチェック。
  - Anshuman Pandey がグリフの GDEF クラスを設定できるように要望しました。デフォルトの振舞いが不十分であるのが何故かぜんぜん理解できませんでしたが、設定できるようにするのは簡単なことです。
  - グリフ情報ダイアログのフィールドの一つがゴミデータで初期化されていました。
  - AddAnchorPoint スクリプトコマンドにアンカー点タイプ default を追加。その場合、FF は適切な値を推測しようとします。
  - フォント表示ウィンドウに、幾つかの標準ウィンドウサイズを追加。バグを検証する時に、他の人の標準に合ったウィンドウを見るのが嫌になったのです。
  - 輪郭拡張処理で、制御点が存在しないと誤って認識されるような処理の流れがありました。
  - `輪郭を太らせる(B)` コマンドが内部的に重複除去処理を呼び出す必要がある場合、輪郭の無機が逆になる場合がありました。
  - おっと。エンコーディングを設定ファイルに保存するルーチンがエンコーディングプラグインを考慮に入れていませんでした。
  - 変形ダイアログの原点プルダウンリストが翻訳されていないことを狩野が指摘しました。
  - 環境設定ダイアログで [...] ファイルブラウザのすべてが "Call Script" というタイトルが付けられており、ほとんどの場合不適切でした。
  - .* とタイプして [フィルタ] を押してもファイル選択ウィンドウに隠しファイルが表示されませんでした。
  - 交点をチェックするコードが、その終点の前の最後の小さな部分で交差が起こっているかどうかチェックできていませんでした。
  - BDF フォント作成時に OFM ファイルを出力していました。不要だと思います。
  - 最初のグリフの first/last 値が間違った EBLC テーブルを出力していました。
  - うーむ。すべてのシステムが tzset を持っているとは限らないのですね。これを検出する設定オプションをつけました。
  - スクリプト処理中にループ内で return すると ff を無限ループに陥れていました。
  - スクリプト関数 Import() に、レイヤを最初にクリアするフラグを追加する狩野のパッチ。
  - スクリプト関数 SetGlyphChanged() を追加する狩野によるパッチ。
  - 暗黙の点が本物の点になった時、その点の再番号付けを強制するまでその事実が表示に反映されていませんでした。
  - 空のメトリックビューをマウスでクリックするとゴミメモリを参照して――狩野のセッションをクラッシュさせていました。
  - 大きなビットマップフォントを読み込むとエンコーディング対応表の逆変換表の最上位ビットが未初期化でした。
  - PCF フォントの読み込みでクラッシュを起こしていました。
  - 暗黙の点の制御点を移動するとその暗黙の点も移動することにするべきでした。どの点が暗黙の点であるかを示すことにしたので、この振舞いは思いがけないものではありません。
  - 点の番号をつけ直すと、参照に含まれる点の対応づけがずれることを Michal Nowakowski が指摘しました。
  - ビットマップの縦書きメトリックに対するサポートを追加。
  - ベンダ ID を OS/2 テーブルに正しく格納していませんでした。
  - *86 マシンに存在しない丸めエラーが PPC に存在しました。
  - デバッグ中に charview のタイトルにピクセルサイズを表示したいと Werner が要望しました。
  - TrueType 用の新メニューコマンド“`点(P)`→`制御点の中間に移動(B)`”を追加。
  - メニューを (マウスでなく) キーで操作している時にクラッシュが起こることを Werner が指摘しました。
- 2005年12月5日
  - 最初にビットマップビューを作成するとクラッシュしていました (リンカがどのようにメモリを構成しているかに依存します)。
  - SFD ファイルの読み込み時に、スプラインが含まれる文字があるかどうかをチェックし、それがある場合は onlybitmaps フラグをオンにしないようにしました。誰かが指摘したところによると、アウトラインビューをうっかり編集してしまった場合――それが何も有効な変更を行っていないとしても、フォントは永遠にアウトラインフォントであると印づけられてしまいます。これは完璧な修正ではありませんが、ハプニングがあった時に最悪の状態になるのを避けることができます。
- 2005年12月1日
  - UI 翻訳の取り扱いに、私が自作した nomen ルーチンでなく GNU gettext を用いるようにしました。
  - プラグインのサポートを追加。
  - TFM ファイルの解析に、kern テーブルの教会の外側から読み込みを行っていないことを確かめるためのチェックを追加しました。しかし、テーブルサイズは int 型 (32 ビット単位) で表されており、私はインデックスをバイトで表現していたので、それを超えることがありました。
  - TTF フォント内の参照で `情報を得る` を使用したとき、その参照が点のマッチングを行わなかった場合、不適切なエラーメッセージを出していました。
  - Type2 フォント内で endchar を seac として使用するための処理は裸の CFF フォントでのみ動作しており、CFF が SFNT ラッパの中に含まれる (すなわち OpenType フォント) ときにはうまく動作していませんでした。
  - 全ての PostScript 文字列 (著作権表示、ウェイト、ファミリー名など) を UTF-8 で保存することに決めました。これらは全て ASCII で書かなければなりません。しかし、著作権記号が紛れ込むことはよくあります。これは UTF-8 文字列として正しくないために、今までは無限ループを引き起こす原因となっていました。そういうわけで、これに関する多数の問題が解決しました。
  - TTF 命令デバッグ時の白黒 2 色のビットマップのラスタライズを内部ルーチンから FreeType に切替えました。
  - グリッド合わせ/デバッグの設定を、次回プログラム終了時のために (環境設定ファイルに) 保存するようにしました。
  - アンチエイリアスモードでデバッグされている TrueType フォントの灰色の濃淡を見るためのポップアップ情報ダイアログを追加。
  - Werner の示唆により、charview 内でアンチエイリアス表示されているラスタ表示のダイナミックレンジを変更し、背景にあるアウトラインが透けて見えるようにしました。
  - デバッガのラスタウィンドウの背景色をユーザが変更可能に。
  - 曲線上の点が、片方に制御点をもたないと、その時 ff はその点のそちら側の方向は不定であり、好きに変更してよい物と考えます。その方向は、その点のもう片方の向きを受け継ぐものとされます。その結果として、点をまず単純化により片側を直線に変更し (制御点が失われる)、次に線を単純化によって取り除く (方向が失われる) という 2 段階に分かれた処理によって混乱した結果となっていました。
  - (デバッグウィンドウ内で) 変更されたピクセルを識別するためのアルゴリズムを改良。
  - 白黒モードでの `表示(V)`→`グリッド合わせを表示(W)` が壊れていました。
  - グレイスケールのラスタ表示を TrueType のデバッグ中に表示できるように Werner が要望しました。彼はまた、最後以外の命令がピクセル変更を行うと、ff は命令処理が終わっていないうちから 〔changed〕マークをつけていることを指摘しました。
  - エラーウィンドウが複数表示されていました。
  - ユーザが、参照と輪郭の両方を含むグリフや、200% よりも拡大された参照を含むグリフに対して TrueType 命令を追加できないようにしました (TrueType ではこれらの組合せを使用できないので、参照はインラインでコピーしなければなりません)。
  - 重複除去処理の中の Typo がバグを引き起こしていました。エラーは9月15日に加わった物です。
  - スプラインを直線に変換する条件処理を追加。
  - SFD ファイル内の UTF-7 出力ルーチンは、UTF-8 を正しく変換していませんでした。
  - Panov は、単純化処理にまたエラーを発見しました。直線を描いているスプラインを直線に変換するのを本当に積極的にするようにしました。
  - Panov の報告した他のバグ:
    - あるグリフの Unicode 値を変更すると、そのグリフへの全ての参照を変更する必要がある。
  - Panov が提示したさらに 4 つのバグ:
    - SFD ファイルに符号値をもたないグリフが存在すると、クラッシュを引き起こす。
    - いくつかの文字が欠けている BDF フォント (つまり、部分的なディスプレイフォント) があると `エンコーディングを強制(F)`→`オリジナル` がクラッシュしていました。
    - `移動(G)` ダイアログが未初期化値を解放しようとしていました。
    - `移動(G)` ダイアログに、UTF-8 でなく Latin1 で初期化された文字列が含まれていました。
  - うーん。changedsincelasthinted フラグは TrueType には当てはまらないようです。それに相当する (と思われる) のは、スプラインを含んでいるものの、命令が含まれていないグリフに該当します。
  - Panov の要望により、より簡便な構文 (配列を作成し各要素を代入する) で配列を構築する方法を追加。
  - 時々、`エンコーディング(E)` メニューに EUC-CN と GB2312packed という項目が両方とも表示されることがありました。
  - GB12345 のためのプラグインを作成し、(SFNT テーブル内で) GB2312 と同様に扱えるようにしました。
  - ほとんど直線に近いスプラインを直線に変換するスクリプト関数 NearlyLines() を追加。
  - AddExtrema() を調整し、既存の端点に非常に近い極値を追加しないように変更しました。
  - 質問ダイアログへの答えを収めた配列を終端していない箇所がありました。
  - ステムデータベース内でのクラッシュを修正。
  2005年10月28日
  - Mac のインストール手順に関する追加作業。
  - Web サイトと README の類のインストール文書を書き直し。
  - cygwin では、"/" をリストアップすると (実体の無い) 特殊ディレクトリ /cygdrive を含めるようにするようなハックをディレクトリブラウザへに追加 (これにより、PC でディスク全体へのアクセスが可能になります)。
  - スクリプト関数 NearlyLines() を追加。ほとんど直線に近いスプラインを直線に変換します。
  - 今までは、すべての OpenType 合字を OFM (TFM) ファイルに書き出していました。しかし、おそらく 'liga' と 'rlig' 合字のみを追加するべきでしょう。
  - Omega には、幅 0 のグリフが存在しないと考えるバグがありました。その結果、結合アクセントなどをすべて存在しないと誤認することになります。そういうわけで、全ての 0 幅グリフを最小の正の値をもっているものと強制することにしました。
  - TTF/OTF フォントを読み込むとき、FF は選択型置換 (および複数置換にも?) に 0 番目のタグを付与していました。
  - ファイルからの文字列を読み込み・書き出しを可能にするための 2 つのスクリプト処理ルーチンを追加しました。
  - ClearTable() スクリプトコマンドにおけるテーブルタグの解析が間違っていました。
- 2005年10月23日
  - FontForge をコマンドラインから起動させるのではなく、X11 Applications メニューに項目を追加することにより、Mac 版に Mac らしさをちょっと付け加えました。
  - 数年前から cvexport.c にあった範囲外の配列参照を David Binderman が指摘しました。うがっ。
  - TTF 命令を操作するためのいくつかのスクリプトコマンドを追加しました。

    以下の新規スクリプト関数を追加:

    - SetMaxpValue("item-name", value)
    - GetMaxpValue("item-name")
    - ClearInstrs()
    - ClearTable(tag)
    - AddInstrs(thingamy,replace,instrs)
    - FindOrAddCvtIndex(value[,sign-matters])
    - ReplaceCvtAt(index,value)
    - GetCvtAt(index)
    - PrivateToCvt()
  - OS/2 Width フィールドをスクリプトから参照する方法がないことを Daniel Gillmor が指摘しました。彼はそれを行う 2 つの新しい関数を追加するパッチを提供しました。私は、(panose 以外の) OS/2 の値を設定する方法が無く、それ (と値を取り出す方法も) が用意されてあるべきだということに気づきました。

    以下の新規スクリプト関数を追加:

    - SetOS2Value("item-name", value)
    - GetOS2Value("item-name")
    - SetPrivateValue("item-key","item-value")
    - GetPrivateValue("item-key")
    - HasPrivateValue("item-key")
    - RemovePrivateValue("item-key")
  - OFM ファイルに関する多数の修正。
  - マークから基底グリフへの照合を複数のアンカークラスとともに出力するとき、それがいくつかの基底クラスから使用されていると ff は基底グリフを範囲テーブルに何回か出力していました。間違い。
- 2005年10月18日
  - SVG の polygon 要素の読み込みに厳格すぎていたことを狩野が指摘しました。
  - 多数のカーニングの組み合わせをもつフォントでは、OFM 出力が動いていませんでした。
- 2005年10月16日
  - OFM ファイルに関する多数の修正。
  - 'nukt'「合字」置換のデーヴァーナーガリー文字に対する適切なデフォルトを追加。
- 2005年10月15日
  - どのグリフが出力されたかを決定するルーチンへのパッチは、ビットマップのみのフォントを破壊していました。
  - OFM ファイルには合字は含まれません。
  - OFM パッチが TFM 出力を破壊していました。
- 2005年10月12日
  - OFM ファイルの出力と解析のサポートを追加 (できたと思います)
  - 完全に空の (つまり、新規作成直後の) フォントデータベースからフォントを出力しようとしたとき、「なぜ .notdef の符号位置が -1 なのか」という馬鹿げたエラーを出していましたが、これはよくないアイディアでした。
  - スクリプトの GlyphInfo 関数に 4 つの新しい情報型を追加。
    * LayerCount
      グリフ内のレイヤの個数 (ふつう 2)
    * RefCount
      グリフ内の参照の個数
    * RefNames
      すべての参照名を含む配列を返します (長さ 0 になることもあります)
    * RefTransform
      すべての参照の変換行列からなる配列を返します
  - 1em 以外の幅をもつグリフを、「出力に値する」とするのはやめました (widthset を必要とします)。以前は両方を使用していました (大昔、PfaEdit が sourceforge に移行するよりも昔には、widthset ビットは存在しなかったからです)。今となっては、で幅が 1 em でないグリフが作成される機会 (マークや、(幅が 1 em以外の任意の値を取る) 固定幅のフォントの場合) があまりにも多くなりすぎました。
  - Type3 PDF フォントを印字するときに名前をつけるようにしました。
  - Michal Nowakowski からのパッチ。私の考案した数字による前置記法で TrueType 命令を編集するとき、数字が (1 バイトではなく) 1 ワードを必要とするときにクラッシュしていました。
  - PDF ファイルからのフォントの読み込みをいくつかサポート。
    - PDF Type3 の限定されたサポート (画像を除く)
    - (Hex, 85, Flate, RLE の) 4 種のデコードフィルタのみをサポート (lzw, fax, JBIG, DCT のサポートは無し)。
  - ステムデータベース (自動ヒント) を構築するためのルーチンは点データベースを準備し、それからすべてのスプラインを単調増加/減少する線の集合に変換するためのルーチンを呼び出します。しかしそのルーチンは長さ 0 のスプライン (と、それに付随する点) を削除してしまい、その結果点 DB が間違ったものになる可能性がありました。
  - メモリリークを修正するいくつかのパッチを Stefan Wagner が提案しました。
  - (othersubrs を呼び出すなどの) Type1 の flex の慣習を使用している Type2 フォントを Stefan Wagner が送ってくれました。Type2 には othersubrs 演算子は無いし、othersubrs サブルーチンを格納する場所もありません。しかし、それをサポートするのは簡単なので、なぜしないことがあるでしょう。もちろん、それが不正なフォントである旨の警告はします。
  - Stefan Wagner は (CFF 名前インデックス内の) フォント名に UTF-8 バイトオーダマークの入ったフォントを送ってくれました。PostScript は、FontName は ASCII の印字可能文字でなければならないとしていますが、読み飛ばすのは簡単なことです。
  - プロポーショナルフォントでは結合文字の幅のデフォルト値が 0 とする (さもなければ、古いお馬鹿な各種のウィンドウシステムとの互換性のために 1 em ユニットとする) べきであるのに対し、固定幅のフォントでは単一の幅をデフォルトとするべきであるという事実を Stepan Roh が指摘しました。フォントが固定幅か同かを判断するのには panose フィールドを使用します。 結合グリフの幅が

    実際には固定幅フォント内の す べ て の グリフは 1em ではなくて所定の固定幅をデフォルトとすべきです。

  - 新しいダイアログ「ヒント→'maxp'を編集...」を追加。ユーザが定義された関数個数、スタックの深さ、ストレージの用法、トワイライトポイントの個数という ff が算出することのできない値にアクセスできます。
  - cygwin で透明画像がうまく動くようにする方法が分かりました。
  - Michal Nowakowski が、負の値が cvt 内で重複していることを指摘しました。
  - cvt テーブルのサイズを 0 にセットするとクラッシュするのを直すパッチを Michal Nowakowski が提供しました。
- 2005年9月29日
  - 多くの (ucs2) ルーチンに、utf8 入力を追加。BMP 外の面のグリフを *-UnicodePlane-1 (第 1 面)、*-UnicodePlane-2 (第 2 面) などの符号化方式の BDF フォントで描画する最低限の機能を追加。
  - Private 辞書からの値 (BlueValues, StemSnaps) を cvt テーブルに追加するコマンドを追加。
  - 「cvt を編集」ウィンドウは、ポップアップ直後に何かを描画しようとしたときに失敗していました (その後の再描画は正しくできていました)。
  - 自動命令づけコードのメモリ使用を改良するための Mical Nowakowski からのパッチ。
  - カーニングクラスを含まないフォントにおいて、サンプルテキストの印字が壊れていました。
  - cygwin はとても変な共有ライブラリの扱いを行っており、それをまったくサポートしていませんでした。
  - Type2 charstring 内の endchar が (ほとんど) seac を意味すると言う廃止された用法をサポートしていませんでした。今はしているはずです。
  - OS/2 テーブルの「組版上の行間」の値が SFD ファイルか間読み込まれていませんでした。
  - フォントを開くダイアログで 'gai' ファイルを表示するようにしました。
  - いくつかのニモニックを間違えていました。修正。
  - bdftopcf は、DEFAULT_CHAR が明示的に指定されていないときは符号値 0 をもつグリフをデフォルトグリフとして使用します。デフォルトが存在しないことを示すためには DEFAULT_CHAR を -1 とするとうまく動くようですので、グリフ 0 をデフォルトとしたくない場合にはそれを使うようにしました。
  - BDF の出力時に、アウトラインフォントを出力せずに fnt または pt3 のビットマップフォントを出力した場合、foo-*-13.bdf のようなファイル名が使われていました。"-*" を削除しました。
  - デバッグ以外のときにも複合グリフの点の番号づけをサポート。
  - cvt エディタが、テーブルの長さを変更したときにクラッシュすることを Michal Nowakowski が指摘しました。
  - 新しいスクリプト関数を 2 個追加:
    - MoveReference(xoff,yoff,[ref-name/ref-unicode]+)
    - PositionReference(x,y,[ref-name/ref-unicode]+)

    これらは選択中の全グリフから、指定されたグリフのどれかへの参照を含むグリフを検索し、見つかった参照を (xoff,yoff) だけ平行移動するか、その参照を絶対位置 (x,y) に配置するかのどちらかを行います。

  - Type2 CFF CID フォントからの横書き用メトリックの読み込みが正しくありませんでした。ほとんどの場合、それは hmtx テーブルを読むことによって得られた間違った幅の値を FF が補正してしまうという事実によって隠蔽されていました。しかし裸の CFF フォントの場合、または幅に関する外部のソースの存在しない 'gai' フォントの場合、ff は失敗していました。
  - ScaleToEm を呼び出したときには Private 辞書内のほとんどの項目を拡大・縮小する必要があることを Alexej Kryukov が指摘しました。
  - "gai" フォントにより明らかになった CID フォント表示の 2 つの問題点を修正。
  - Michal Nowakowski は、私の生成した TrueType 命令の問題点を指摘しました――さらに、それにグリフを添付し忘れていることも。ふんげあ。
  - 拡張可能なグリフ情報を TFM ファイルから読み込む処理が、エンコーディングの変更以来壊れていました。
- 2005年9月19日
  - ff は AAT クラス (カーニングクラス等) を正しく読み込んでいませんでした。1 個余分に要素を読み込んでおり、問題を起こす可能性がありました。
  - SVG 出力にメンバーを含まないカーニングクラスがあるときの処理を修正。
  - OS2FigureCodePages 内で境界を外れた配列参照を行い、Mac でクラッシュしていました。
  - Type1 フォントの読み込み時に、seac 参照の Unicode 符号位置を正しく設定していませんでした。これはおそらくさまざまな処理を失敗させるでしょう。少なくとも「参照で置換」は間違いなく失敗します。
  - TrueType の参照に含まれる Round-to-Grid ビット (点がマッチしない参照がある場合は基本的に常にセットする) をセットするための DefaultRoundToGrid() スクリプト関数を追加。
  - 参照およびアンカーポイントに含まれる TrueType 点のマッチ処理のサポートを追加。
  - 新しいルーチンにジャンプするときに注意を喚起するデバッグルーチンのヒューリスティックを、複合グリフでより良く動作するように改善。
  - 命令を含まないグリフをデバッグしようと試みたとき、競合状態が発生し、その競合が片方に優位であった場合に ff はハングしていました。
  - 複合グリフ内の点に番号づけを行っていませんでした。これを見ることができるのは、複合グリフ上で「表示→グリッド合わせを表示」を行ったときだけでした。
  - 複合グリフのデバッグ時に、ff はいくつかの参照が平行移動 (または拡大・縮小・回転) していることを忘れており、表示に失敗していました。
  - FF は TrueType の参照に適用される "RoundToGrid" ビットの記録を保持するのに失敗していました。
  - TrueType のデバッグ時に、ある輪郭の最後から 2 番目の点が内挿によって求められている場合、輪郭の境界が間違った位置に描画されていました。
  - デバッグ時に、DPI/ポイントサイズを文字ビュー内に格納していました。Werner は、それをグローバルにする (つまり、異なるグリフがすべて同じデフォルトを共有する) ことを提案しました
  - いくつかの Unicode コードブロックが (それらがパイプライン上にあっただけなのか、何らかの類似の理由により) 別の場所に移動し、別のいくつかがパイプラインに追加されました。
- 2005年9月15日
  - Type1 出力に含まれる flex ヒントを含むグリフを平行移動した物を参照するのにはサブルーチンは使用できません。
  - 重複処理の、丸めエラーに伴う別の問題を隠しました。
  - ローカルエンコーディングに関する警告を 1 個しか出さないようにしました。
  - 2 次フォントでは、重複除去メニュー項目は表示しないようになっていますが、ホットキーを使うとコマンドが呼び出されて (その結果、破滅をもたらして) いました。
  - ヒントマスクが矛盾しているかどうかを決定するための点の情報検知コードにタイプミスがありました (垂直ヒントと水平ヒントをマッチさせていました)。
- 2005年9月12日
  - 古いフォントに含まれるuse_my_metrics をセットするためのスクリプトコマンド DefaultUseMyMetrics() を追加。
- 2005年9月11日
  - FF が参照をあるフォントから別のフォントに貼り付けるとき、参照を含むグリフの幅を、基底グリフとなるグリフの幅から決定するようにしました。(なぜなら、Aacute をあるフォントから別のフォントに貼り付ける場合、"A" グリフの幅は新しいフォントでは全く個となる可能性があるからです。オリジナルのフォントの幅を使うと間違った結果となるでしょう)。

    これに伴う問題が 2 つあります:

    1. これは前方参照を考慮に入れず、参照の変更された幅ではなく、オリジナルの幅を使用します。
    2. Alphatonos の幅は Alpha の幅とは異なるので、(おそらく) Alphatonos では混乱が起こるでしょう。

    すべての貼り付け処理が完了した後に幅を操作するのではなく、物事を正しく行うために use_my_metrics を参照します。

  - 現在のコマンドによって貼り付けられるグリフへの前方参照を取り扱います (かつて動いていましたが、エンコーディング処理の変更により壊れていました)。
  - 既に閉じられたフォントからの参照を貼り付けるための多数の修正。
  - 複合グリフにおける TTF の "_USE_MY_METRICS" ビットのサポート。これには以下の処理が伴います:
    - TrueType フォントの読み込み時に値を保持
    - 出力時に適切な値を設定
    - SFD ファイルに値を格納
    - 「エレメント(L)→情報を得る(I)」コマンドで変更方法をユーザに提供
- 2005年9月9日
  - FF は、複数のグリフが同じ名前をもつ BDF フォントを与えるとクラッシュしていました。
  - 複数のグリフが同じ名前をもった BDF フォントの出力を避けようと試みるようにしました。これにより、1 個のグリフに複数の符号位置を割り当てるという、BDF がサポートしていない概念に伴って起こります。そのような事態を発見したときにはグリフ名を変更するようにしました。
  - 依存するサブメニュー内の未初期化変数 (符号化の変更以来壊れていました)。
  - 参照されたグリフを含んでいないフォントへ参照を貼り付けたとき、オリジナルのアウトラインをコピーすると言う選択肢が出力されなくなっていました (符号化方式の変更以来壊れていました)。
  - グリフに重複符号化されたグリフを含むフォントを併合するとクラッシュしていました。
  - 私は非常に古風です。私はエラーメッセージを好んで stderr に出力していました。しかし、それらを見ない人がたくさんいます。おそらく、彼らは X からそれらを起動し、標準エラー出力がどこか見えないコンソールウィンドウに出力されているのでしょう。よし、フォントエラーに関する警告メッセージを出力するための小さなウィンドウを作ることにしましょう (例えば、OTF フォントを読み込むとき、範囲外のグリフについて文句を言うなどのため)。
  - PostScript ビットマップフォントのサポート。以下の修正が含まれます:
    - (単純な形の) imagemask PS 演算子を解析する機能
    - Type3 が PS ビットマップであることを検出し、それを人々が編集できる通常のビットマップに変換するためのコード
    - ビットマップへの (imagemask を使用した) PS Type3 フォントへの書き出し。
    - EPS ファイル内の画像に対しては正しく動いていたものの、同じコードが charproc に詰め込まれてオンデマンドで実行されたときに恐ろしい結果を招いていた、出力ルーチンのバグを修正。
  - FF は 1 個の単純配列として指定されたエンコーディングを扱えませんでした (Type1 の使用では許されませんが、Type3 では自明です)。
  - また、エンコーディングパッチ以来、ff の Type3 処理は壊れていました。
  - フォントが 256 個よりも少ないグリフしか含んでいない場合、ff は format 0 cmap サブテーブルを正しく出力できていませんでした。
- 2005年9月4日
  - フォント情報ダイアログの [TTF 値] を [OS/2] に名称変更し、その下に含まれていた [Panose] をタブに分離。更に多くのフィールドを追加し、OS/2 のほとんどすべてをカバーします。
  - Pavel Roskin の教唆により、未初期化変数の数値を固定。
  - Pavel Roskin よりのいくつかのパッチを適用。
  - WorthOutputting() スクリプトコマンドは、必要ない場合でも 1 個の引数を必要としていました。
  - SetCharCnt() コマンドはエンコーディングの変更以来壊れていました。

これ以前の変更点
PfaEdit (FontForge の旧名称) への変更点