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.16k stars 797 forks source link

Feature Request: Add support for small capitals #554

Open PhMajerus opened 2 years ago

PhMajerus commented 2 years ago

Cascadia family version

2106.017

Cascadia family variant(s)

Cascadia Mono (the version without ligatures)

Font file format(s)

Windows Terminal included version (TTF (variable))

Platform

Windows 10 19043.1149 (current release preview channel, 21H1)

Other Software

Windows Terminal 1.10.1933.0

What happened?

The small caps (https://en.wikipedia.org/wiki/Small_caps) set of characters "ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟᴍɴᴏᴘꞯʀꜱᴛᴜᴠᴡxʏᴢ" have different weights and sizes. It seems Cascadia only includes A, G, I, L, and the other small caps are taken from a fallback font.

In the following screenshot, A, G, I, L and X look bolder, while M and W look shorter. Since Unicode 13 still doesn't include a small cap "X", lowercase "x" is typically used (and it is in the following screenshot), but that require all small caps to follow "x" weight and height (which seems to be good for consistency anyway). image

Also, small cap "Q" is missing, as it is with most fonts because it was introduced late in Unicode 11, but as that version was standardized 3 years ago, I'd say it is time to include it, especially since it is the last one required to be able to use small caps in a terminal or console.

List of small caps all over the place: U+1D00 // A (latin letter small capital A) U+0299 // B (latin letter small capital B from IPA Extensions) U+1D04 // C (latin letter small capital C) U+1D05 // D (latin letter small capital D) U+1D07 // E (latin letter small capital E) U+A730 // F (latin letter small capital F from Latin Extended-D) U+0262 // G (latin letter small capital G from IPA Extensions) U+029C // H (latin letter small capital H from IPA Extensions) U+026A // I (latin letter small capital I from IPA Extensions) U+1D0A // J (latin letter small capital J) U+1D0B // K (latin letter small capital K) U+029F // L (latin letter small capital L from IPA Extensions) U+1D0D // M (latin letter small capital M) U+0274 // N (latin letter small capital N from IPA Extensions) U+1D0F // O (latin letter small capital O) U+1D18 // P (latin letter small capital P) U+A7AF // Q (Latin Letter Small Capital Q from Latin Extended-D) U+0280 // R (latin letter small capital R from IPA Extensions) U+A731 // S (latin letter small capital S from Latin Extended-D) U+1D1B // T (latin letter small capital T) U+1D1C // U (latin letter small capital U) U+1D20 // V (latin letter small capital V) U+1D21 // W (latin letter small capital W) // small capital X is still missing in Unicode 13 U+028F // Y (latin letter small capital Y from IPA Extensions) U+1D22 // Z (latin letter small capital Z)

aaronbell commented 2 years ago

Thank! At current Cascadia Code includes ᴀɢɪʟ for Salishan language support. I'll add this to the backlog of items to work on, but it might be a while :)

PhMajerus commented 2 years ago

Thanks Aaron! I changed the subject to properly reflect the current state of this issue. Having small caps in the terminal would be great.

QueshAnmak commented 2 years ago

Hi, I would like to work on this issue, could you please assign it to me?

aaronbell commented 2 years ago

@QueshAnmak feel free to grab the ufos, do the work and submit a PR. I won’t have a chance to get to this for a while so no risk of duplicative efforts. :)

PhMajerus commented 2 years ago

Thanks @QueshAnmak!

Note that some small caps might be able to share glyphs with existing characters: в (U+0432) Cyrillic Small Letter Ve с (U+0441) Cyrillic Small Letter Es or c (U+0063) Latin Small Letter C н (U+043D) Cyrillic Small Letter En м (U+043C) Cyrillic Small Letter Em о (U+043E) Cyrillic Small Letter O or o (U+006F) Latin Small Letter O s (U+0073) Latin Small Letter S т (U+0442) Cyrillic Small Letter Te v (U+0076) Latin Small Letter V w (U+0077) Latin Small Letter W х (U+0445) Cyrillic Small Letter Ha or x (U+0078) Latin Small Letter X z (U+007A) Latin Small Letter Z

@aaronbell, can you tell us if those Cyrillic and Latin Small characters are proper visual twins, following the same design, shapes and weights as Latin Capital ones, or if separate glyphs based on the Latin capitals are required?

aaronbell commented 2 years ago

Perhaps in the Roman, though I'd suggest reviewing the weight / proportions to be sure :). The Italic has greater differentiation so it isn't as viable.