googlefonts / amstelvar

a parametric variable font by David Berlow
https://www.typenetwork.com/brochure/opentype-variable-fonts-moving-right-along/
SIL Open Font License 1.1
343 stars 18 forks source link

Amstelvar Accents #54

Open dberlow opened 6 years ago

dberlow commented 6 years ago

Accents in some fonts stretch the concept of composites too far.

Amstelvar is one of them.

I. Accents in the “Glyph Repertoire” of Amstelvar… a. come in 12 positions

  1. above lc
  2. below lc.
  3. beside lc.
  4. stacked above lc.
  5. ditto uppercase
  6. ditto smallcaps.

b. are required for 3 mighty* axes, and one smaller axis**

  1. Weight, *Thin to Ultra.
  2. Width, *Compressed to Wide
  3. Optical Point sze, *8-144
  4. Grade **88%-112% of weight (approx.)

c. pressure from the design space, on accents, in different positions, is not the same. In variation space

  1. l.c. accents must react in height different from the caps as the x-height changes.
  2. Accents above Caps in opsz max must react in height differently from l.c. in opsz max
  3. in the thin compressed, the weights & widths in all 12 positions will be in a small range. in the ultra wide, the weights & widths in the 12 positions will be not be i a small range.
  4. the design of a cedilla that connects to the bottom of a glyph, is not the same as a cedilla floating unconnected above a glyph
  5. the height of stacked glyphs in opsz is even more radical, such that the single accents cannot just be stacked.

Jlll and I have discussed the issue and by the end of this week hopefully there will be a new Regular opsz build that demonstrates the issues at hand.

A full demonstration of the issue, will not be made until wght and wdth are drawn.

pichotta commented 6 years ago

Double checking that this is the set of the accents described above with the proper naming.

The sets listed below are symmetrical in number (perhaps some could be deleted from a set if they never occur below, or to the side? i.e. dblgrave_below.uc)

The first standard, default set would be duplicate outlines of the _above.lc Accents centered on 500 instead of 0. Four sets for each case. 260 total; comprised of outlines

acute grave circumflex caron tilde dieresis ring breve macron dotaccent hungarumlaut cedilla ogonek commaaccent commaturnedabove horn caronvert dblgrave brevecyrl breveinvert

acute_above.lc grave_above.lc circumflex_above.lc caron_above.lc tilde_above.lc dieresis_above.lc ring_above.lc breve_above.lc macron_above.lc dotaccent_above.lc hungarumlaut_above.lc cedilla_above.lc ogonek_above.lc commaaccent_above.lc commaturnedabove_above.lc horn_above.lc caronvert_above.lc dblgrave_above.lc brevecyrl_above.lc breveinvert_above.lc

acute_below.lc grave_below.lc circumflex_below.lc caron_below.lc tilde_below.lc dieresis_below.lc ring_below.lc breve_below.lc macron_below.lc dotaccent_below.lc hungarumlaut_below.lc cedilla_below.lc ogonek_below.lc commaaccent_below.lc commaturnedabove_below.lc horn_below.lc caronvert_below.lc dblgrave_below.lc brevecyrl_below.lc breveinvert_below.lc

acute_beside.lc grave_beside.lc circumflex_beside.lc caron_beside.lc tilde_beside.lc dieresis_beside.lc ring_beside.lc breve_beside.lc macron_beside.lc dotaccent_beside.lc hungarumlaut_beside.lc cedilla_beside.lc ogonek_beside.lc commaaccent_beside.lc commaturnedabove_beside.lc horn_beside.lc caronvert_beside.lc dblgrave_beside.lc brevecyrl_beside.lc breveinvert_beside.lc

acute_stack.lc grave_stack.lc circumflex_stack.lc caron_stack.lc tilde_stack.lc dieresis_stack.lc ring_stack.lc breve_stack.lc macron_stack.lc dotaccent_stack.lc hungarumlaut_stack.lc cedilla_stack.lc ogonek_stack.lc commaaccent_stack.lc commaturnedabove_stack.lc horn_stack.lc caronvert_stack.lc dblgrave_stack.lc brevecyrl_stack.lc breveinvert_stack.lc

acute_above.uc grave_above.uc circumflex_above.uc caron_above.uc tilde_above.uc dieresis_above.uc ring_above.uc breve_above.uc macron_above.uc dotaccent_above.uc hungarumlaut_above.uc cedilla_above.uc ogonek_above.uc commaaccent_above.uc commaturnedabove_above.uc horn_above.uc caronvert_above.uc dblgrave_above.uc brevecyrl_above.uc breveinvert_above.uc

