Small Caps Style for Markdown

I’m having trouble figuring out what the correct way to create a style for small caps would be. The menu item Edit > Transformations > Make Small Caps simply transforms the text into all caps and reduces the font size – which was expected behavior in Scrivener 2 given the discussion in some earlier threads on the topic on this forum. However, if I now create a style based on the small caps text even if I checkmark “include font size”, it doesn’t work. (It transforms the size but I have to manually do ALL CAPS to get small caps.)

However, I could probably get accustomed to typing ALL CAPS and then afterwards clicking my small caps style to adjust the size. But now I have a problem how to preserve my small caps upon compile.

In this thread ( … =2&t=30184),
Keith mentioned that Scrivener 3-s style system will provide a way to handle Small Caps.

So in compile I have now given my “Small Caps” style the prefix [ and the suffix ]{.smallcaps}
which are Pandoc’s small caps triggers.
However, given that my text is now technically ALL CAPS only with a smaller fontsize, I get in the markdown file [SOME TEXT]{.smallcaps} … which, of course, for further processing doesn’t work. (In LaTeX I could redefine \textsc{} to combine it with a MakeLowercase command but that might have other unintended consequences.)

Long story short, so how is this supposed to be working?
For now a kind of workaround would be to type whatever I want in small caps in lowercase and create a style called “small caps” that actually doesn’t do anything except upon compile adding the respective pre- and suffixes. Is there any better solution that would also let me see small caps in some capacity within Scrivener?

PS: BTW, upon playing around with it , I found some odd behavior, maybe a bug. When I select multiple words to which I previously applied Make Small Caps and in the same menu click on Remove Small Caps, then it undoes Small Caps for all the words except for the first one of them. Even selecting that word afterwards doesn’t change it.

As you’ve figured out, “Make Small Caps” is a fix round the RTF engine’s limitation, it forcibly changes case and then uses changes font properties to simulate the look. This isn’t compatible with a markdown compile.

The proper way to do this is use Opentype, which Scrivener fully supports. But for that you must find a font that supports the smcp opentype feature, try Avenir Next or Hoefler Text, or modern open source fonts like Source Pro from Adobe:

  • Select some text
  • Open the fonts panel (⌘T), choose the required font and activate the typography subpanel (under the :gear:).
  • Some fonts only allow global change, other you can apply independently to upper and lower case characters. Select what you want.
  • Close fonts panel, and now create a character style called “Small Caps” saving font family.

What it looks like in the editor (much nicer than faked small caps!):

Now you use your compile style transform to wrap []{.smallcaps} and Pandoc will then convert this into your required output:

Pandoc compile:

[Lørem ipsum dolør sit amet]{.smallcaps}, eu ipsum movet vix,

example HTML output:

<p><span class="smallcaps">Lørem ipsum dolør sit amet</span>, eu ipsum movet vix,

Fantastic! That’s awesome. I found out that you don’t even have to checkmark save the font family. When using fonts that support it it works with any font. And is even maintained when the font is changed after the fact.

It might be useful for the future to add something to the manual in this regard. Technically on page 710 of the manual it does indeed state “If your workflow requires true small caps you should use the typography features of your font to display this format, instead” but it might be useful to expand on this.

Thanks very much!

There are many fonts available in Scrivener. How can I find out which ones support small caps without looking at each one individually?

The only way of showing this information about a font that I know of is via the Fonts panel. Gathering the info is just a matter of down-arrowing through the font list there and noting which ones say they have small caps. First you need to get set up:

  1. Open the Font panel (cmd-t in Scriv and many other programs).*
  2. Open the Typography info panel: That is, click the gear icon in the resulting font window and pick Typography. This will open a small panel which will show a list of all the special typographic features of any font you now click on in the font list of the Font window.

Anyway, you can quickly go down the list of your installed fonts and look over the typographic features of each to find the ones list real small caps as a feature.

You only have to do this once, since you can simply make a custom list (Collection) of these fonts right in the Font panel. The resulting picking list would be system-wide, not specific to Scriv. Useful!

Note: How small caps is “classified” as a feature in the Typography panel is not entirely uniform. For example, my Baskerville has a category called ‘Letter Case’ – if you twiddle it open you see that this is where they put the Small Caps option. But with Tekton Pro, the relevant category in the list of typographical features is ‘Lower Case’ (more common) (and also Upper Case) – if you twiddle that open, you see that is the category they put the small caps feature under.


P.S. Here are a miscellaneous few fonts that do:

(This is based on the Regular variant of each typeface, and the other variants of that technically do not need to have the same features, but it looks like typically the others follow suit in regard to small caps.)

Another one is “Bodini 72 Smallcaps”, which is the actual font as listed in menus and such. That’s all it does. If you need something that is resilient to being pushed through systems that might not support advanced typography, font variants that work this way are a good approach.