Quote: "My big question is WHY would one PC by default have a completely different text width and height then all others?"
This goes back to setting the font directly and using a character set. Since various machines can be set up to use ANSI or UNICODE, calling the character set may be necessary for DBC to determine how to display and size your fonts.
Any computer running a windows operating system can have default fonts set for various purposes: menus, titles, even a default font and font size for the shell UI. There's a startup file, I'm not sure if it's still used or not for windows 7, called win.ini. There is a setting one can use to set the default system font under the windows section.
SystemFont=
Now, to complicate matters a little more, there is another file SYSTEM.ini that controls the VGA and fixed fonts for the system. It is likely that the settings here are what influence the default SYSTEM font in DBC - unless, it is over-ridden by the setting in WIN.INI.
In SYSTEM.INI, the fonts settings are in the boot section and the settings are:
oemfonts.fon=
fixedfon.fon=
fonts.fon=
Depending on the settings within these 2 ini files, the default font and I imagine the text size in DBC could vary from machine to machine - at least that is my suspicion.
However, if we call the font ourselves and use a character set flag, then we are forcing DBC to use the font of our choosing. If the font name identified when calling SET TEXT FONT "name",1 is a windows standard, then we can expect that the font will be sized consisently from machine to machine. If the font only exists on the machine where the source code was written, then the other machines will default to their system font which, as you have seen, can give unpredictable results without knowing the defaults of the other machines.
Quote: "And with the info you have provided, what is the easiest and best way to code my program now so that it makes sure every PC text sizes are equal width and height so that it looks the same on any isolated PC like this one? Again, the only reason I tried putting text with() and text height() checks was to discover why this PC looked so different from all the others. "
Since DBC uses DirectX 7 as it's API, everything you see displayed is rendered (drawn) to a direct draw surface (DDS). So, when you ask for text to be displayed, it uses the graphics control of Windows called GDI, to create the text of the appropriate size using the font system of windows. This is then rendered to a DDS then copied (blitted) to the main display screen. Therefore, to manage the updates and refreshes yourself, it's good to set a sync rate and call sync yourself. Otherwise, DBC manages when to sync and it might not do things exactly when you want.
When you use the Print statement, DBC just uses the default system font for everything. You can't change the size, you can't change the font.
When you use
text or
center text, you are forcing DBC to render the font with whatever information it has last saved regarding the text size and the font type. If you haven't set one or the other, then DBC will use whatever it gleaned from the default.
So, in theory, to make sure your text is always the same on each computer, set a sync rate, set your font type, set your font size then call SYNC. And always use the Windows basic font set so you know everyone has the same fonts. If there is a non standard font you want to use for your game then you would have to have a method of installing that font on other machines.
You only have to call a sync when you are changing these attributes (set text font; set text size). You can of course wait for the sync in your main loop if you position (time) you code properly - but you generally wouldn't want to waste any clock cycles by constantly changing or resetting your fonts so it's usually good to only call the font changes when you need them.
Another way of manging your font type and size and have them consistent on each machine is to use bitmaps. Create you text on bitmaps and either display them as pasted images, sprites, or textured on 3d objects. Include these images as media with your program.
Enjoy your day.