Disclaimer: This posting represents my personal views.
Sometimes, both the font developer and the user would be better off if with several separate fonts instead of a font that is heavily loaded with various stylistic variants. If your font includes four different kinds of decorative initials along with a regular uppercase and regular lowercase, you may decide to offload the decorative initials into separate fonts. Putting various kinds of glyphs into one font file typically makes sense if you wish to minimize manual user intervention (e.g. when certain glyphs should be inserted contextually along with other glyphs), or if you wish to have kerning between specific glyphs.
A typical border-case for a decision whether to put glyphs into a separate fonts or into one font is small caps. Some font developers choose to offer smallcap fonts as separate fonts rather than integrating these smallcaps into the basic fonts.
One advantage of such fonts would be that they would give users access to smallcaps in applications that don't support OpenType Layout features. Also, some typeface designs simply do not have lowercase but only have smallcap forms (e.g. Chevalier or Trajan Pro).
I would like to discuss such scenario. If such font is offered in OpenType format, it should include appropriately defined OpenType Layout features.
A smallcap-only font should include:
— uppercase glyphs named "A", "B", "C", associated with the normal uppercase Unicode codepoints
— smallcap glyphs named "a", "b", "c", associated with the normal lowercase Unicode codepoints
Optionally, it could also include a second set of smallcap glyphs named "A.c2sc", "B.c2sc", "C.c2sc".
Ideally, the font should also include at least two sets of digits, punctuation etc.
One scenario would be that the default glyphs for digits and punctuation named "one", "two", "question" etc. associated with the regular Unicode codepoints are the ones suitable for all-smallcap setting (i.e. smaller). In addition, the font would include a second set of digits and punctuation named "one.case", "two.case", "question.case" etc. that would be sized so that they would work in an all-caps setting.
The other scenario could be that the default glyphs are made so that they work with a mixed uppercase+smallcap setting, and a second set (smaller, named "one.smcp", "two.smcp", "question.smcp" etc.) is provided to work with all-smallcap settings. Optionally, a third set (largest, named "one.case", "two.case", "question.case" etc.) is provided to work in an all-caps setting.
Let's consider the feature definitions for such font:
feature titl {
lookup titl1 {
sub a by A;
sub b by B;
sub c by C;
sub one by one.case; # Only if you have separate all-uppercase digits
sub two by two.case; # Only if you have separate all-uppercase digits
sub question by question.case; # Only if you have separate all-uppercase punctuation
} titl1;
} titl;
feature case {
lookup titl1;
} case;
feature smcp {
# This feature definition only substitutes digits
# and punctuation from the default forms
# (whatever they might be) into forms that work
# in a mixed uppercase+smallcap setting.
# If the default digits and punctuation work fine,
# the "smcp" feature should have one idle substitution,
# e.g. sub .notdef by .notdef;
sub one by one.smcp;
sub two by two.smcp;
sub question by question.smcp;
} smcp;
feature c2sc {
# This feature substitutes uppercase letters
# as well as digits and punctuation
# into forms that work in an all-smallcap setting.
sub A by A.c2sc; # Could also be sub A by a;
sub B by B.c2sc; # Could also be sub B by b;
sub C by C.c2sc; # Could also be sub C by c;
sub one by one.smcp; # If your default digits don't work in all-smallcap
sub two by two.smcp; # If your default digits don't work in all-smallcap
sub question by question.smcp; # If your default punctuation doesn't work in all-smallcap
} c2sc;
This is the general principle. If your "smallcap digits" in this font are oldstyle figures, you could also include onum and lnum features, appropriately. You could even be creative and have four sets of capital letters: tall uppercase (as "A", "B"), 85%-sized (as "A.smcp", "B.smcp"), 75%-sized (as "a", "b") and x-height sized (as "A.pcap", "B.pcap"). The font could contain smcp, c2sc, pcap, p2sc and probably also ss01, ss02 and salt to map between the various sets.
Regards,
Adam