microsoft / cascadia-code

This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.
Other
25.64k stars 804 forks source link

U+0192 is a lowercase letter and should visibly different from f in italic #494

Closed moyogo closed 3 years ago

moyogo commented 3 years ago

Cascadia family version

2105.24

Cascadia family variant(s)

Cascadia Code (the version with ligatures), Cascadia Mono (the version without ligatures)

Font file format(s)

Windows Terminal included version (TTF (variable)), .ttf (variable), .ttf (static), .otf (static), .woff2 (variable), .woff2 (static)

Platform

Windows, Linux, macOS

Other Software

No response

What happened?

U+0192 ƒ in CascadiaCode-ExtraLight, -Regular or -Bold, is currently designed as a figure-height f with a hooked descender, it is shorter than f. In italic styles, It is not constructed as other letters.

Besides being encoded for the florin currency symbol or the function symbol, it is also encoded as the lowercase letter used along the uppercase U+0191 Ƒ in a few languages like Ewe, Avatime, Waci and Lelemi spoken in Benin, Ghana or Togo. These languages use it as an ascender-height f with a hooked descender.

Roman styles

See the current roman U+0192 ƒ next to U+0066 f, where their height do not match:

image

U+0192 ƒ should instead match the height of U+0066 f in the roman styles.

Italic styles

See the current roman U+0192 ƒ next to the proposed U+0066 f:

image

The current italic U+0192 ƒ is appropriate for those languages but has hooks that are more curved than those of j or ſ. Additionaly the redesign of italic U+0066 f shown in https://github.com/microsoft/cascadia-code/issues/468#issuecomment-854196781 would make U+0192 ƒ and U+0066 f hard to dinguish as the only difference would how curved the hooks are or the slant of the stem slant. This could be avoided with a straight descender or a flared descender instead of the hooked descender for U+0066 f. The design of the italic U+0192 ƒ could stay the same but would be more appropriate with a stem on the same slant as other glyphs and the descender and ascender hooks as j and ſ.

U+0192 ƒ should be constructed like other letters, and U+0192 ƒ and U+0066 f should be identifiable and different.

Extra bonus

It would be nice if U+0191 Ƒ, U+0189 Ɖ, U+0256 ɖ were in the fonts as most characters needed for those languages (including ƐɛƆɔƔɣŊŋƲʋ) are already present.

aaronbell commented 3 years ago

Interesting. I had not known that u+0192 is also used for other purposes beyond the florin symbol. I'll look into making it more clear.

aaronbell commented 3 years ago

How do you feel about something like this:

Screen Shot 2021-06-04 at 10 44 32 PM

It would be clearly differentiated, but might be considered a more unusual form?

moyogo commented 3 years ago

I'm not sure this works. I haven't found many samples of Ewe with italic but those I found use a slanted f for f and a hooked italic f for ƒ.

Besides doing that or having a slanted f with hook-less descender for f one other option is to have the hooked italic f for f and the differentiated ƒ with exagerated features for differenation, as you do, for most languages and have a slanted f for f and the hooked italic f for ƒ in Ewe, Avatime, Lelemi and Waci through a default feature or in a stylistic set.

I've opened MicrosoftDocs/typography-issues#781 to request OpenType Language System Tags for Avatime, Lelemi and Waci as only Ewe has a tag at the moment.

aaronbell commented 3 years ago

Well, the current hooked f shape is a valid form, and fits better with the design concept than a slanted f. As such, I don't intend to change it.

So I see three options: 1) Create a more 'character-ful' version of u0192 such as I have done above, even though it may be less expected than a more standard hooked 'f' form (but maybe not unwelcome? I don't have enough info on user preference). 2) Use the locl tag to swap the default f for the more script f in order to create a differentiation for those specific languages. However, in cases where the locl tag is not being used (which is usually a lot of places), there is the risk of the f and u0192 looking quite similar. 3) Make the more funky design the default f and leave the more standard form as the u0192 design. I'm sure no one will hate that :P

Anyway, I'm leaning a bit toward option 1, even though it offers a more unusual form for u0192 but will consider.

moyogo commented 3 years ago

I think 1 can work at least to make them differentiable. For proper support of the preferred shapes, having alternative glyphs for both f and ƒ would be nice, even as an optional or locale specific feature.

I'm not sure 2 or 3 would work for those languages since for some reason that's also the shape of U+0192 in script. 😞

See for example Gɔmedzegbale, 1966:

Screenshot 2021-06-09 at 15 32 55

Or this old one, The new script and its relation with the languages of the Gold Coast, 1930:

Screenshot 2021-06-09 at 15 34 20

This seems quite confusing, and it is, but wait till you consider a and ɑ in italic.

aaronbell commented 3 years ago

Thank you for the samples! They actually really help clarify what I should do on this :).

OK, so I'm thinking that I'll use the old cursive-like f form for 0192 by default. That will give users a form that they're used to that is differentiated from the standard f. And in the case where someone enables both ss01 and has locl set to Ewe (and the others), I'll prevent the cursive f form from showing by swapping for a straight descender one.

Screen_Shot_2021-06-09_at_8_01_04_AM