Releases: fontforge/fontforge
FontForge January 2023 Release
What's Changed
- Display the block name for reserved code points by @dscorbett in #4934
- Don't respond to wheel scrolls for buttons/tabsets by @jtanx in #4940
- gfilechooser.c: fix behaviour when changing file type by @jtanx in #4939
- Better control-drag handling for line-adjacent points by @skef in #4945
- Fix resolution of program root by @jtanx in #4956
- Fix missed nonextcp edit by @skef in #4958
- Support ToUnicode extraction from PDFs for Type3 fonts by @aidos in #4961
- Add resource file and Windows application manifest by @jtanx in #4950
- Fix name extraction for Type3 fonts from pdfs by @aidos in #4960
- cmake: Install fonttools and pycontrib by @jtojnar in #4941
- Fix InfoPlist.strings file name. by @MaddTheSane in #4962
- Fix normalisation of absolute paths by @jtanx in #4963
- Handle non-array cm transforms while reading graphics stream from PDFs by @aidos in #4965
- Fix rect extraction from graphics stream for type3 fonts by @aidos in #4967
- Change which lookup types are suggested for jamo features by @dscorbett in #4994
- Better line handling in simplify by @skef in #4981
- Use 'cmap' for Adobe-Identity-0 CID fonts by @dscorbett in #4993
- Fix ChangeGlyph calcluations relative to new nonext/prevcp conventions by @skef in #4979
- Docs composite glyph by @skinkie in #4971
- FVSplineFontPieceMeal: Check that the clut is present before applying conversion by @jtanx in #4999
- Expand the lists of languages and scripts by @dscorbett in #4982
- Add flags to Python font.transform() by @skef in #4980
- Support setting SplineChar width from importOutlines. by @frank-trampe in #5005
- Undefine "extended" macro temporarily on GNU Hurd by @anthonyfok in #5047
- Define PATH_MAX and MAXPATHLEN for GNU/Hurd compatibility by @anthonyfok in #5046
- Fix Ascent & Descent Importing from SVG Font by @GroveDG in #5035
- Prevent floating point shenanigans in loop termination (fixes #5012) by @skef in #5013
- GroupFindLPos() in fontforgeexe/groupsdlg.c null pointer fix by @Omnikron13 in #5025
- Fix drawing outside of expose calls by @jtanx in #4949
- Fixed one more typo by @MahdiAljazairi in #5055
- Upgrade GitHub Actions by @cclauss in #5014
- Prevents memory underflow in GFileMimeType() in gutils/fsys.c by @Omnikron13 in #5018
- Add a preference for saving editor state by @khaledhosny in #5044
- splineutil.c: prevent hang on nan input by @jtanx in #5058
- Shell-quote command sent to compressor in BDF by @ctrlcctrlv in #5060
- Fix pfadecrypt bugs by @zjw in #5074
- Include
SFDUTF7
functions inlibfontforge.so
by @ctrlcctrlv in #5078 - splinefit.c: Improvements to merge/simplify by @Alatius in #5095
- RFE: [FEAT] When reference to non-existent glyphs are present in an OpenTy… by @rajeeshknambiar in #4097
- docs: Python scripting - update font.mergeFeature with details of boo… by @rajeeshknambiar in #5107
- Fix logic for CharString double-movetos after PR 4685 by @skef in #5120
- Upgrade to Unicode 15.0.0 and fix and expand the script lists by @dscorbett in #5110
- Fix broken link on scripting page by @bkmgit in #5135
- Fix typo in man page by @h3xx in #5106
- Fix painting behaviour of the ruler linger window and layer change dialog by @jtanx in #5163
- fontinfo.c: fix crash from uninitialised other_pos by @jtanx in #5165
- tottfgpos: Fix needless warning about 16-bit field by @Finii in #5136
- ufo.c: emit guidelines key by @jtanx in #5166
- fvmetrics.c: partial revert of 1033bc6 by @jtanx in #5167
- Update tranlsations from Crowdin by @jtanx in #5168
- Fix woff2 decoding by @jtanx in #5160
- Record unicode cmap encodings when one glyph is in multiple slots by @skef in #4586
New Contributors
- @jtojnar made their first contribution in #4941
- @skinkie made their first contribution in #4971
- @anthonyfok made their first contribution in #5047
- @GroveDG made their first contribution in #5035
- @Omnikron13 made their first contribution in #5025
- @MahdiAljazairi made their first contribution in #5055
- @cclauss made their first contribution in #5014
- @zjw made their first contribution in #5074
- @rajeeshknambiar made their first contribution in #4097
- @bkmgit made their first contribution in #5135
- @h3xx made their first contribution in #5106
Full Changelog: 2022030...2023010
FontForge March 2022 Release
This release contains numerous fixes and feature updates since the last release.
Major updates:
- Python plugin support (#4642, #4682, #4671) @skef
- Overhauled resource/appearance management (#4704) @skef
- Merge/Simplify improvements (#4567, #4697) @linusromer
- Updated Unicode support to Unicode 14.0.0, with nameslist functionality now directly integrated. (#4810) @jtanx
- Add Points Of Inflection / Balance / Harmonize (#4900) @linusromer
- Mac bundle/startup fixes (#4827) @jtanx
- Language system tag list/script range/feature list updates (#4561, #4852, #4854, #4855) @dscorbett
- You can now substitute glyph(s) by
NULL
(#4619) @ctrlcctrlv
Changes to default behavior:
- Reserved Font Names no longer written by default when adding SIL OFL to a font (#4531) @ctrlcctrlv
- UFO include path is altered, please update your fonts if needed (#4631) @ctrlcctrlv
Build changes:
- The minimum supported Python version is now Python 3.6
- Libuninameslist is no longer used or required
- FontForge is now compiled with -Wall by default
- Cidmaps are now bundled
FontForge 20th Anniversary Edition
This release falls on the 20th anniversary of the first release of FontForge back in 2000. It brings a wide range of minor tweaks and bug fixes for the user interface and file format handlers and a special splash screen to commemorate the big day.
FontForge 2020 March Release
Significant changes include the following.
- FontForge now has much improved stroke expansion functionality. The main change is that it actually works most of the time. New features include support for arbitrary convex nibs and the miter-clip and arc join styles from SVG 2. All functionality is accessible from the Python and native APIs. (By @skef.)
- Remove overlap handles certain important edge cases better. (By @skef and @frank-trampe.)
- The Python API now has a function called
genericGlyphChange
that matches the "Change Glyph" command in the GUI. See #4133 for more details. (By @skef.) - The Python API now has functions for getting Unicode script and for interrogating glyph boundaries. (By @ctrlcctrlv.)
- One can now use text flags (rather than just numerical flags) when opening a font file via the Python API. (By @skef.)
- UFO import now outputs the note field properly. (By @skef.)
- SVG import is much more robust. (By @skef.)
- We have dropped most gnulib and autotools logic in favor of CMake, which dramatically simplifies the build system and just as dramatically improves build time. (By @jtanx.)
- As part of the switch to CMake, per the deprecation of Python 2, and per the lack of objections to the proposal on the mailing list, we have dropped support for building FontForge with Python 2 support. The non-build-system Python 2 code remains, but it is neither tested nor maintained nor supported and is likely to follow a trajectory of decay and then removal.
- Documentation is now rendered in Sphinx, which makes maintenance and improvement easier. (By @jtanx.)
- Translations now happen on crowdin, which makes contributions easier. (By @jtanx.)
- We got such a contribution for Croatian. (By @milotype.)
- Character view point coloring is more consistent, and preview fills support transparency. (By @skef.)
- The user can now move and close tabs in the character view. (By @ctrlcctrlv.)
- The metrics view now allows for entry of negative kerning values and runs a bit more smoothly. (By @ctrlcctrlv.)
- There is now a warning when a user is about to discard an unsaved script. (By @ctrlcctrlv.)
- We fixed bugs all over, as always, with particular attention given to the metrics view, Python, Spiro, and high-resolution displays.
Notes on build system changes:
- libgutils and libgunicode have been combined into libfontforge
- libgdraw and libfontforgeexe have been combined into the fontforge executable itself
- No development files are installed (headers, or pkg-config). This is because we do not provide a stable API or ABI to work against, nor are the headers actually well configured to be used externally. We are also not aware of any maintained product that compiles against FontForge itself.
FontForge 2019 August Release
Along with the usual bugfixes, there have been a couple of new features worth calling out:
- Added Croatian translation
- Added user decompositions
- New graphic for the splash/about screen
- Images embedded in SFDs are now serialised as PNGs
- This is enabled by default, but may be turned off with the 'WritePNGInSFD' option.
- A new tag is used to identify this mode; 'Image2', instead of 'Image'
- This requires FontForge to be compiled with libpng support. If not compiled with libpng, FontForge will revert to the old method of serialising RLE encoded raw images.
As part of an ongoing effort to clean up the code base, there have additionally been multiple build system changes:
- Python 2 support is deprecated. It is strongly recommended to build with Python 3 support. Python 2 support will be removed in a future release.
- Both the Windows and Mac builds are now built with Python 3 instead of Python 2.
- The minimum supported version for the Mac build is now MacOS Sierra (10.12)
- FontForge no longer uses gnulib
- collab support has been removed
- The build system now expects libuninameslist to be present, and will fail if it is not found. Building without libuninameslist must be explcititly specified using
--without-libuninameslist
FontForge 2019 April Release
This is a bugfix focused release.
Most notably, it fixes a crash on MacOS when browsing files.
Plugin support and direct http/ftp browsing support has also been removed.
FontForge 2019 March Release
This release, the first since 2017, includes countless small bug fixes and a few significant features.
- Complete GDK support, enabled by default on Windows and Macintosh, from @jtanx.
- Enhanced UFO 3 support, with separate import/export paths for UFO 2 and UFO 3, from @frank-trampe. See the technical bulletin here for more information.
- Improved feature file support, from @skef and @khaledhosny.
- WOFF2 support, from @jtanx.
- Unicode 12.1.0 support, from @JoesCat.
- Extended Python interfaces, from @skef.
July 2017
October 2016
This release introduces a new icon set, new functionality for custom icon selection graphics, support for GlyphOrderAndAliasDB files, and support for Unicode 9.0.
It also fixes a number of small bugs relating to certain bitmap typefaces, stroke expansion, handling of CID ranges, and the user interface.
There are two tags and package sets. 20161004 is the original release, and 20161005 adds support for Ubuntu 16.04 and 16.10.
The Debian/Ubuntu packages are on Launchpad.
April 2016
This fixes a number of bugs and crashes and adds a few small features. Most importantly, this release comes with a working Macintosh package.
Mac users must be running Mac OS X version 10.10 or later.
Please consider supporting ongoing development with a donation.