Typeset old Spanish abbreviation: center ending over period

Centering is easy; the collision is cured by \/.

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}

\usepackage{ebgaramond}

\newcommand{\oa}[1]{%
  \/{\ooalign{\textsuperscript{#1}\cr\hidewidth.\hidewidth\cr}}%
}

\begin{document}

M\oa{o} Salazar, Villan\oa{co} al SS\oa{mo} a 8

{\itshape
M\oa{o} Salazar, Villan\oa{co} al SS\oa{mo} a 8}

\end{document}

Not sure it is good, though.

enter image description here


Credit to Joseph at Detect which text "mode" (normal, italic, bold, etc.) is currently in use? for helping to determine if in italic shape. If so, an extra kern is applied to the over-script (relative to the dot below) to make it aesthetically compatible with italic shape.

Note that I chose to center the dot under the first letter of the over-script, as shown in the OP's figure.

\documentclass[12pt]{article}
\usepackage{ebgaramond}
\usepackage[T1]{fontenc}
\usepackage{stackengine}
\makeatletter
\newcommand*{\IfItalicTF}{%
  \ifx\f@shape\my@test@it
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\newcommand*{\my@test@it}{it}
\makeatother
\newcommand\oldabbrev[2]{#1\nobreak%
  \def\stacktype{L}\setstackgap{L}{.5\baselineskip}\oldabbhelp#2\relax\relax}
\def\oldabbhelp#1#2\relax{\bgroup\scriptsize%
  \stackon{\normalsize.}{\IfItalicTF{\kern1.5pt}{}#1}\stackon{}{#2}\egroup}
\begin{document}
\oldabbrev{M}{o} Salazar, \oldabbrev{Villan}{co} al \oldabbrev{SS}{mo} a 8

\itshape
\oldabbrev{M}{o} Salazar, \oldabbrev{Villan}{co} al \oldabbrev{SS}{mo} a 8
\end{document}

enter image description here

If one truly wanted the dot under the center of the over-script, then this simple redefinition

\def\oldabbhelp#1\relax{\bgroup\scriptsize%
  \stackon{\normalsize.}{\IfItalicTF{\kern1.5pt}{}#1}\egroup}

will have the effect:

enter image description here


I couldn't resist to propose a small variant to Steven B. Segletes' solution using a font which has contextual historic S (EBGaramond doesn't, unfortunately), and a centred dot not on the base line. It compiles with xelatex or lualatex..

\documentclass[12pt]{article}

\usepackage{stackengine}
\usepackage{fontspec}
\setmainfont{Sabon Next LT Pro}


\newcommand{\myoldabbrev}[2]{#1\textsuperscript{\smash{\stackunder[0.5ex]{#2}{\normalsize.}}}}%

\begin{document}
\upshape \myoldabbrev{M}{o} Salazar, \myoldabbrev{Villan}{co} al \myoldabbrev{SS}{mo} a 8

\addfontfeature{StylisticSet={2, 4,5}, Ligatures=Historic}

\itshape
\myoldabbrev{M}{o} Salazar, \myoldabbrev{Villan}{co} al  \myoldabbrev{SS}{mo} 8

\myoldabbrev{M}{o} Salazar, \myoldabbrev{Villan}{co} al  \myoldabbrev{\char"017F\char"017F\kern0.25em}{mo} 8

\end{document} 

enter image description here