Changes since the last release may be found by performing a "cvs log" command on the file stamp.c.
TEGEUS:
Tell me,
What is your opinion of Progress? Does it, for example,
Exist? Is there ever progression without retrogression?
Therefore is it not true that mankind
Can more justly be said increasingly to Gress?-- A Phoenix too Frequent
Christopher Fry, 1950
"The trouble is," he said, "is that things never get better,
they just stay the same, only more so.--
FaustEric
Terry Pratchett, 1990
The big change is this release is that every font database can now contain multiple layers. Before this all layers in a font used the same type of splines and there were only 2 or 3 of them.
Now there may be any number of layers, and each layer can contain different types of splines -- so one database can contain both quadratic and cubic data and can be store data for both PostScript and TrueType fonts.
In a normal font all glyphs have the same number of layers (this is not true
in a type3 font, which each glyph may have it's own set of layers). You may
set the number, names and types of layers width the Element->Font
Info->Layers
pane.
In the font view you can select which layer is active (and displayed) with
the View->Layers
menu item. You can copy selected glyphs
of one layer to another (automagically adjusting the spline type if needed)
with Edit->Copy Layer To Layer
. You can compare to layers
for differences with Element->Compare Layers...
.
In the character view the Layers palette has changed. The things which controlled
the visibility of hints have moved to the View->Show
menu
(as have some other entries that used to be in the top level
View
menu). The layers palette solely displays the glyph's layers
and controls which layer is active.
The File->Generate Fonts...
dialog allows you to specify
which layer is to go into the font. Note that many things remain common:
the hints and truetype instructions apply to all layers. GPOS, GSUB, kern,
and morx information is common all layers. The outlines may differ in detail,
but outlines from which a font will be generated should have the same shape.
Add new python stuff to handle layers:
font.layers[1].name = "Foreground" font.layers[0].is_quadratic = TRUE
del font.layers["Extra layer"]
font.layers.add("name",is_quadratic)
(this object has an iterator which returns the names of all layers)
So the command line now takes an --allglyphs argument, and the scripting open commands now take a value of 4 for the openflags argument to mean this.
(If you hold down the
If a line's unit vector is close enough to the font's italic slant, then
prefer the unit vector based on the italic slant instead.
Added an experimental mode which allows to build glyph data based on a
preexisting hint layout and extend it with additional stems.
(Also provide default values now when [Add]ing private entries in Font Info.
He also tells me that the internationalized weight classes don't get parsed
properly.
So instead, when loading and saving a Type2 font use double precision temporaries. This should mean there will be no errors to accumulate. There will be slight errors when converted to SplinePoints, but these errors will not accumulate.
Change the "Ref with bad ttf transformation" so that it checks for integral coordinates too.
Add a problem which will look at the glyphs a lookup is active for, and then checks the script of each glyph against the scripts attached to the features which invoke this lookup. If the script doesn't match anything, then complain.
Barry also complains that spiro points are rounded. This is more debatable. The bezier conversion will put bezier points where there were spiros, so if we don't round the spiros we get non-integral points. But if we do round the spiros we mess up the splines. Hmm.
Add subtables to hold:
This is a finer grain approach, but similar to, the previous one. There we skipped the whole table, presuming it redundant. But in CharisSIL the morx table has a lot of functionality orthogonal to GSUB. So we must parse both.
Make the window open at 33% instead.
- Previously I forgot to mention Alexey's changes in DStems hinting code.
$ ./configure $ make $ make install $ make fontforgegtk $ make install_gtk
About all it can do is open a font and display it. If a menu command does not require a dialog then it might work. There are probably scores of bugs even in the little bit that supposedly does work.
I think the open dialog is extremely ugly. That's not my fault, that's gtk's widget. The open dialog is far less functional than the one in the gdraw fontforge -- I can't figure out how to enhance it.
In theory.
Add python support for the contour_name.
However, they ain't gwana change, so I must. Always dump out an Encoding dictionary even when it shouldn't be needed.
It expected to find spiros in a glyph marked as being edited in spiro mode, and was surprised when none were available.
The new stuff all worked as far back as 10.3 -- but FontForge source is no longer compatible with 10.2.
Edit->Select->Autohintable
$ ./configure --enable-pyextension
More debateable: if we change "f" to "u0066" then change "f.sc" to "u0066.sc" and "f_f_l" to "u0066_u0066_l" (and recurse on those name changes).
So, I'll support this now as my only way of handling type3 style svg fonts with embedded bitmaps.
The standard points out that URIs are limitted to 1024 bytes, but I don't pay any attention to that restriction, and will stuff arbetrary sized images into these things.
Also extend fontlint to do validity checking in glyphs against the 'maxp' table. (This won't matter when editing fonts, as ff will fixup the maxp values when it generates the font, but there might be some existing fonts with buggy 'maxp' values).
Added some new members to glyph:
Also the contents of one of the structures has changed a bit, and a value that used to live in one field has moved to another (the ppem value moved from (exc)->size->metrics.x_ppem to (exc)->size->root.metrics.x_ppem.
Well, David warned me that this might happen.
Warn the user (rather than just silently failing) when we have a freetype version mismatch.
The dialog is no longer modal, however it does not get updated with each change to the font (that would make moving a point around in the outline view far too sluggish), instead there is a [Refresh] button the user can press to force an update.
So I've added a Ligature Caret count to the Element->Glyph Info dialog to give the user control over it when necessary.
The first creates a new layer by interpolating between the current layer
and the layer in the first argument.
The second creates a new glyph in the font by interpolating between the first
two arguments. The glyph's unicodecode point and name will be copied from
the first argument (the font must not already contain this glyph).
If amount is 0 the result will look like the first glyph, if 1 then like
the second.
% MF2PT1: bbox 0 90 834 422
where the third (so called) bounding box entry is actually the glyph's advance width. I was reluctant to use this at first, because that clearly isn't something that belongs in a bounding box...
Earlier Changes
Changes to PfaEdit (predecessor to
FontForge)