-
Notifications
You must be signed in to change notification settings - Fork 448
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
Designspace version 5 + method to convert from v5 to v4 + method to build STAT table and instance names #2436
Conversation
e0d26f5
to
8fa27f4
Compare
Hi Jany, With regard to your question:
I think so, yes: for example in an Upright/Italic setup, I consider "Upright" the default, and "Italic" the optional "special" one. |
Btw. I'm not fully understanding the problem with using |
We (Nikolaus and I) used statmake to get to a working POC fast because we're used to it and wanted to use it as a target format for the conversion script. But I don't think there's any problem with the fontTools STAT utilities, we just haven't looked into them properly yet. Statmake will certainly not be needed when building a VF directly from DSv5. |
Slightly tangential: I'm often somewhat confused by the fact that instances are defined by designspace coordinates, and not userspace coordinates. The latter intuitively makes more sense to me. I wonder if other people feel the same way, and if yes, should we consider doing something about it? For instance by adding a "uservalue" attribute to the |
I agree on instances, it's listed in the open questions :) happy to implement your suggestion next week |
Urg! See how thoroughly I reviewed your work :) I mean, sorry :/ Yes, let's try to address this in DS5. I'm by no means 100% convinced of either of my suggestions, so if you have different ideas: let's hear it. |
LGTM in general as well. And yes, I agree instances are better specified in user-space. In fact, that has always been my preference. C.f also adobe-type-tools/afdko#1350 In DS5 please let's make it possible to specify all coordinates in both userspace and designspace. |
Ooh that looks promising. I know my responsibility is fading here but if it is possible I'd like to make some notes over the weekend? |
One thing in reading this that I really like is the |
@LettError that would be great, thanks in advance! @benkiel yes absolutely, check the Aktiv Grotesk example file: fonttools/Tests/designspaceLib/data/test_v5_aktiv.designspace Lines 211 to 243 in d67238f
|
Can axes limit the range? I also don't think the name |
|
@LettError I was wondering the other day,
Are anisotropic locations allowed anywhere else? How should they to be evaulated in rules? |
Type designers use designspaces to construct systems as part of the design process and anisotropic have been a very useful part of that. I don't expect any kind of support in a variable font pipeline. But is should be possible to store the data. |
Thanks both for the feedback! |
Yes. Anisotropy is useful during design. But userspace coordinates imply axis mapping and variable fonts where such coordinates have no meaning. So no anisotropy in userspace.
That seems reasonable.
Ok, good!
Specifically for sparse kerning interventions there are some scenarios to think through, but I don't know if that needs to be solved in a format description. Thanks! |
Thanks for working on this, many welcome changes making Designspace that much closer to general utility and descriptive of the entire OpenType standard. I would ask that #2434 please be considered. This is the role of As demonstrated by myself, this is not enough…both GPOS and GSUB can activate via FeatureVariations. Even if you were to keep the current Coming down the pipeline is also COLRv1 which allows for varying the transparency of a layer of a glyph according to axis values. This is likely to be expressed in FEA syntax. Please consider 〜:mage_man:ピョンピョン |
@ctrlcctrlv thanks for the comment. I feel your proposal is orthogonal to what we want to implement here (it's not tied with STAT data, and is very specific to the |
OK :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks Jany and Nikolaus! I left some comments below.
I see a lot of FIXMEs and TODOs. It'd be good to know what's the plan with each of those.
Regarding adding statmake as dependency, I think we should be able to avoid that. It seems like it's currently only being used as a transport mechanism to store the STAT-related data in the DSv4.lib. Maybe the whole convert5to4 should be moved elsewhere.
4fa7443
to
142aa38
Compare
@chrissimpkins says: we should show this to font editors and plugin developers to make sure they're aware of the changes and would be happy to implement them or know how to stick to V4. Maybe the library should keep saving as version 4 for a while or have an option to opt into saving as version 5? Or at least, opening a V4 and saving again it should save as V4. |
Based on recent work with a designer who uses Erik's https://github.com/LettError/designSpaceRoboFontExtension to generate and edit DS files in Robofont. This is simply a backwards compatibility consideration. I recognize that Erik is involved in this thread and I don't think that it is anyone's responsibility to engage developers directly. I don't have a good understanding of the breadth of built-in / 3rd party plugin DS editor tooling out there. It would be useful to make sure that users have a way to get back to a state where their v4 based plugins work when they don't need expanded v5 functionality if any backwards incompatible changes are introduced. |
100% this should have backwards compatibility built in; meaning v4 can still be opened, read/used, and saved back as v4. Breaking that will cause a lot of havoc when tools that are built on v4 assumptions cease to work when the library is updated. I don't know what Glyphs and FontLab do with designspace files, but this should be put in front of them at the minimum and likely others. The very painful lesson from UFO3 is that if it's really hard for tool makers to implement, it won‘t quickly be picked up in tools; and then designers won't use v5. |
of couse, no reason adding DS v5 support should be a breaking change
yeah, makes sense |
I should have been more specific about 'breaking change': I would expect that the API won't change, or at least be made to be backwards compatible so that when this is merged it doesn't then break tools expecting just v4. Seems like everyone agrees on this, just wanted to clearly state it. |
5f5506e
to
5ee6a34
Compare
633cedd
to
cd288d1
Compare
4546e94
to
80b3fd3
Compare
56de3ca
to
025ab53
Compare
e33bf43
to
63e6d23
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM (with some minor comments below)
Would you mind also writing some brief high-level release notes? Maybe update the first message (i.e. PR decription).
Thanks again Jany for working on this!
63e6d23
to
6275240
Compare
@anthrotype I wrote release notes in the PR description. |
6275240
to
2ea5dc3
Compare
This is a continuation of the extension to the designspace format initially proposed here and discussed at the last UFO meeting in July 2020.
fontTools.designspaceLib.split
module to split a designspace into sub-spaces that interpolate and that represent the variable fonts listed in the documentfontTools.designspaceLib.statNames
moduleSourceDescriptor
:copyLib
,copyInfo
,copyGroups
,copyFeatures
InstanceDescriptor
:kerning
,info
;glyphs
: use rules or sparse sourceslocation
: use the more explicitdesignLocation
build_many
to build several variable fonts from a single designspace documentfontTools.varLib.stat
module to build STAT tables from a designspace document