Skip to content
This repository has been archived by the owner on Aug 3, 2022. It is now read-only.

No named instances, no STAT axis value tables #3

Open
PeterCon opened this issue Feb 9, 2017 · 33 comments
Open

No named instances, no STAT axis value tables #3

PeterCon opened this issue Feb 9, 2017 · 33 comments

Comments

@PeterCon
Copy link

PeterCon commented Feb 9, 2017

The 'fvar' table doesn't define any named instances, and (corresponding) there are no axis value tables within the STAT table. That makes the font not functional in older applications, even on a platform that can otherwise provide support variable font named instances in older apps transparently.

@djrrb
Copy link
Contributor

djrrb commented Feb 13, 2017

Thanks for your comments @PeterCon!

I just added 18 named instances to the designspace and rebuilt the font, so we can get an idea of what that would be like (9a03a0f).

screen shot 2017-02-12 at 10 22 59 pm

I'm leaving this issue open, since the axis values are still missing from the STAT table. @PeterCon, is there a STAT table writer that you've released or would be willing to contribute? Up until now I've been writing them by hand, but with Decovar's complexity it is probably better to pursue an automated approach.

@PeterCon
Copy link
Author

PeterCon commented Feb 13, 2017 via email

@davelab6
Copy link
Member

The approach you have to naming in this font reflects a different way of thinking of how names and axes relate than what all the platform implementers involved in developing the spec were thinking ... if this approach to naming is something that will be common, we may need to give some thought to how best to support it. ... So, something for us and other platform implementers to think on.

As I say in http://typedrawers.com/discussion/comment/25926/#Comment_25926 I would be very happy to contribute some thoughts to this :)

@djrrb
Copy link
Contributor

djrrb commented Feb 13, 2017

Thank you for the further info on the STAT table and the thinking behind it! I'm also very glad to hear that this project is providing some food for thought.

I’m assuming each of those represents some combination of values across all of the axes, not 18 names for points along just one axis?

Yes, that's correct. Most of these named instances are located at the extreme of a single axis, but a handful show different interactions between axes at various values.

In defining these instances, we were trying to come up with a set that would provide users of non-OTVar software with menu items that would be representative of, or at least hint at, the stylistic range of the font. And in future UI implementations, hopefully users could still find them valuable as starting points for exploring the various axes.

In this particular case, I'm not sure if there's a way to record points on individual axes and then list their intersections that would be as effective in doing that. I guess it's about finding a balance between offering enough options without overwhelming the user (especially in WWS/RBIZ situations where each instance would essentially act as its own family.)

Thanks again!

@PeterCon
Copy link
Author

PeterCon commented Feb 14, 2017 via email

@petrvanblokland
Copy link
Contributor

petrvanblokland commented Feb 14, 2017 via email

@davelab6
Copy link
Member

davelab6 commented Feb 14, 2017

Dave: As John responded on that thread, you should talk to Behdad and Sascha on providing input from Google.

I've pinged them, of course, but it is impossible for me to provide input into conversations I'm not privvy to; and there is the historical record, and the people who are not such industry insiders as myself (such as those in India) who will also benefit from following the conversations...

@PeterCon
Copy link
Author

PeterCon commented Feb 14, 2017 via email

@davelab6
Copy link
Member

davelab6 commented Feb 14, 2017

I'm sorry Peter to say, Github's inbound email processor has not been able to make sense of your reply via email, and the color (and I assume table) are lost. Please see the issue on the web at #3

@petrvanblokland
Copy link
Contributor

petrvanblokland commented Feb 14, 2017 via email

@PeterCon
Copy link
Author

PeterCon commented Feb 14, 2017 via email

@PeterCon
Copy link
Author

More thinking about fonts like Decovar: When we designed the Font Variations extensions for OpenType 1.8, including the STAT table, we were primarily thinking about very-commonly-used axes of variations such as weight, etc., that were also prevalent in fonts like Skia and Adobe's Multiple Masters back in the 1990s. Such fonts may be intended for text or display usage scenarios. But a font like Decovar (or, say, Buffalo Gals) is different: it's suitable for display, but not text; and the kinds of parameters that can be manipulated are really geared towards display scenarios.

