The beton
package provides an easy way to use CM Concrete for all engines (pdflatex/xelatex/lualatex) and the package allows to use small caps for roman regular weight. It does not have bold small caps (CM Concrete does not have bold at all, lower case or otherwise). You can fake that with the xfakebold
package, which inserts special pdf rendering commands in the document (pdflatex and lualatex only) that make the text appear bold - but it does not look very clean, as always with fake bold.
For xelatex and lualatex T1 font encoding is required to use CM Concrete. For pdflatex default encoding also works, however the fake bold result is much better with T1 encoding. Obligatory disclaimer not to use fake bold still applies.
MWE:
\documentclass{report}
\usepackage[T1]{fontenc} % required for xelatex/lualatex, improves fake bold result for pdflatex
\usepackage{beton} % package to load CM Concrete
\usepackage[bold=0.2]{xfakebold} % pdflatex/lualatex only
\newcommand{\textscbf}[1]{%
\setBold%
\textsc{#1}%
\unsetBold%
}
\begin{document}
Normal Text
\textsc{Small Caps.} \textscbf{Bold Small Caps.}
\end{document}
Result:
cm-super
package or another fix?