Description
Our estimates for string lengths (default or monospace) are in an arbitrary unit, with a meaning close to “% of font size".
If we measure the actual width of a string rendered as MONOSPACE text (say with a font-size of 11px), we get a (constant) width of ~6.6 pixels per character. This is estimated by monospaceWidth to a value of 100. The ratio between a string's estimated width in arbitrary unit and measured width in pixels is then equal to 100/6.6 = 15.15.
For strings rendered as DEFAULT text, the ratio has a bit more variability, but it oscillates between 9.2 and 10.2, so around 9.6. This means that we can't compare the (estimated) widths of monospace with default text.
A more systematic approach would be to adjust the default value of 100 to something like 63, so that the two estimates match. This would be a slightly breaking change, but it would feel more consistent going forward. (We could then use monospaceWidth as is in #1722, instead of having to rescale it.)
https://observablehq.com/@observablehq/monospacewidth-vs-defaultwidth