acute_below.uc grave_below.uc circumflex_below.uc caron_below.uc tilde_below.uc dieresis_below.uc ring_below.uc breve_below.uc macron_below.uc dotaccent_below.uc hungarumlaut_below.uc cedilla_below.uc ogonek_below.uc commaaccent_below.uc commaturnedabove_below.uc horn_below.uc caronvert_below.uc dblgrave_below.uc brevecyrl_below.uc breveinvert_below.uc

acute_beside.uc grave_beside.uc circumflex_beside.uc caron_beside.uc tilde_beside.uc dieresis_beside.uc ring_beside.uc breve_beside.uc macron_beside.uc dotaccent_beside.uc hungarumlaut_beside.uc cedilla_beside.uc ogonek_beside.uc commaaccent_beside.uc commaturnedabove_beside.uc horn_beside.uc caronvert_beside.uc dblgrave_beside.uc brevecyrl_beside.uc breveinvert_beside.uc

acute_stack.uc grave_stack.uc circumflex_stack.uc caron_stack.uc tilde_stack.uc dieresis_stack.uc ring_stack.uc breve_stack.uc macron_stack.uc dotaccent_stack.uc hungarumlaut_stack.uc cedilla_stack.uc ogonek_stack.uc commaaccent_stack.uc commaturnedabove_stack.uc horn_stack.uc caronvert_stack.uc dblgrave_stack.uc brevecyrl_stack.uc breveinvert_stack.uc

acute_above.sc grave_above.sc circumflex_above.sc caron_above.sc tilde_above.sc dieresis_above.sc ring_above.sc breve_above.sc macron_above.sc dotaccent_above.sc hungarumlaut_above.sc cedilla_above.sc ogonek_above.sc commaaccent_above.sc commaturnedabove_above.sc horn_above.sc caronvert_above.sc dblgrave_above.sc brevecyrl_above.sc breveinvert_above.sc

acute_below.sc grave_below.sc circumflex_below.sc caron_below.sc tilde_below.sc dieresis_below.sc ring_below.sc breve_below.sc macron_below.sc dotaccent_below.sc hungarumlaut_below.sc cedilla_below.sc ogonek_below.sc commaaccent_below.sc commaturnedabove_below.sc horn_below.sc caronvert_below.sc dblgrave_below.sc brevecyrl_below.sc breveinvert_below.sc

acute_beside.sc grave_beside.sc circumflex_beside.sc caron_beside.sc tilde_beside.sc dieresis_beside.sc ring_beside.sc breve_beside.sc macron_beside.sc dotaccent_beside.sc hungarumlaut_beside.sc cedilla_beside.sc ogonek_beside.sc commaaccent_beside.sc commaturnedabove_beside.sc horn_beside.sc caronvert_beside.sc dblgrave_beside.sc brevecyrl_beside.sc breveinvert_beside.sc

acute_stack.sc grave_stack.sc circumflex_stack.sc caron_stack.sc tilde_stack.sc dieresis_stack.sc ring_stack.sc breve_stack.sc macron_stack.sc dotaccent_stack.sc hungarumlaut_stack.sc cedilla_stack.sc ogonek_stack.sc commaaccent_stack.sc commaturnedabove_stack.sc horn_stack.sc caronvert_stack.sc dblgrave_stack.sc brevecyrl_stack.sc breveinvert_stack.sc

dberlow commented 6 years ago

‘The sets listed below are symmetrical in number (perhaps some could be deleted from a set if they never occur below, or to the side? i.e. dblgrave_below.....”

Sure.

‘The first standard, default set would be duplicate outlines of the _above.lc..”

No sure what ya mean. Thr idea of having separate sets for separate glyph groups and locations is that they are not duplicates...

davelab6 commented 6 years ago

What do I need to do here? :)

On Tue, Mar 20, 2018, 5:50 AM David Berlow notifications@github.com wrote:

‘The sets listed below are symmetrical in number (perhaps some could be deleted from a set if they never occur below, or to the side? i.e. dblgrave_below.....”

Sure.

‘The first standard, default set would be duplicate outlines of the _above.lc..”

No sure what ya mean. Thr idea of having separate sets for separate glyph groups and locations is that they are not duplicates...

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/TypeNetwork/Amstelvar/issues/54#issuecomment-374536629, or mute the thread https://github.com/notifications/unsubscribe-auth/AAP9y8hYr9Do_RFnAn_oML300iD1wx_gks5tgNDigaJpZM4Sqfjd .

pichotta commented 6 years ago

This is in our court:) We are using the system outlined by 'dberlow'. The list posted by 'pichotta' can be cut in half.

