It works in pixels, so if your font size is 20 and you set the line width to be 200, it will be exactly 10 characters long when adding the widest possible character such as "@" (which would be 20x20)
Bingo. This is where I was misunderstanding the linewidth. It is indeed in character pixels and not screen pixels. Thanks for that!
So if: OrthographicSize = 100
and my display rez = 1024x768
(Note: CalculatedPrintedSize is a constant and does not change with orthosize or scale)
and font size in pixels (at orthosize of 1) = CalculatedPrintedSize("@") * label.localScale = 20 (font with all characters identical width)
font size in camera pixels = 20 / orthosize = 0.2;
then:200 world coordinate units shown in the game view vertically (because OrthoSize 100)
267 world coordinate units shown in the game view horizontally (aspect of 3:4)
1 world coordinate unit vert = 768 pixels / 200 units = 3.84 pixels / unit (approx)
1 world coordinate unit horz = 1024 pixels / 267 units = 3.84 pixels / unit (approx)
Therefore: 1 character, size in world coords = 20 (font size) * 0.5 (scale) / 3.84 pixels =
2.6 units I should now have a method to size my labels based on available information.
I will confirm my calculations and methods when I am able...
Unfortunately I added NGUI to my project after a significant amount of work and changing orthosize based on screen aspect/rez is part of that, so OrthoSize = 1 is a last, last resort.