変更点 (拡張とバグ修正)
最新のリリース以降の変更点は、ファイル 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日
-
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日
-
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() コマンドはエンコーディングの変更以来壊れていました。
これ以前の変更点
PfaEdit (FontForge の旧名称) への変更点