-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make formatVersion in metainfo.plist a major/minor #78
Comments
Suggest to only ever to increment by 0.1, and not go over 3.9. After that 4.0 is inevitable and then we should change the format specifier in |
What about, instead of changing the type of the existing formatVersion element from int to float (which would break existing implementation), we add an additional int element We could settle on a versioning policy whereby we only ever change the major version when: 1) we remove support for existing pieces of data; or 2) change their semantics in a breaking way. Whereas we would bump the minor version every time we add extra elements or attributes to existing elements or define new |
(maybe |
Alternatively, we would be forced to bump the formatVersion directly to |
I like the |
+1 |
OK, I'll work on fontTools.ufoLib support for parsing a new optional WDYT? |
That sounds like the simplest thing |
Hm. However the whole point of defining an additional minor version was to avoid breaking existing tools, since the new features are meant to be additive. If we change the meaning of GLIF format attribute from an integer to a dotted version string, then existing tool will break (e.g. you won't be able to read a UFO 3.1 with GLIF 2.1 in an editor that only supports up to UFO3/GLIF2). |
@anthrotype You've just argued against your earlier lean; but this raises a really good point. Based on that, I would think the thing to do is to also add |
Should we consider bumping the major version to 4 after all, but keep the amount of spec changes low, to increase the chance that it will be adopted soon? |
I think adding a extra formatMinorVersion (and formatVersion attribute in GLIF) would give lend us more flexibility in the future for adding non-breaking-changes stuff like the verticalOrigin. |
Oh, that is beyond doubt. If you think we can pull off a 3.1 without breakage that would be awesome. ( |
hm, you got me there.. 🤔
Ah, another thing. Since these proposed changes to verticalOrigin and glyph height only concern the GLIF file and not the rest of the UFO files or structure, and given GLIF format has a version of its own, I think it would make more sense to only increment the GLIF format version (from 2 to 2.1) and not also the UFO format version which could stay 3 (err 3.0, formatVersion=3 and implicit formatVersionMinor=0 in the metainfo.plist). |
Regardless of the #95, I think we need to add the additional |
I'd be curious about @BlackFoundry's opinion about the |
I made the change in fonttools fonttools/fonttools#1786 but I am not sure where exactly we should mention these new |
☝️ This makes the most sense, and is a good prompt to get some spec updates for UFO 3.1 and GLIF 2.1 started and done. Otherwise, we can bump to 3.1 and 2.1 just for this, but that seems silly. @typesupply? |
Fine with me if everyone else is cool with it. |
4.12.1: - [_n_a_m_e] Fixed error in ``addMultilingualName`` with one-character names. Only attempt to recovered malformed UTF-16 data from a ``bytes`` string, not from unicode ``str``. 4.12.0: - [otlLib/varLib] Ensure that the ``AxisNameID`` in the ``STAT`` and ``fvar`` tables is grater than 255 as per OpenType spec. - [docs] Document more modules in ``fontTools.misc`` package: ``filenames``, ``fixedTools``, ``intTools``, ``loggingTools``, ``macCreatorType``, ``macRes``, ``plistlib``. - [OS/2] Don't calculate whole sets of unicode codepoints, use faster and more memory efficient ranges and bisect lookups. - [voltLib] Support writing back abstract syntax tree as VOLT data. - [voltLib] Accept DO_NOT_TOUCH_CMAP keyword. - [subset/merge] Fixed a namespace clash involving a private helper class. 4.11.0: - [feaLib] Introduced ``includeDir`` parameter on Parser and IncludingLexer to explicitly specify the directory to search when ``include()`` statements are encountered. - [ufoLib] Silently delete duplicate glyphs within the same kerning group when reading groups. - [ttLib] Set version of COLR table when decompiling COLRv1 (commit 9d8a7e2). 4.10.2: - [sfnt] Fixed ``NameError: SimpleNamespace`` while reading TTC header. The regression was introduced with 4.10.1 after removing ``py23`` star import. 4.10.1: - [sfnt] Make ``SFNTReader`` pickleable even when TTFont is loaded with lazy=True option and thus keeps a reference to an external file. - [feaLib.ast] Restore backward compatibility (broken in 4.10 for ``ChainContextPosStatement`` and ``ChainContextSubstStatement`` classes. Make them accept either list of lookups or list of lists of lookups. - [docs] Document some modules in ``fontTools.misc`` package: ``arrayTools``, ``bezierTools`` ``cliTools`` and ``eexec``. - [ttLib._n_a_m_e] Fixed ``findMultilingualName()`` when name record's ``string`` is encoded as bytes sequence. 4.10.0: - [varLib] Allow feature variations to be active across the entire space. - [ufoLib] Added support for ``formatVersionMinor`` in UFO's ``fontinfo.plist`` and for ``formatMinor`` attribute in GLIF file as discussed in unified-font-object/ufo-spec#78. No changes in reading or writing UFOs until an upcoming (non-0) minor update of the UFO specification is published. - [merge] Fixed merging fonts with different versions of ``OS/2`` table. - [subset] Fixed ``AttributeError`` while subsetting ``ContextSubst`` and ``ContextPos`` Format 3 subtable. - [ttLib.table._m_e_t_a] if data happens to be ascii, emit comment in TTX. - [feaLib] Support multiple lookups per glyph position. - [psCharStrings] Use inheritance to avoid repeated code in initializer. - [Doc] Improved documentation for the following modules: ``afmLib``, ``agl`` , ``cffLib``, ``cu2qu``, ``encodings``, ``feaLib``, ``merge``. - [Doc] Split off developer-centric info to new page, making front page of docs more user-focused. List all utilities and sub-modules with brief descriptions. Make README more concise and focused. - [otlLib] Add function to build STAT table from high-level description. - [ttLib._n_a_m_e] Add ``findMultilingualName()`` method. - [unicodedata] Update ``RTL_SCRIPTS`` for Unicode 13.0. - [gvar] Sort ``gvar`` XML output by glyph name, not glyph order. - [Doc] Added help options to ``fonttools`` command line tool. Ensure all fonttools CLI tools have help documentation. - [ufoLib] Only write fontinfo.plist when there actually is content. 4.9.0: - [subset] Fixed subsetting of FeatureVariations table. The subsetter no longer drops FeatureVariationRecords that have empty substitutions as that will keep the search going and thus change the logic. It will only drop empty records that occur at the end of the FeatureVariationRecords array. - [subset] Remove FeatureVariations table and downgrade GSUB/GPOS to version 0x10000 when FeatureVariations contain no FeatureVariationRecords after subsetting. - [agl] Add support for legacy Adobe Glyph List of glyph names in ``fontTools.agl`` . - [feaLib] Ignore superfluous script statements. - [feaLib] Hide traceback by default on ``fonttools feaLib`` command line. Use ``--traceback`` option to show. - [feaLib] Check lookup index in chaining sub/pos lookups and print better error message. - [feaLib] Fix building chained alt substitutions. - [Doc] Included all fontTools modules in the sphinx-generated documentation, and published it to ReadTheDocs for continuous documentation of the fontTools project . Check it out at https://fonttools.readthedocs.io/. Thanks to Chris Simpkins! - [transform] The ``Transform`` class is now subclass of ``typing.NamedTuple``. No change in functionality.
Since this has been rolled out in ufoLib, should it be labelled a UFO 3 or UFO 4 issue? Also, can someone familiar with the change to ufoLib to support this write a description of what it does so that it can be documented? |
Is it too late to revisit this? I don't think float makes any sense for version numbers and is just going to confuse the issue and make other things hard down the road. Floats just aren't good for versioning. Using a major/minor or even major/minor/patch versioning scheme would be awesome (ala Semver) but a float just confuses the issue. It won't be backwards compatible, it will look like a mathematical value but you won't be able to do normal math (x < y) on it, etc. Of course the other option is to just stick with integers. If introducing a breaking change from 3 to 3.1 is somehow okay (i.e. an existing field that needs parsing as a different type) then just calling it 4 and not being afraid to run up the integer count is probably a better plan. |
Check ufoLib: it has not been implemented as a float, but as major/minor. |
I'll write doc for this. Will do this weekend. |
And, this should be in 3.1. |
I've been working on documenting the specification process and "what version of the spec should this proposal apply to?" is near the top of the page. We have two models for that now:
Where would the minor version fit into this? Is it a hint to tools that "this UFO was last touched by a tool that knows about X, Y, Z new things"? I'm just trying to figure out how to fit this into the process. |
I think that @anthrotype will have a better nuanced view than I, but i would say that minor versions are for things that won't break existing tools but add information, such as the addition of version minor (yes, this is recursive). Additions to fontinfo would fall under this too, at least in my mind. |
Makes sense. I'll work this into the process.
Cool. That relates to #128. |
We have switched to an incremental approach to updating the spec rather than holding lots of changes until a major version bump. To make it easier for readers to more easily identify these new format UFOs we need to make the
formatVersion
inmetainfo.plist
afloat
instead of anint
.The text was updated successfully, but these errors were encountered: