CatharsisFonts / Cormorant

Cormorant open-source display font family
SIL Open Font License 1.1
542 stars 23 forks source link

Fill in space/hyphen/Joiner/separator glyphs? Add leading text 'justification' kerning? #43

Closed cmahte closed 5 years ago

cmahte commented 5 years ago

Can you add these space and space-like nonwhitespace glyphs?

Uni Description Note
0008 Backspace (same as ZWSP)
034F Combining Joiner (same as ZWSP)
00AD Soft hyphen (same as a ZWSP)
2010 Hyphen (same as a hyphen-minus)
2011 No-break hyphen (same as a hyphen-minus)
2027 Hyphen point (mid height dot)
2043 Hyphen bullet (mid height dash about the same as a narrow space)
2000 En Quad
2001 Em Quad
200D Zero width joiner
2060 Word joiner
2063 Invisible separator
2028 Line separator
2029 Paragraph separator
3000 Ideographic Space (space that spans the same in X as the vertical leading, likely a little larger than em space.)
FEFF Zero width no-break space
FFF9 Interlinear anchor
FFFA Interlinear separator
FFFB Interlinear terminator

In all cases, these glyphs provide special functions as described in the Unicode standard in apps if they are present in the font, and supported in the app. For example, the various hyphen characters are detected and possibly show up as alternatives in a layout engine.

I'm working through what it takes to make LibreOffice produce real text. And one of the big gaps between LO and Indesign is the lack of proper justified text mode with allowances for punctuation.

So, I'm studying implementing some negative tracking/kerning on punctuation. By this, I originally meant including a NWJ character in front of leading quotes and automatically detecting them in a script and kerning them back. This won't work at the end of text rows, but it will work for leading text.

Except that's exactly what the font does in the kern table. In order to 'track or kern before the starting margin, the kern needs to be on a non whitespace character. Which brings me to the list above, and that there are other whitespace functions that the font isn't aware of but apps have enabled, but deal poorly with missing glyphs.

cmahte commented 5 years ago

These represent Items in section 11, 16.1 and 16.3 in this document.

CatharsisFonts commented 5 years ago

Does the new commit fix this?

cmahte commented 5 years ago

That provides the glyphs. Thank you.

The last half of my request. In the Microsoft list of registered opentype features, they list the feature jalt for "justification alternates." The description of what justification alternates are for seems like it's similar enough and compatible with using that feature to throw directionally justified punctuation alternates in that feature that hang beyond the zero or end row, then setup larger than normal kerning for that alternate punctuation glyph to keep it appearing normal when it appears in the the text row. When it hits on the end of the row, it will appear optically aligned (simple punctuation extends beyond the boundary.)

However, jalt is listed as a 'cursive script' feature. That might actually be good, since using it in latin scripts won't automatically cause conflicts. However, I've never seen it used or any tables/alternates. I don't recommend this public wide release, but that's what I'm working toward right now. Unless you already know this won't work.

cmahte commented 5 years ago

Thank you.

CatharsisFonts commented 5 years ago

I don‘t know about JALT, and currently don‘t have the capacity to experiment with it. Feel free to do so yourself, though!