We will focus on the necessary accents in the Build Set, to fulfill the accented chars in the Google Char Set, using 'Roman-opsz-max' and 'Roman-opsz-min' as a template.

dberlow commented 6 years ago

I will have an update with thumbnails on this for Dave tomorrow

Sent from my iPad

On Mar 20, 2018, at 6:38 PM, pichotta notifications@github.com wrote:

This is in our court:) We are using the system outlined by 'dberlow'. The list posted by 'pichotta' can be cut in half.

We will focus on the necessary accents in the Build Set, to fulfill the accented chars in the Google Char Set, using 'Roman-opsz-max' and 'Roman-opsz-min' as a template.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub, or mute the thread.

dberlow commented 6 years ago

Dave,

At some point soon, we will have examples for how we plan on doing the axis, and glyphs, for accents. For now, I'm just looking for your agreement to make the quality of accented characters the same all over the design space. This will currently cost some file space.

During my now nearly complete design of the opsz axis, mins and max for reg. and ital., I watched to see what I wanted to happen to the accents, not just over that one axes. While doing so, I surveyed what I think is required to make those accents work in all the width and weight instances at all sizes, using width, weight, and our accent axes for above and below transparencies.

The weight of the accents involved in this topic, (all the floating accents that don't connect), are tied to the X and Y opaque axes. The width is controlled by the wdth axis, where the accents and their set width change to suit the overall changes of the alphabet's widths.

What our Accent axes are for, is the variation in the various heights of the accents as a group at a particular alignment, something that operates independently of the heights of the alphabets, but whose alignments can also vary in accordance e.g. with what the lowercase height is. This is so when combined above and below the three cases, uppercase, small caps and lowercase, and when use as single, or double accents, they all blend smoothly with the the glyphs of each instance,

What’s usually done in font development? one accent is designed and used for Uppercase, lowercase, and composited for stacked accents, of each style. If the accent is also used below glyphs, it is also composited from the same glyph, and use below glyphs. This is then repeated throughout the font family, style by style, and the designer manual picks off combinations that don't work and fixes them.

In variation design space, and especially when that space contains three "mighty big" axes, (opsz=8to144), (wght=thin to ultra), (wdth=a lot of it) — it’s not really feasible to use the same accent glyph for all combinations of character group and stacking. (and there is no one there to pick off the bad combinations and fix them manually). We are, after all, trying to make every combination of an accent and something else, look the same all over an instance, automatically. As we know, making everything look the same, involves making slight variations to things per condition.

So in the next few versions of Amstelvar, there will be three sets of the accents required to build the basic accented glyph repertoire, and four sets once the sample caps are added, and the final client Glyph Repertoire can be build from the Build Repertoire.

  1. accents over lowercase,
  2. accents over uppercase
  3. accents below upper and lowercase. later
  4. accents over small caps

Each of these contains drawn, not composited stacked versions of the accents for each of the four. This, with over 200 accents per master, will require more file space, but will ensure that all the instances in the font will have the same quality accents as the Default.

Later, if architecture comes along that allows the accents of an instance to come from a variety of widths, weights, and heights within the design space, by using parametric axes that will exist in Amstelvar, the number of glyphs required for accents can be reduced to around 20 per master, with the other 180 coming from other widths, weights, and the above and below y transparency axes we proposed. And, at the point such an architecture was available, it would also be trivial to vary the accents for different letters in one case. E.g. if the designer wanted the width of the dieresis over O and I to in the black extended, to use the same weight and height, but a different width, via xtra that'd be trivial, without adding a glyph.

That's the highest quality achievable, where each accent varies ever so slightly, to quite a bit of variation in some instances, to appear absolutely like it belongs where it is.

Let me know if that's okay.

davelab6 commented 6 years ago

I approve anything that makes the typographic quality higher; filespace considerations can be considered by engineers involved with the spec at a later date :)

davelab6 commented 6 years ago

Sam assigned this to the v3 milestone as it requires opsz/wght/wdth to be ready in order to fully resolve

davelab6 commented 4 years ago

@sannorozco says that the _stack, _beside, _above and _below are drawn - although with a different glyph name scheme.

A full demonstration of the issue, will not be made until wght and wdth are drawn.

@dberlow have you already made such a demonstration of this issue? If not, please do in sketch and link to here and assign to me to review.