変更点 (拡張とバグ修正)
最新のリリース以降の変更点は、ファイル stamp.c を "cvs log" コマンドで調べれば分かります。
-
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日
-
2005年9月29日
-
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日
-
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() コマンドはエンコーディングの変更以来壊れていました。
-
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日
-
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 フォントの解析に伴ういくつかの問題を解決。
これ以前の変更点
PfaEdit (FontForge の旧名称) への変更点