I would like a set of macros to switch the font alternative in ConTeXt, to either italics, slanted, or bold, and I would like them to combine in an intuitive manner, similarly to LaTeX's \textit and \textbf.
The ConTeXt wiki says that the commands \typeface, \boldface, and \swapface behave similarly to how I want my macros to behave. Unfortunately, \boldface does not always preserve italics or slant, and there are no analogous commands for italics and slanted font alternatives. The following image, from here, demonstrates the behavior of the mentioned commands for various current font alternatives.

(source: contextgarden.net)
After looking at the ConTeXt source code for \typeface, \boldface, and \swapface, found here, I tried creating my desired macros with the following code:
\unexpanded\def\normalItalic
{\relax
\ifx\fontalternative\s!bf \bi \else
\ifx\fontalternative\s!bi \bi \else
\ifx\fontalternative\s!bs \bi \else
\it \fi\fi\fi}
\unexpanded\def\normalSlanted
{\relax
\ifx\fontalternative\s!bf \bs \else
\ifx\fontalternative\s!bi \bs \else
\ifx\fontalternative\s!bs \bs \else
\sl \fi\fi\fi}
\unexpanded\def\normalBold
{\relax
\ifx\fontalternative\s!it \bi \else
\ifx\fontalternative\s!sl \bs \else
\ifx\fontalternative\s!bi \bi \else
\ifx\fontalternative\s!bs \bs \else
\bf \fi\fi\fi\fi}
\def\Italic#1{{\normalItalic #1}}
\def\Slanted#1{{\normalSlanted #1}}
\def\Bold#1{{\normalBold #1}}
Unfortunately, these do not combine as I would expect, based on the behavior of \typeface, \boldface, and \swapface. \Italic{Hello \Bold{World}!} produces the output Hello World! instead of the expected Hello World!
What causes my code to behave differently from the macros \typeface, \boldface, and \swapface so that they do not combine correctly?
\s!etc. – Aditya Apr 19 '16 at 21:35