Here's a comparison; the first block is Latin Modern at 5pt size (the specially designed font), the second block is Latin Modern 10 scaled at 5pt, the third block is Charter scaled at 5pt

The artifacts of the conversion to a bitmap image are good to show what's the purpose of specially designed fonts for small sizes (and also for bigger sizes): making the text readable.
Here is the code
\documentclass{standalone}
\usepackage{lmodern,lipsum}\frenchspacing
\begin{document}
\vbox{\hsize=5cm
\small Latin Modern Roman \\
\tiny\lipsum[2]
\small Latin Modern Roman (scaled) \\
{\normalsize\font\x=\fontname\font\space at 5pt \tiny\x
\lipsum[2]\par}
\usefont{T1}{bch}{m}{n}
\small Charter \\
\tiny\lipsum[2]
}
\end{document}
Your original \textun
acted as an switch (like \itshape
) so I redefined \textun
as
\newfontface\unshape[]{Latin Modern Roman Unslanted}
\newcommand\textun[1]{{\unshape #1}}
\textrm
, \textup
and/or \textun
You easily could re-defined \textrm
and \textup
with
\renewcommand\textup[1]{{\unshape #1}} % see section "Code" for \unshape
\renewcommand\textrm[1]{{\unshape #1}}
normal \textup{unslanted} normal \textup{unslanted}
which gives you

While that does work it is not a good idea. \textrm
and \textup
are well implemented macros. Who knows which package you might break?
Besides, \textrm
and \textup
aren't the same, for LaTeX applies:
rm
(roman) is a family specifier (“Serifs”). Families are (generally) roman/serif/antiqua, sans-serif/grotesque and typewriter.
up
is a shape specifier (“Slope”). Other shapes are: italics, oblique/slanted/sloped, Sᴍᴀʟʟ Cᴀᴘꜱ
- And then there are series (“Weight”): light, medium†, semi-bold, bold, heavy, … (names and definitions may vary).
bf
stands for boldface.
Code (Example)
{\sffamily sans-serif family \textrm{roman family} sf \textup{up shape} sf} \par
{\itshape italics \textrm{roman family} it \textup{up shape} it}
Output (Example)

FakeBold and SmallCaps
Borrowing from sdaau's answer the OP himself has found the following map-workaround:
Code (FakeBold SmallCaps)
\fontspec[
FakeBold=4,
SmallCapsFont={Latin Modern Roman Caps}
]{Latin Modern Roman}
\DeclareFontShape{EU1}{LatinModernRoman(0)}{bx}{sc}{<->ssub * LatinModernRoman(1)/m/sc}{}
Font sizes?
The following code shows these fonts included in the PDF:
- 5: Regular
- 7: Regular, Italic
- 8: Regular, Italic, Slant
- 9: Regular, Italic, Slant
- 10: Regular (+Caps), Italic, Oblique Caps, Slant, Unsl
- 12: Regular, Italic, Slant
- 17: Regular, Slant
Code
\documentclass[a4paper,10pt,draft]{article}
% Additional Options
\usepackage[landscape]{geometry}
\usepackage{fontspec}
%fontspec options:
\setmainfont[
Ligatures=TeX,
SmallCapsFont={Latin Modern Roman Caps},
SlantedFont={* Slanted},
ItalicFeatures = {
SmallCapsFont = {LMRomanCaps10-Oblique}
},
]{Latin Modern Roman}
\newfontface\unshape[]{Latin Modern Roman Unslanted}
\newcommand\textun[1]{{\unshape #1}}
\fontspec[
FakeBold=4,
SmallCapsFont={Latin Modern Roman Caps}
]{Latin Modern Roman}
\DeclareFontShape{EU1}{LatinModernRoman(0)}{bx}{sc}{<->ssub * LatinModernRoman(1)/m/sc}{}
\def\testtext{%
Latin Modern Roman normal text \par
\textit{Latin Modern Roman italic text} \par
\textsl{Latin Modern Roman Slanted} \par
{\textun{Latin Modern Roman Unslanted}} \par
\textsc{Latin Modern Roman Caps} \par
\emph{\textsc{Latin Modern Roman Oblique small caps?}} \par
{\bfseries\scshape Latin Modern Roman Caps FakeBold}\par
\null\par
}
\begin{document}
{\tiny\testtext}
{\scriptsize\testtext}
{\footnotesize\testtext}
{\small\testtext}
\testtext
{\large\testtext}
{\Large\testtext}
{\LARGE\testtext}
{\huge\testtext}
{\Huge\testtext}
\end{document}
Output (normal size)

† Yes there are \mdshape
and \textmd
.
Best Answer
fontspec
uses Latin Modern by default, you don’t need any action to use it.