11

Is there a widely available calligraphic font that (1) contains small (lowercase) letters and (2) has a recognizably calligraphic capital letter O?

Background. (1) In mathematics (algebraic geometry), one distinguishes "global" and "sheaf" versions certain constructions (Ext, Hom, ...), the latter being written in calligraphic script (standard notation for sheaves). However, most books end up typesetting the sheaf as follows

global Ext, sheaf Ext

pulling the small letters from the italics of a completely different font.

(2) The calligraphic capital letter O plays a special role in algebraic geometry, too, and most authors insist on it being recognizably calligraphic (i.e. not just a closed round loop)


Edit. The following are achieved with extra kerning from @egreg's and @UlrikeFischer's answers (in chronological order)


@egreg's answer

\makeatletter
\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix}{m}{n}
\DeclareMathAlphabet{\mathcal}{LS1}{stixscr}{m}{n}
\makeatother

\DeclareMathOperator{\sHom}{\mathcal{H\mkern-7mu o\mkern-2.5mu m\mkern-1.5mu}}
\DeclareMathOperator{\sExt}{\mathcal{E\mkern-4.5mu x\mkern-2.5mu t\mkern-1mu}}
\DeclareMathOperator{\sEnd}{\mathcal{E\mkern-4mu n\mkern-4.5mu d\mkern-1mu}}

egreg's answer


@UlrikeFischer's answer

\DeclareFontFamily{U}{mathc}{}
\DeclareFontShape{U}{mathc}{m}{it}%
{<->s*[1.03] mathc10}{}
\DeclareMathAlphabet{\mathcal}{U}{mathc}{m}{it}

\DeclareMathOperator{\sHom}{\mathcal{H\mkern-3mu om}}
\DeclareMathOperator{\sExt}{\mathcal{E\mkern-3mu xt}}
\DeclareMathOperator{\sEnd}{\mathcal{E\mkern-3mu nd}}

UlrikeFischer's answer

Earthliŋ
  • 1,140
  • 1
    There are lots and lots of options for math-calligraphic and math-script fonts out there. (The screenshot you posted appears to feature the Computer Modern version of math-calligraphic uppercase letters.) I suggest you take a look at the user guide of the mathalfa package to obtain an overview of available fonts -- many of which, happily, do provide lowercase calligraphic letters too. – Mico Jun 06 '17 at 08:54
  • You can take a look my answer to how-to-get-the-lowercase-calligraphic-symbols for three calligraphic typefaces with lowercase letters. – Bernard Jun 06 '17 at 08:58

3 Answers3

16

You could try the mathc font (part of mathabx). It is not perfect, e.g. I would probably add a bit negative space between the E and the x but it has a distinct O and lowercases:

\documentclass{scrbook}
\usepackage{amsmath}
\DeclareFontFamily{U}{mathc}{}
\DeclareFontShape{U}{mathc}{m}{it}%
{<->s*[1.03] mathc10}{}

\DeclareMathAlphabet{\mathscr}{U}{mathc}{m}{it}

\DeclareMathOperator{\Hom}{Hom}
\DeclareMathOperator{\Ext}{Ext}
\DeclareMathOperator{\sHomA}{\mathscr{Hom}}
\DeclareMathOperator{\sExtA}{\mathscr{Ext}}


\begin{document}


\begin{gather*}
\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\\
\mathscr{abcdefghijklmnopqrstuvwxyz}\\
\Hom(A,B) \leftrightarrow \sHomA(\mathscr{A},\mathscr{B}) \\
\Ext(A,B) \leftrightarrow \sExtA(\mathscr{A},\mathscr{B}) \\
\end{gather*}

\end{document}

enter image description here

Ulrike Fischer
  • 327,261
9

The STIX fonts have a full fledged script alphabet:

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix}{m}{n}
\DeclareMathAlphabet{\mathscr}{LS1}{stixscr}{m}{n}
\makeatother

\newcommand{\textscr}[1]{%
  \text{\usefont{LS1}{stixscr}{m}{n}#1}%
}

\DeclareMathOperator{\Hom}{Hom}
\DeclareMathOperator{\Ext}{Ext}
\DeclareMathOperator{\sHom}{\textscr{Hom}}
\DeclareMathOperator{\sExt}{\textscr{Ext}}

\begin{document}

\begin{gather*}
\Hom(A,B) \leftrightarrow \sHom(\mathscr{A},\mathscr{B}) \\
\Ext(A,B) \leftrightarrow \sExt(\mathscr{A},\mathscr{B}) \\
\mathscr{O}
\end{gather*}

\end{document}

enter image description here

egreg
  • 1,121,712
  • 1
    You can get them also with the BOONDOX package, but imho the spacing isn't suitable for "three-letter-variables" – Ulrike Fischer Jun 06 '17 at 09:06
  • Great suggestion by egref...I've seen many of your answers, those are very useful...thanks a lot... – MadyYuvi Jun 06 '17 at 09:14
  • @UlrikeFischer The spacing isn't perfect and the font looks like it isn't meant for writing words, but with extra kerning I think it's a viable alternative (see the update to my question). – Earthliŋ Jun 06 '17 at 16:53
  • the stix fonts should also have a full calligraphic alphabet, which doesn't have the curlicues of the script. the stix script is quite unsuited to be used for "words". – barbara beeton Mar 07 '18 at 19:57
  • @barbarabeeton I fully agree – egreg Mar 07 '18 at 20:39
1

Just in case you desire that Hom, Ext and End be upright, here is one variation.

\documentclass{article}
\usepackage{concmath-otf}

Code taken from https://tex.stackexchange.com/a/63188/128462

\usepackage{luatex85} \newsavebox{\foobox} \newcommand{\slantbox}[2][.5] {% \mbox {% \sbox{\foobox}{#2}% \hskip\wd\foobox \pdfsave \pdfsetmatrix{1 0 #1 1}% \llap{\usebox{\foobox}}% \pdfrestore }% }

\DeclareMathOperator{\Hom}{Hom} \DeclareMathOperator{\Ext}{Ext} \DeclareMathOperator{\End}{Ext} \DeclareMathOperator{\sHomA}{\slantbox[-0.2]{(\symcal{H})\kern-0.9pt\textit{om}}} \DeclareMathOperator{\sExtA}{\slantbox[-0.2]{(\symcal{E})\kern-0.7pt\textit{xt}}} \DeclareMathOperator{\sEndA}{\slantbox[-0.2]{(\symcal{E})\kern-0.8pt\textit{n\hspace{-0.2pt}d}}}

\begin{document}

\begin{gather*}
    \mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\\
    \mathscr{abcdefghijklmnopqrstuvwxyz}\\
    \Hom(A,B) \leftrightarrow \sHomA(\mathscr{A},\mathscr{B}) \\
    \Ext(A,B) \leftrightarrow \sExtA(\mathscr{A},\mathscr{B}) \\
    \sExtA(\symscr{F}, \symscr{G}) \qquad \sEndA(\symscr{X})\\
    \symbf{R}^q\sHomA_{\symscr{O}}(F,-) = \sExtA^q_{\symscr{O}}(F,-)\\
    \symbb{R}^q\sHomA_{\symscr{O}}(F,-) = \sExtA^q_{\symscr{O}}(F,-)
\end{gather*}

\end{document}

concrete math calligraphic

Now, Concrete Math does not really have a lowercase calligraphic font, but I think the italic one matches well, except for a very slight stroke width difference. It also seems that calligraphic H is slightly below o and m, but I don't know how to fix that. Here's how it looks for Libertinus and STIX Two, which provide lowercase calligraphic letters.

libertinus calligraphic

stix two calligraphic