[Tex/LaTex] Bold type and font specification with fontspec

boldfontsfontspeclibertinexetex

When I manually specify the Linux Libertine O font types fontspec should load, the bold type is significantly bolder than when I load the exact same font family as a system font.

MWE:

\documentclass{article}
\usepackage{fontspec}
\setmainfont % load font from path
    [
        Path = C:/Windows/Fonts/,
        Extension = .otf,
        UprightFont = LinLibertine_R,
        BoldFont = LinLibertine_RB,
        ItalicFont = LinLibertine_RI,
        BoldItalicFont = LinLibertine_RBI,
    ]
    {libertine}
\newfontfamily\libertinesystemfont{Linux Libertine O} % load font from system font

\begin{document}
\LARGE{\textbf{A large heading in bold type}}

\textit{ABC\textbf{\underline{V\char"0306}}DE}.

\libertinesystemfont{
\LARGE{\textbf{A large heading in bold type}}

\textit{ABC\textbf{\underline{V\char"0306}}DE}.
}
\end{document}

enter image description here

Peeking into my .log file, I cannot detect anything that would explain why these font types look different:

.................................................
. fontspec info: "defining-font"
. 
. Font family 'libertine(0)' created for font 'libertine' with options [ Path
. = C:/Windows/Fonts/, Extension = .otf, UprightFont = LinLibertine_R,
. BoldFont = LinLibertine_RB, ItalicFont = LinLibertine_RI, BoldItalicFont =
. LinLibertine_RBI, ].
. 
. This font family consists of the following shapes:

[...]

. * 'bold' with NFSS spec.:
. <->"[C:/Windows/Fonts/LinLibertine_RB.otf]/ICU:script=latn;language=DFLT;"

[...]

. * 'bold italic' with NFSS spec.:
. <->"[C:/Windows/Fonts/LinLibertine_RBI.otf]/ICU:script=latn;language=DFLT;"

[...]

. Font family 'LinuxLibertineO(0)' created for font 'Linux Libertine O' with
. options [].
. 
. This font family consists of the following shapes:

[...]

. * 'bold' with NFSS spec.:
. <->"Linux Libertine O/B/ICU:script=latn;language=DFLT;"

[...]

. * 'bold italic' with NFSS spec.:
. <->"Linux Libertine O/BI/ICU:script=latn;language=DFLT;"

Best Answer

It turns out that when compiling with XeLaTeX (but not with LuaLaTeX), fontspec doesn't load the bold fonts when it calls system fonts, but rather the semibold fonts, even though the .log file seems to state that the regular bold (B) and bold italic (BI) fonts have been loaded, rather than the semibold (Z) and semibold italic (ZI).

\documentclass{article}
\usepackage{fontspec}
\setmainfont % load font from path
    [
        Path = C:/Windows/Fonts/,
        Extension = .otf,
        UprightFont = LinLibertine_R,
        BoldFont = LinLibertine_RZ, % Linux Libertine O Regular Semibold
        ItalicFont = LinLibertine_RI,
        BoldItalicFont = LinLibertine_RZI, % Linux Libertine O Regular Semibold Italic
    ]
    {libertine}
\newfontfamily\libertinesystemfont{Linux Libertine O} % load font from system font

\begin{document}
\LARGE{\textbf{A large heading in bold type}}

\textit{ABC\textbf{\underline{V\char"0306}}DE}.

\libertinesystemfont{
\LARGE{\textbf{A large heading in bold type}}

\textit{ABC\textbf{\underline{V\char"0306}}DE}.
}
\end{document}

enter image description here

Why it does this, and why fontspec behaves differently in XeLaTeX and LuaLaTeX is not clear to me.