Fonts are so much related to the user's language.
If you specify the font size and type hardcoded in your source codes,
you have to do that for every language.
It's no good for maintaining and keeping application quality.
The next example is Windows MFC font creation,
which only can handle the Japanese fonts.
myFont.CreatePointFont(8*10, _T("MS ゴシック"));
To cover the all language fonts effectively,
you need to specify the each font setting (size and type) in each resource files
and read them dynamically according to user language settings.
The next example is reading font size and type from Windows resource files,
generated by World Wide Navi string externalization.
myFont.CreatePointFont(atoi(wwnaviGetString(IDS_MSG_WWNAVI1068))*10, wwnaviGetString(IDS_MSG_WWNAVI1069));
...
Japanese resource file (wwnavi_string.ja.rc)
IDS_MSG_WWNAVI1068 "8"
IDS_MSG_WWNAVI1069 "MS ゴシック"
...
To decide which language should be used, you need also learn each language features.
For example, if you want to set English font compatible with Japanese one,
one of best ways is using "Verdana" font.
Font creation is various in each programming languages (C/C++, Java, C#...),
but the concept is the same, "non-hardcoded and configurable in resources".