You have made some misunderstood claims here: 1) \mathbf
does not give you lite-bold; 2) \mbf
does not give you heavy-bold. I’d like to first correct some misconceptions and then present a solution.
In your examples you are using the \mathbf
alphabet, not the \mathbold
alphabet. In fact, mtpro2
declares the latter by
\DeclareMathAlphabet{\mathbold}{LMP1}{mtt}{b}{it}
which means that the \mathbold
alphabet is bold and italic. You must purchase the complete version of mtpro2
to get this alphabet. So your lite
examples have nothing to do with \mathbold
. The \mbf
alphabet, however, does exist with the lite version, and \mbf
is indeed a separately designed bold upright math font. All heavy math fonts are available only with the complete version.
Under the NFSS (New Font Selection Scheme) of LaTeX2e, the commands \mathrm
, \mathbf
, \mathit
, \mathsf
, \mathtt
, etc., switch to text fonts in math mode. So when you type
$\mathbf{a-b}$
The a
and the b
will be printed in bold upright face of the text font, while the hyphen -
behaves like the minus sign because you are in math mode. The \mathXX
commands only affect what’s called the \mathalpha
class (usually includes all digits, lower and upper Latin letters).
\documentclass{article}
\usepackage{fontspec}% `no-math' is no longer needed since v2.7b (2019/02/12)
%\setmainfont{Times New Roman}
\setmainfont{Comic Sans MS}% For illustration purpose
\usepackage[lite]{mtpro2}
\begin{document}
$012abcdefg$, `no-math' is no longer needed, digits stay as MathT\i me\par
$\mathbf{012abcdefg}$, text font in math mode\par
$\mbf{012abcdefg}$, real bold upright math alphabet
\end{document}

See? The \mathbf
command switches to text font (Comic Sans MS) here.
If you look closely in your pdfLaTeX example, then you should realize that \mathbf
switches to Computer Modern Bold, which seems to be “semi-bold” because the default is Computer Modern Bold Extended. Maybe this is why you think \mbf
is heavy: It isn’t.
Solution
You have Times New Roman for Windows, Times for MacOS, Nimbus Roman No. 9 L for Linux. These are all Times-like digitization of the same/similar metal types. In the TeX world, you have TeX Gyre Termes. For cross-platform considerations, I would suggests TeX Gyre Termes (IMHO, it has better support in, of course, TeX).
Unfortunately mtpro2
uses fixed font attributes. This is because the legacy Times family, called ptm
, has bold face in the b
series. Let’s help mtpro2
to re-declare related commands by using implicit font attributes:
\documentclass{article}
\usepackage{fontspec}% `no-math' is no longer needed since v2.7b (2019/02/12)
%\setmainfont{Times New Roman}
\setmainfont{TeX Gyre Termes}% For the TeX world, truly cross-platform
\setsansfont{TeX Gyre Heros}
\setmonofont{TeX Gyre Cursor}
\usepackage[lite]{mtpro2}
\DeclareSymbolFont{operators}{\encodingdefault}{\rmdefault}{\mddefault}{\updefault}
\SetSymbolFont{operators}{bold}{\encodingdefault}{\rmdefault}{\bfdefault}{\updefault}
\DeclareMathAlphabet{\mathbf}{\encodingdefault}{\rmdefault}{\bfdefault}{\updefault}
\DeclareMathAlphabet{\mathit}{\encodingdefault}{\rmdefault}{\mddefault}{\itdefault}
\DeclareMathAlphabet{\mathsf}{\encodingdefault}{\sfdefault}{\mddefault}{\updefault}
\DeclareMathAlphabet{\mathtt}{\encodingdefault}{\ttdefault}{\mddefault}{\updefault}
\SetMathAlphabet{\mathit}{bold}{\encodingdefault}{\rmdefault}{\bfdefault}{\itdefault}
\SetMathAlphabet{\mathsf}{bold}{\encodingdefault}{\sfdefault}{\bfdefault}{\updefault}
\SetMathAlphabet{\mathtt}{bold}{\encodingdefault}{\ttdefault}{\bfdefault}{\updefault}
\newcommand*\test[1]{\texttt{\string#1}: $#1{012abc}$}
\begin{document}
Normal math: $012abc$\par
\test\mbf\par
\test\mathrm, $\sin$\par
\test\mathbf\par
\test\mathit\par
\test\mathsf\par
\test\mathtt
Switch to \verb|\boldmath| now:\par
\boldmath
\test\mathrm, $\sin$\par
\test\mathbf\par
\test\mathit\par
\test\mathsf\par
\test\mathtt
\end{document}

P.S. The no-math
option is no longer needed since fontspec
v2.7b (2019/02/12). See this CTAN announcement.
\encodingdefault
and\rmdefault
. As\encodingdefault
is TU with the unicode engines and\rmdefault
is different too this gives quite different fonts. – Ulrike Fischer Feb 23 '19 at 18:52b
instead ofbx
as series. – Ulrike Fischer Feb 24 '19 at 13:33