The German ß (sharp s, glyph name
germandbls) is a lowercase letter that denotes an unvoiced s sound after a long vowel or diphthong. Throughout the past two hundred years, the idea of a capital version surfaced and disappeared countless times. In recent years, the topic has come up again. Here’s the deal.
The Official Sharp S Situation
If you are familiar with linguistics, you certainly know the difference between a descriptive and a prescriptive grammar. Prescriptively speaking, there is no uppercase ß in German orthography, be it traditional (‘alte Rechtschreibung’) or reformed (‘neue Rechtschreibung’). If you set a word like ‘Straße’ (‘street’) in uppercase or small caps, you are supposed to spell it ‘STRASSE’, i.e. turn the ß into a double S. In the indeed very rare exception where it could be confused with a word spelled with double s, you turn it into SZ instead. The one example that is almost always used to illustrate this case is the word ‘Maße’ (‘measures’) which needs to be spelt ‘MASZE’ because it might be confused with ‘Masse’ (‘mass’).
So far, so good. There is one exception though. If, for whatever reason, you need to set a proper name that happens to contain a sharp s in uppercase letters, it must not be replaced, neither by double-S nor by SZ. That’s because it’s a difference whether Mrs. Weiss, Mrs. Weiß or Mrs. Weisz gets the parking ticket. So, in uppercase, we need to be able to differentiate between WEISS, WEIß and WEISZ. In other words, we have a good reason to put capital ß into our fonts.
Capital ß and its Practical Problems
Theoretically, we can. A couple of years ago, Unicode introduced
LATIN CAPITAL LETTER SHARP S at the code point
U+1E9E. In Glyphs, you simply add a glyph called
Germandbls (note the capital G) to your font.
The only problem we have now is that this letter cannot be typed on most keyboard layouts. It’s not very likely that this is going to change anytime soon. And it is even less likely that a majority of users will be able or willing to differentiate between uppercase and lowercase ß. What makes things worse is that there is not even any agreement about what a capital ß should look like.
So before you go on to design your
Germandbls, move on over to Ralf Hermann’s excellent summary of the situation.
Enter OpenType features. We could turn
germandbls (lowercase ß) into
Germandbls (uppercase ß) between other uppercase letters. But we shouldn’t, because this could end up as a character change from
U+1E9E, and unless we have a pretty good reason not to, Opentype features should stick to exchanging glyphs, not characters. So, assuming you already have
Germandbls, make a copy of it and call it
germandbls.calt. You can do so by choosing Glyph > Add Glyphs… and typing this in the dialog that appears:
Once you press the Generate button, you will have a component-based copy of your capital sharp s.
Theoretically, one would tend to put the OpenType substitution into
locl as a substitution for the
DEU language code. But, since this also (or even mainly) applies to proper names, it is not wise to limit it to the German language. That’s why I suggest to implement it in
calt. To do this, we go into File > Font Info > Features, add a new feature by pressing the Plus button in the lower left corner, and rename the feature from
calt. Then, you add this to the
calt feature code:
sub @Uppercase germandbls' @Uppercase by germandbls.calt; sub @Uppercase @Uppercase germandbls' by germandbls.calt;
Luckily, Glyphs automatically generates the
Uppercase class for the
cpsp feature. We can re-use it here for our purposes. In the first substitution, lowercase ß gets replaced by an uppercase ß between two other capital letters. To also cover ß at the end of a name like Weiß, the second substitution makes the same substitution after two consecutive capital letters.
One remark. You may have asked yourself: why not already substitute lowercase ß after a single capital letter? Because there are a few cases in German where lowercase ß can appear after a capital letter, namely forms of ‘essen’ (‘to eat’): ‘Aß Tom Fleisch?’ (‘Did Tom eat meat?’) or ‘Iß deine Suppe!’ (traditional orthography for ‘Eat your soup.’). So we need to exclude this case. To my knowledge, there are no two-letter proper names that end in a sharp s, so that shouldn’t cause problems.
This is pretty well supported. Both Adobe InDesign and Quark XPress support
Even Apple’s text engine is comfortable with contextual alternates. And it does not affect those users who choose to type or insert
SAMPLE FONT: HENRIETTE, COURTESY OF TYPEJOCKEYS.
Update 2013-05-12: rewrote the OpenType feature part (removed locl and case hacks), added link to opentype.info.
Update 2015-10-18: updated link to Ralf’s article (thx Ondrej).