(Now, perhaps Amstelvar is a different story, but let's stick with Decovar for the moment.)

Certainly in the past, if you were developing type with this approach, you'd only be able to manipulate the parameters in design tools, and then you'd need to export specific instances that your customer wanted. So, in that case, the customer wasn't the one manipulating all the sliders. Today, with OT variable fonts, potentially they could be manipulating the sliders. I'm going to guess that many potential users might not want to manipulate sliders for Decovar: it's so many choices, and the user just wants a quick choice. But those probably wouldn't be the kind of user that a variable Decovar would be primarily marketed to. Rather, you'd be looking at the graphics professional working on a display setting in which they want to use their creative skills to tweak the options the font provides to fit the design goals for the project.

So, maybe the font with a limited set of named instances may be useful for the casual user, but I'm thinking that the real target for such a font is the more specialized designer who will want to access the full variation capabilities of the font. And that person will not want to use the font in legacy apps that can only support selecting certain named instances; rather, they'll want some newer apps that support selection of arbitrary axis values on arbitrary axes defined in variable fonts.

Just thinking out loud --- thoughts that may be relevant when thinking how a STAT table should be set up for a font like this.

@petrvanblokland
Copy link
Contributor

petrvanblokland commented Feb 14, 2017 via email

@davelab6
Copy link
Member

The “big standard axes” (width, weight, size) can have virtually infinite axes rolled up inside that define large or subtle flavour differences (rounded corners, “victorian style”, roughness, etc.), once the big choices have been made. (If he/she found the restaurant-district in the city from a location on the map, it is still up to the traveller to find the right kind dish, depending on taste, preference and time of the day.

It seems to me that sometimes users will just want to drive along the highways, or the paved roads, and other times will want to go on an off-road safari.

Being able to mark which axes are roads and which are not seems, important.

@dberlow
Copy link

dberlow commented Feb 21, 2017 via email

@davelab6
Copy link
Member

@djrrb is the stat table source in this repo?

@djrrb
Copy link
Contributor

djrrb commented Mar 15, 2017

@davelab6
Copy link
Member

Thanks! However, where is the name table info that it points to?

@djrrb
Copy link
Contributor

djrrb commented Mar 15, 2017

Ah, right. That's not stored separately since it is compiled from the UFO sources, but you can get it by ttxing the variations TTF.

@davelab6
Copy link
Member

I'm confused; the UFOs don't have this data either, so is it in the private build system? (In that case, I don't understand why it isn't source file data :)

@djrrb
Copy link
Contributor

djrrb commented Mar 15, 2017

The UFOs have fontinfo.plist, which is used as the basis for the name table when the font is compiled (see the build script) and then fontTools varLib to generate the vfont version.

For now, fontTools doesn't build a STAT table, which is why I have to keep a separate copy and stick it in the final font. But the name table is already present in the compiled fonts, so I don't store it separately. Is that helpful?

@davelab6
Copy link
Member

FontView shows the axes names from the name table to the left of the sliders:

screen shot 2017-03-15 at 08 50 29

But in fontinfo.plist files those names aren't present,

https://github.com/TypeNetwork/fb-Decovar/blob/3f3894175129e79494b1c90f6a4e19aa16dcfe01/sources/2-build/Decovar-Regular24WeightMax2.ufo/fontinfo.plist

nor are they anywhere else in the repo :)

https://github.com/TypeNetwork/fb-Decovar/search?q=%22weight+max%22&type=Code&utf8=%E2%9C%93

@djrrb
Copy link
Contributor

djrrb commented Mar 15, 2017 via email

@djrrb
Copy link
Contributor

djrrb commented Mar 15, 2017 via email

@davelab6
Copy link
Member

Ah, those come from the Decovar.designspace file...forgot about that!

But I don't see them in https://github.com/TypeNetwork/fb-Decovar/blob/master/sources/2-build/Decovar.designspace :)

Sorry for the incomplete answer...I also had to add unregistered axes to my version of fonttools...will document this as soon as I return from my travels!

Thank you David! :)

djrrb added a commit that referenced this issue Mar 19, 2017
including the temporary fontTools customization necessary to get the
names, after @davelab6's question in #3
@djrrb
Copy link
Contributor

djrrb commented Apr 5, 2017 via email

@sberlow
Copy link

sberlow commented Jun 26, 2017

@djrrb Are we still waiting on this?

@djrrb
Copy link
Contributor

djrrb commented Jun 26, 2017

As far as I know, there is still no tool for writing STAT. Maybe others know differently?

I don't think I have a way to reliably write this table in a font this complex (a single axis I was able to do, at least I think). What is included here in stat.ttx I did by hand with some guesswork and no way to reliably test.

Is it ok to continue to wait?

@PeterConstable
Copy link

Rob McKaughan has drafted fonttools changes to add support for the STAT extension adding a format 4 axis value table, but he's waiting until OT1.8.2 has been published before submitting a PR. (Btw, now that I'm back from vacation, publishing 1.8.2 is front-burner for me; Rob's on vacation for the next couple of weeks.) In the meantime, we crafted a rev of Decovar with a STAT table using format 4 AVTs so that we could validate our DWrite implementation. I'll be happy to follow up with you folk once I get caught up.

@dberlow
Copy link

dberlow commented Jun 26, 2017 via email

@davelab6
Copy link
Member

he's waiting until OT1.8.2 has been published before submitting a PR

That PR has been made and was merged yesterday, fonttools/fonttools#1015

@djrrb
Copy link
Contributor

djrrb commented Aug 3, 2017

In the meantime, we crafted a rev of Decovar with a STAT table using format 4 AVTs so that we could validate our DWrite implementation.

@PeterCon, now that the format 4 PR is merged, are you able to commit your revised Decovar STAT table? Thanks!

@davelab6
Copy link
Member

@PeterCon, now that the format 4 PR is merged, are you able to commit your revised Decovar STAT table? Thanks!

@PeterCon would be great to see this :)

@googlefonts googlefonts deleted a comment from djr Nov 13, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants