case sensitive forms (CASE feature) and kerning - how to handle best?

Sebastian Nagel's picture

Dear readers,

i am wondering how to best handle case sensitive punctuation (opentype CASE feature) and kerning of these characters with uppercase letters. Depending on the vertical position of the character (let's say "{"), the horizontal kerning has to change too to make everything look well alligned.

I can imagine of these solutions (working with fontlab 5):

- kern as if CASE was always applied (looks ugly if the user just types with capslock)

- kern as if CASE was never applied (often looks bad just when it should actually look good)

- fiddle with the horizontal pos values in CASE feature - but it would mean to change them for every possible combination manually - lots of work ...)

- make duplicates (or even design special) "{.case" variants, just do substitutions in CASE feature, and do kerning with these variants instead of the lowercase ones. This would work, but doubles glyphs and is quite "not as it was meant".

so what do you think is best practice for this?

tanks for your input

msmiths's picture

I simply kern the standard punctuation since CASE will not always be applied.

Then kern all CASE punctuation with all Capital forms and numerals.

Set up pairs when you can.

Sebastian Nagel's picture

So you create special .case puctuation glyphs for that (or at least create a copy of the normal ones)?

Igor Freiberger's picture

I have additional glyphs for punctuation to uppercase and small caps. Petite caps uses the same normal punctuation. In most cases these glyphs are copy of normal ones, just vertically repositioned and with different spacing. Sometimes the glyph is also a bit edited to match UC and SC height. Using proper spacing may avoid the need to special kerning in most glyphs.

msmiths's picture

Yeah, .case glyphs that are just repositioned vertically and like Igor said, depending on the type style maybe edited even more.

Then I have a separate kerning text file that has all punctuation forms replaced with, say /parenleft.cap hyphen.cap etc.

It's easy to do just using Find/Replace in a text editor and doesn't take long to get through the kerning for the case feature

Nick Shinn's picture

I make alternate punctuation characters, e.g. "".

But I try not to overdo it, and now put a lot less kerning in fonts than I used to.
For instance, if you kern a raised hyphen with capitals, PART-TIME will look like shit, because there will be a huge space between R and T, and the two T arms will be bumping, with the hyphen jammed up underneath them.

The side bearings of a hyphen are part of the character.

Sebastian Nagel's picture

so let's go boost glyph count by creating .case variants :)
and if i have to create copies anyway, i can also adjust shapes if it doesn't fit perfect.

thanks for the input.

Martin Silvertant's picture

Could someone tell me how I would implement this feature? Adding punctuation for caps is not a problem, but what do I do to activate case sensitive forms?

Stephen Rapp's picture

You can add the case sensitive punctuation to classes with small caps and use those for the c2sc or smcp features. I don't typically create them for ALL cap setting, but then I don't generally work on text fonts.

Martin Silvertant's picture

My typeface doesn't include small caps though. Right now I'm making some .case punctuation to go with a case feature. I got some advise at TypeDrawers.

Why don't you include them for all the caps setting?

Stephen Rapp's picture

My Caps are typically not designed for all cap settings. If I did general text fonts that would be more logical to include them. I might have done that in one font DeSoto. I added small caps to some upright script fonts like Baghadeer and Raniscript.

Martin Silvertant's picture

I can see that. It's the perfect fit for DeSoto. Shouldn't the bullet and hyphen in this picture of Baghadeer be raised though?

Perhaps you can help me. Nick mentioned on TypeDrawers that I should make classes for the default and alternative glyphs and implement the following:
sub @case_default by @case_alts ;

I made the classes but I don't know where to implement that line. I thought I would ask here as well, as the sooner I know how to implement this the better.

Stephen Rapp's picture

If you are using the case feature to sub a lower positioned punctuation mark with a higher punctuation mark then you can add this directly into the case feature. Be sure the order and count of each class is an exact match. Otherwise you'll get some puzzling results. I'm not sure how the case feature is supported in Adobe apps. It's not listed as a feature. You might consider using it with some sort of contextual substitution.

You could do something like:
sub @Caps @case_default' by @case_alts;

Mark Simonson's picture

It's activated in Adobe apps when you choose the "All Caps" OpenType style from the pop-up menu in the corner of the Character palette. Also, the normal "All Caps" option (Command-Shift-K/Ctrl-Shift-K or "TT" toolbar button) in InDesign activates it.

Dirk Becker's picture

InDesign's "All Caps" actually activates both 'case' and 'cpsp'.

Syndicate content Syndicate content