The default font for components in XE8 (and previous versions) is Segoe UI. This is the default font on Windows since Vista. According to Wikipedia, the font is an update to Arial to make fonts more readable in the smaller graphic systems ion use today (Phones, tablets,...).

I looked up the default fonts for iOS8 and OSX. Segoe UI is not in the list. Apple uses Helvetica Neue, a licensed font that is not typically available on other systems. As Helvetica is a licensed product and not a free font, Microsoft does not include it in its distributions.

Segoe UI is also not available as a default installed font on other non-microsoft systems. So the question becomes what font to use that is universally available. Another issue is some fonts that are universally available are ugly.

A little research into various operating systems results in the following fonts that are universally available on all platforms.

ArialTimes New RomanCourier New

What is interesting is that Times New Roman was designed in 1935. Arial is by far the most used font in the world.

So my question is, how do I set Arial to be the Default font for all components in XE8 so I do not have to keep setting it in every component manually? The XE8 help system has exactly two pages regarding fonts, which in true Embarcadero fashion does not give any useful information. And I cannot find a setting in the options menu for changing it.

If you see the other thread about the help file, that reg file i posted will set the default font to tahoma which is what its always been up til XE8 (at least on my pc`s it has been). You can edit the reg file and change it to whatever font you like.

I saw that post and used it. Also changed the font first to Segoe UI then to Arial. I am not referring to the fonts in the UI but the fonts used by various components. For example, a TLabel. If you look at its properties the font for the label text is shown as default. Playing around with selecting different fonts, the default is Segoe UI. Regardless of what I set the registry value for the UI font, the default seems to always be Segoe UI.

While I have no issue with the look of Segoe UI, my issue is portability to other systems.

So I guess a follow up question is:

If I select some font for, say a TLabel, and then build for OSX or Android, or .... and that font is not on the users system when they install my program, will that font be automatically installed?

From what I read, Android allows embedded fonts, OSX and iOS do not. Segoe UI is not on either of those platforms, it is a Microsoft font. My thinking is that since Arial, Times New Roman, and Courier New are available on all these systems, it seems prudent to use those.

I had problems in the past with programs getting installed on someones system who did not have the font I chose to use. Substituting a similar font might work, but often causes some alignment issues. I routinely type in dummy text when sizing something like a TLabel, expand it to its needed width, then add a couple extra grid clicks to allow room for minor variations. But if the substitution font is significantly different in spacing (such as that awful Verdana) then problems occur.

Segoe UI is a font that can be installed on a target system, but do I have to create a separate installer operation to first check if it exists, then install it if it is not installed? that would also require making installers for each platform. ugh.

How do you handle fonts that may not be installed on the target system? If a program is intended for a single platform, such as Windows or OSX, choosing of fonts is simpler. But today's applications have to handle all variations of hardware, operating systems, display sizes and resolutions. A royal pain in the arse in my opinion.

Something I do not like that Embarcadero does is if a property is set to a default value, it just shows default, not what that default is. Figuring out what that default is requires guessing by setting other values. That leads to some nasty bugs when something changes and that default value changes. I want to choose something and have it be that. I do not know what the default is on the other platforms, which is my whole point. If I want a specific font, I want that font. Not that font on a master view, but have it change in every view requiring going through a very large program to find every instance and fix it.

Which is my point. I like full control over my programs. If I want to give my user the option to select a preferred font then I will do so. But I choose fonts based on many factors, from esthetic to technical reasons. The customer is rarely right. Unless they did actual comparative studies, combined with years of diversified experience, then they do not know what they want until I give it to them. The sheep mentality that everyone should do something someway because everyone does something someway because somebody did something someway is wrong.

And note that I said Diversified experience. Most of the kids programming today have only worked on one or two platforms, mostly concerned with being liked. A whole other world exists that these kids are clueless to its existence.

Look at the Firemonkey platform. How many ways to pick a color and make cute 3d effects, yet they lack core functionality like being able to set the color of a word in a TMemo.

ugh, in rant mode today. Just getting real annoyed at the uphill battle over issues that should not be issues. Seems like technology is taking many steps backwards. Seems people want the computer and somebody else to do their thinking for them, and too worried about trends than functionality.

I can go on for many more thousands of words on this topic, but I have to get some work done.