It turned out that the OP’s preference goes to \expandafter\string\the\font.
The following (compilable) example compares three approaches that have been proposed:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\begin{document}
Compare
\begin{center}
\expandafter\meaning\the\font
\end{center}
with
\begin{center}
\expandafter\string\the\font
\end{center}
and with
\begin{center}
\fontname\font
\end{center}
\end{document}
The output is:

Addendum
Let me add a few remark, just to clarify a couple of points.
As I already observed in a comment, in the so-called New Font Selection Scheme (NFSS), which is part of LaTeX2e, the fact that the control sequence for selecting a font has the form
\<encoding>/<family>/<series>/<shape>/<size>
is not a “happy incident”, but a precise design principle on which the NFSS itself relies heavily.
Simply think of how a typical “low level” font selection like
\fontfamily{cmdh}\fontseries{m}\fontshape{n}%
\selectfont
works: first, the three declarations in the first line set the corresponding internal macros \f@family, \f@series, and \f@shape; then, the \selectfont command uses the updated values to build, and subsequently invoke, the appropriate “font-selecting” control sequence. Indeed, the LaTeX2e kernel defines \fontfamily, \fontseries, and \fontshape as follows:
\DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}}
\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
\fontencoding and \fontsize are a bit more complicated, but among the other things they do they set, in a similar way, the internal macros \f@encoding and \f@size. On the other hand, the definition of \selectfont is
\DeclareRobustCommand\selectfont
{%
\ifx\f@linespread\baselinestretch \else
\set@fontsize\baselinestretch\f@size\f@baselineskip \fi
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
\font@name
\size@update
\enc@update
}
The lines that are relevant to our discussion are
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
\font@name
As you can see, the macro \font@name is made to expand to a control sequence whose name is obtained by the concatenation of the full expansion of \curr@fontshape, a /, and the full expansion of \f@size; since \curr@fontshape is (statically) defined as
\def\curr@fontshape{\f@encoding/\f@family/\f@series/\f@shape}
and since this definition gets fully expanded, we see that this process indeed yields a control sequence of the form
\T1/cmdh/m/n/10
(for example). The \pickup@font macro ensures that this control name is defined and that it loads the correct external font (this is where the real “hard work” takes place!), after which the font selector that has just been constructed is invoked by executing \font@name.
We can add that \size@update and \enc@update are simply “hooks” where actions that need to be executed when the font size and/or encoding, respectively, have changed can be stored, and that the two lines of code that mention \baselinestretch take into account the possibility that the user has directly modified this obsolete LaTeX2.09 style parameter.
All that said, and following a suggestion from the OP, we can supplement our original example with a couple of other methods to obtain information about the current font:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\begin{document}
Compare
\begin{center}
\expandafter\meaning\the\font
\end{center}
with
\begin{center}
\expandafter\string\the\font
\end{center}
and with
\begin{center}
\fontname\font
\end{center}
Other methods that use internal commands follow.
\makeatletter
Taking font components apart:
\begin{center}
\begin{tabular}{ll}
Encoding: & \f@encoding \
Family: & \f@family \
Series: & \f@series \
Shape: & \f@shape \
Size: & \f@size
\end{tabular}
\end{center}
All in a row:
\begin{center}
\selectfont % needed in order to get "\font@name" in sync
\expandafter\string\font@name
\end{center}
\makeatother
\end{document}
The corresponding output is:

\the\fontdoesn't produce any output; it has never. – egreg Jun 22 '17 at 19:40\the\fontexpands to/OT1/cmr/m/n/10? And how can I output the current font? – Evan Aad Jun 22 '17 at 19:42\OT1/cmr/m/n/10which selects that font not to the verbatim text\OT1/cmr/m/n/10– David Carlisle Jun 22 '17 at 19:43\the\fontexpands to\rmit does not mean it makes the letters backslash r m it means it expands to the command\rmwhich selects a roman font – David Carlisle Jun 22 '17 at 19:44\expandafter\meaning\the\font– David Carlisle Jun 22 '17 at 19:47\expandafter\meaning\the\fontyields, for example,select font cmtt10, wherecmtt10is the external (that is, filesystem’s) name of the font; to get something of the form\OT1/cmtt/m/n/10, say, I’d rather suggest\expandafter\string\the\font. – GuM Jun 22 '17 at 22:53\fontnamesuggestion comes to more or less the same thing too. – David Carlisle Jun 22 '17 at 23:02\OT1/cmr/m/n/10is 'OT1/cmr/m/n/10', i.e. the slash characters are part of the command's name? – Evan Aad Jun 23 '17 at 01:36\OT1and the rest was a list of delimited arguments. – Evan Aad Jun 23 '17 at 06:12