Support for writing SFDs compatible with previous versions of FontForge is hackish to non-existent.
Possible Solutions
Handling SFD version as an attribute of the SplineFont
Changes
Add a new variable sfdb in the splinefont struct.
Read SplineFontDB from SFD files into sf->sfdb.
Write sf->sfdb into SFD files as SplineFontDB.
Set version in the SFD writing process from sf->sfdb.
Set sf->sfdb in the splinefont constructor from a global constant SplineFontDBLatest.
Add a box in Font Info to allow changing sf->sfdb with a sanity check. Add a button to set it to the latest.
Add a preference to allow warning about opening a legacy file and suggesting incrementing the version. This would likely be the default, as the cases in which one would want to preserve the version would be perhaps plentiful but limited to a small number of users.
Add getters and setters for scripting bindings.
Upsides
A team using different versions of FontForge could seamlessly open/save the same file.
Downsides
File format upgrades would not happen automatically.
Adding SFD generation
Changes
Add version as a parameter to SFD generation calls.
Add SFD as a format in the Generate process, with its own option palette.
Upsides would be as follows.
SFD version would automatically keep pace with software version.
Downsides
A mixed-version team would need to use the Generate dialog for every save.
The script bindings would be difficult since we do not support Generate options very well there.
Problem
Support for writing SFDs compatible with previous versions of FontForge is hackish to non-existent.
Possible Solutions
Handling SFD version as an attribute of the SplineFont
Changes
sfdb
in thesplinefont
struct.SplineFontDB
from SFD files intosf->sfdb
.sf->sfdb
into SFD files asSplineFontDB
.version
in the SFD writing process fromsf->sfdb
.sf->sfdb
in the splinefont constructor from a global constantSplineFontDBLatest
.sf->sfdb
with a sanity check. Add a button to set it to the latest.Upsides
Downsides
Adding SFD generation
Changes
version
as a parameter to SFD generation calls.Downsides