I really like how Steven is generating upright greek letters in his answer:
\documentclass[a4paper]{article}
\newsavebox{\foobox}
\newcommand{\slantbox}[2][0]{\mbox{%
\sbox{\foobox}{#2}%
\hskip\wd\foobox
\pdfsave
\pdfsetmatrix{1 0 #1 1}%
\llap{\usebox{\foobox}}%
\pdfrestore
}}
\newcommand\unslant[2][-.25]{\slantbox[#1]{$#2$}}
\newcommand\ualpha{\unslant\alpha}
\newcommand\ubeta{\unslant\beta}
\newcommand\ugamma{\unslant\gamma}
\begin{document}
$\alpha\beta\gamma$ \par
$\ualpha\ubeta\ugamma$ \par
$X_{\alpha\beta 123}$ \par
$X_{\ualpha\ubeta 123}$ \par
\end{document}
However, when it comes to subscripts, it just does not look right:

Especially the gap between the letters and the numbers looks bad and the come out way too big.
I experimented with
\newcommand\unslant[2][-.25]{\slantbox[#1]{$#2\!$}}
but now it comes out badly in normal text:

Is there any solution to get it work? Or do I need to define separate commands, for both cases subscripts and normal?
I'd like to avoid to return to packages like upgreek, which just doesn't fit a lot of fonts. But I didn't had these problems though.
Splitting up the definitions would work, not perfect but on could live with it:
\newcommand\ualpha{\unslant\alpha}
\newcommand\ubeta{\unslant\beta}
\newcommand\ugamma{\unslant\gamma}
\newcommand\sualpha{\scriptsize\unslant\alpha\kern-0.075em}
\newcommand\subeta{\scriptsize\unslant\beta\kern-0.07em}
\newcommand\sugamma{\scriptsize\unslant\gamma\kern-0.07em}
\begin{document}
$\alpha\beta\gamma$ \par
$\ualpha\ubeta\ugamma$ \par
$X_{\alpha\beta 123}$ \par
$X_{\sualpha\subeta 123}$ \par
\end{document}

But is that really necessary?


boldandbxin the line\SetSymbolFont{upgreek}{bold}{LGR}{cmr}{bx}{n}]byUandm. (not tested.) – barbara beeton Apr 05 '15 at 12:46