googlefonts / rcjk-tools

Apache License 2.0
3 stars 0 forks source link

Outline a structure for Variable Components #1

Open justvanrossum opened 3 years ago

justvanrossum commented 3 years ago

Static font using Static Components

glyf table:

Variable font using Static Components

glyf table:

gvar table:

fvar table:

Main idea of the proposal

Static font using (non-nested) Variable Components

glyf table:

VaCo table:

gvar table:

fvar table:

Variable font using Variable Components

glyf table:

VaCo table:

gvar table:

fvar table:

To be determined: exactly which transform parameters are needed

RoboCJK uses:

There are two things to consider:

  1. which transform parameters are convenient for editing
  2. which transform parameters are needed for a font renderer to interpolate the good path between two masters

I am somewhat uncomfortable with the current RoboCJK parameters, as they seem a little arbitrary.

My proposal would be this:

With this, it is possible to exactly replicate GS-CJK at the masters, but the behavior in-between may sometimes be subtly different. I want to do experiments to figure out how much any such differences are, and whether they are show-stoppers or acceptable.

davelab6 commented 3 years ago

Since this isn't a table from MS (all caps) or Apple (all lowercase) I propose Cvar as a mixed case "Component Variation" table. (Obviously this is potentially confused with the existing cvar table ;)

davelab6 commented 3 years ago

all axes used for Variable Components are hidden

This suggests to me that we will need a 2nd flag (3rd state) for axes that distinguish "advanced user" axes (hidden by default, but useful for some sophisticated/educated users to interact with directly) from "non-user axes" (which require a higher level UI to interact with, or should never be interacted with.)

davelab6 commented 3 years ago

I am somewhat uncomfortable with the current RoboCJK parameters

I hope @raphlinus can review these soon too :)

davelab6 commented 3 years ago

There should be an interface between variable components and OpenType features, such as smcp or onum or sups (as David Berlow proposed in http://variationsguide.typenetwork.com/#votf)

(It seems David's proposal for "Variable Unicode IDs" (http://variationsguide.typenetwork.com/#vuid) is provisioned for already, by simply having glyphs with the relevant variable component that are correctly encoded.)

justvanrossum commented 3 years ago

(It seems David's proposal for "Variable Unicode IDs" (http://variationsguide.typenetwork.com/#vuid) is provisioned for already, by simply having glyphs with the relevant variable component that are correctly encoded.)

Yes, I think that's indeed a logical (and pleasant) consequence of this proposal.