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
genericGlyphChangethat 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.