This is a consequence of the resource saving strategies used by Knuth.
There is no fontdimen that deal with the thickness of the vinculum, because the radical will need to be vertically adjusted anyway, so Knuth saved some memory space by making the radical character to mostly hang below the baseline; the character's height is what's used for the thickness of the vinculum.
Let's do some comparison. For Computer Modern, the radical is at slot 0x70 in either the symbol font (family 2) or the large symbols font (family 3).
We can easily ask TeX to show the heights:
\showthe\fontcharht\textfont2"70
\showthe\fontcharht\textfont3"70
\bye
(compile with pdftex
) to get, in both cases, 0.39998pt
(which is the same as 0.4pt
).
For STIX Two it's a bit more complicated. In stix2.sty
we find
\DeclareSymbolFont{largesymbols} {LS2}{stix2ex} {m} {n}
[...]
\stix@MathRadical{\sqrtsign} {largesymbols}{"F9}{largesymbols}{"74}
Let's find what's in LS2stix2ex.fd
:
\DeclareFontShape{LS2}{stix2ex}{m}{n} {<-> stix2-mathex}{}
so we can repeat the test above by selecting the TFM file
\font\test=stix2-mathex
\showthe\fontcharht\test"F9
\showthe\fontcharht\test"74
\bye
to get, in both cases, 0.68pt
.
Replacing the characters in stix-mathex.pfb
with the characters in cmsy10.pfb
and cmex10.pfb
(you need both and there are several radicals in cmex10
) isn't enough: you also need to modify the TFM file to have a height of 0.4pt
instead of 0.68pt
(and to ensure that the position of the glyph is correct).
You can see that the character is from cmex10.pfb
, but the vinculum has the thickness advertised in the TFM file that you haven't changed.
\font\test=stix2-mathex
CM
\vrule height 0.05pt depth0.05pt width 15pt \kern-15pt
{\tenex\char"70}
\bigskip
STIX Two
\vrule height 0.05pt depth0.05pt width 15pt \kern-15pt
{\test\char"74}
\bye
The hairlines show the baseline:
If we do tftopl cmex10
, we see the series of the large radicals starting from octal 160 (hexadecimal 70)
(CHARACTER O 160
(CHARWD R 1.000003)
(CHARHT R 0.039999)
(CHARDP R 1.160013)
(NEXTLARGER O 161)
)
(CHARACTER O 161
(CHARWD R 1.000003)
(CHARHT R 0.039999)
(CHARDP R 1.760019)
(NEXTLARGER O 162)
)
(CHARACTER O 162
(CHARWD R 1.000003)
(CHARHT R 0.039999)
(CHARDP R 2.360025)
(NEXTLARGER O 163)
)
(CHARACTER O 163
(CHARWD R 1.000003)
(CHARHT R 0.039999)
(CHARDP R 2.9600315)
(NEXTLARGER O 164)
)
(CHARACTER O 164
(CHARWD R 1.055559)
(CHARDP R 1.800018)
(VARCHAR
(TOP O 166)
(BOT O 164)
(REP O 165)
)
)
(CHARACTER O 165
(CHARWD R 1.055559)
(CHARDP R 0.600006)
)
(CHARACTER O 166
(CHARWD R 1.055559)
(CHARHT R 0.039999)
(CHARDP R 0.560007)
)
where you see that all of them are assigned a height of 0.4pt
(conversion from scaled point may differ in the last digit for TeX or TFtoPL). With stix2-mathex
we need to start from character t (ASCII hex "74)
(CHARACTER C t
(CHARWD R 1.041)
(CHARHT R 0.068)
(CHARDP R 1.811)
(NEXTLARGER C u)
)
(CHARACTER C u
(CHARWD R 1.177)
(CHARHT R 0.068)
(CHARDP R 2.302)
(NEXTLARGER C v)
)
(CHARACTER C v
(CHARWD R 1.17)
(CHARHT R 0.068)
(CHARDP R 2.823)
(NEXTLARGER C w)
)
(CHARACTER C w
(CHARWD R 1.212)
(CHARHT R 0.068)
(CHARDP R 1.811)
(NEXTLARGER C y)
)
(CHARACTER C x
(CHARWD R 1.212)
(CHARHT R 0.45)
)
(CHARACTER C y
(CHARWD R 1.212)
(CHARHT R 0.068)
(CHARDP R 0.473)
(VARCHAR
(TOP C y)
(BOT C w)
(REP C x)
)
)
where you see the 0.68pt
height.