# Why does the Greek lowercase o look disproportionately bold?

I'm using unicode-math and I've decided I really like the Latin Modern Math Greek letters better than those from other fonts. Unless it's an illusion, the omicron (o) always seems to look disproportionately bold, even when not explicitly bolded. Is there a particular reason for this? I would otherwise use the Greek letters from TeX Gyre Schola Math but there doesn't seem to be a \symbfsfup variant, and there too the omicron looks disproportionately bold.

MWE:

% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\RequirePackage[math-style=ISO]{unicode-math}
\setmathfont{TeX Gyre DejaVu Math}
\setmathfont[range=it/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=bfit/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=up/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=bfup/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=bfsfup/{greek,Greek}]{Latin Modern Math}

\begin{document}
$\alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi o\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega$
$\symbf{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi o\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
$\symup{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi o\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
$\symbfup{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi o\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
$\symbfsfup{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi o\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
\end{document}


UPDATE: Here is the MWE using \omicron and the resulting output. Newcomers to LaTeX who use the legacy engines (like pdflatex) may not know that the unicode-math package defines \omicron. Legacy TeX/LaTeX books explicitly point out there is no such command and readers may not know about the added functionality of modern engines (e.g. lualatex) and the power of Unicode.

% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\RequirePackage[math-style=ISO]{unicode-math}
\setmathfont{TeX Gyre DejaVu Math}
\setmathfont[range=it/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=bfit/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=up/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=bfup/{greek,Greek}]{Latin Modern Math}
\setmathfont[range=bfsfup/{greek,Greek}]{Latin Modern Math}

\begin{document}
$\alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi\omicron\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega$
$\symbf{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi\omicron\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
$\symup{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi\omicron\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
$\symbfup{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi\omicron\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
$\symbfsfup{% \alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\vartheta\iota\kappa \lambda\mu\nu\xi\omicron\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi \chi\psi\omega\Delta\Gamma\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega}$
\end{document}


• you used a latin o not an omicron (\omicron or ο) which is particularly noticable here as it means you get the dejavu math character not latin modern – David Carlisle Oct 11 '20 at 23:03
• Wow. All these years I've been thinking there was no \omicron command defined so I've never actually tried using it. That solves the problem. – LaTeXereXeTaL Oct 11 '20 at 23:11
• classic tex fitted everything into a 127 character 7-bit encoding so did not have room for a full Greek alphabet so dropped letters that looked similar to the Latin. Unicode fonts have space for more than 127 characters...... – David Carlisle Oct 11 '20 at 23:27
• In case David Carlisle’s explanation leaves any doubt: you weren’t wrong. There isn’t an \omicron in LaTeX unless you load unicode-math. – Davislor Oct 11 '20 at 23:30
• You might also want to add [Scale=MatchLowercase] to your \setmathfont commands, or even as \defaultfontfeatures. That will solve the problem of the Latin and Greek letters having noticeably different x-heights. – Davislor Oct 11 '20 at 23:34

You used a latin o not an omicron (\omicron) which is particularly noticeable here as it means you get the dejavu math character not latin modern.
\omicron is defined in unicode-math. It did not exist in classic TeX, which was limited to 127-character 7-bit encoding, so omitted definitions for anything that looked the same in both Latin and Greek.