Smallcap versions of fi, fl and german double s in OTF

Artur Schmal's picture

Hi all,

Why would it be recommendable to include smallcap versions of fi, fl and the german double s in OpenType fonts? I've seen Abobe Pro fonts that come both with and without them.

Thanks,
Artur

Pieter van Rosmalen's picture

Hello Artur,

Small caps fi, fl and ß don’t exist, so I think you don’t need to include them. Sometimes a smallcap double s is designed to replace the ß.

Pieter

Miguel Sousa's picture

> Why would it be recommendable to include smallcap versions of fi, fl and the german double s in OpenType fonts?

fi.sc and fl.sc are small cap versions of fi (U+FB01) and fl (U+FB02). They are necessary in the font because the text might contain these Unicode ligatures (instead of f+i and f+l), and you'd want the glyphs to change to a small cap form when the user applies the 'smcp' OT feature.

germandbls.sc is a small cap version of ß (U+00DF). If you don't include this small cap glyph in your fonts, when the user applies the 'smcp' OT feature to the word "straße" he'll be left with a lowercase letterform among small caps.

Mark Simonson's picture

Some applications (only InDesign as far as I know) will make the conversion to small caps if you type "fi" or "fl" ligatures directly (shift-opt-5 and shift-opt-6 on Macs), but other applications (Quark, Illustrator) won't unless you include them in your smcp feature.

k.l.'s picture

Problem -- from a typographer's p.o.v. -- is that these small cap 'ligatures' cannot be letterspaced.
A better solution would be to 'break' these ligatures into their parts in smcp (or maybe even in ccmp and then re-ligate them in liga to get a clean character string). But this is theory because one-to-many substitution is not supported by AFDKO yet nor in most applications.  :(

Artur Schmal's picture

Thanks for your replies guys!

Artur

dezcom's picture

If the smcp feature is ahead of the liga feature in sequence, when smcp is applied, it should over ride the liga since it will aktready be in place.

ChrisL

Nick Shinn's picture

But it is the smcp feature which does the ligaturing:

ß becomes s_s
f i becomes f_i
f l becomes f_l

dezcom's picture

"ut it is the smcp feature which does the ligaturing"
?
Huh? Splenn that to me. Yes, eszet I understand but the f ligs make no sense in smcp. The f i to f_i happens in liga.

ChrisL

Miguel Sousa's picture

The only reason why there's the need for smallcap versions of fi and fl is because they are characters, i.e. they have their own Unicode codepoints. In addition, these two characters are included in the MacRoman encoding and can be easily accessed from the keyboard, so there's a high chance to find them in texts.

I should recall that the current best practice to handle these two glyphs is:
1. Name them fi and fl, and assign them the codepoints U+FB01 and U+FB02, respectively;
2. Make duplicate glyphs of fi and fl, and name them f_i and f_l (these should NOT be assigned any Unicode values as they are ligatures);
3. Make fi.sc and fl.sc glyphs (which are smallcap versions of fi and fl, NOT smallcap versions of f_i and f_l);
4. Handle fi.sc and fl.sc in 'smcp' and f_i and f_l in 'liga' as shown below.

feature smcp {
sub fi by fi.sc;
sub fl by fl.sc;
} smcp;

feature liga {
sub f i by f_i;
sub f l by f_l;
} liga;

The bottom line is, fi/fl are different from f_i/f_l. The first are "characters" and the latter are "alternates".
Hope this helps.

dezcom's picture

Thanks Miguel! That helps.

ChrisL

Robert Trogman's picture

The introduction of ligatures began with the casting of metal type. The "f" ligatures appeared because in the case of the "fi"the overhang of the f would bump against the dot on the "i" and so on with other letters of the "f" combination. The french made cliches or what we call glyphs in order to save time in the handsetting of type by casting most used combinations together on one piece of type. The use of ligatures have become a note of elegance in typography—just like "smart quotes."

Artur Schmal's picture

Thanks for this Miguel.
I noticed that InDesign is 'smart' enough to change the ß to s.sc + s.sc when applying the smallcaps feature even though there's no actual germandbls.sc present in the font. Illustrator however lacks this.

Artur

JCSalomon's picture

There is now a proposal for a capital “ß” in Unicode, mainly for use in capitalized names where a distinction must be drawn between “ß” and “ss”; a scaled version of the glyph proposed might be appropriate for a small-caps “ß”.

Christopher Slye's picture

In the past, we were not very good at applying this approach to our fonts consistently, so you will probably see different results depending on the typeface. Some fonts have 'f_i.sc' (that's bad), or perhaps no smallcap version at all (better, maybe). Our (Adobe's) policy of preserving codepoints through a "character + feature" model continued to evolve after our first OpenType font releases, unfortunately...

dan_reynolds's picture

Why are
germandbls.sc
fi.sc
fl.sc
and i_j.sc
bad? (I think I have my glyph names right here…)

Christopher Slye's picture

Why are
germandbls.sc
fi.sc
fl.sc
and i_j.sc
bad? (I think I have my glyph names right here…)

No, those first three are good -- they're small cap alternates of specific characters. These are "bad":

f_i.sc
f_l.sc
s_s.sc

...because they're not necessary. As was explained earlier, it's best to do the small cap substitutions before 'liga'. And, likewise, i_j.sc is an unnecessary alternate of a ligature. What you'd maybe want is ij.sc; ij is a legitimate Unicode character, like germandbls.

dan_reynolds's picture

OK, thanks!

JCSalomon's picture

BTW: The Linux Libertine font project includes capital and small-caps ‘ß’; see http://linuxlibertine.sourceforge.net/#spezial.

—ℐℴℯℓ

Thomas Phinney's picture

Some applications are smart enough to pre-process the text, in various degrees, before turning it into small caps. Many Adobe apps will do the right thing with the eszett even if the font doesn't explicitly handle it. It's arguably better to do it upstream in the app.

Cheers,

T

Syndicate content Syndicate content