Thanks for the tip about the sales manager demo. I checked it out, and it uses the same technique that we have been using for quite some time now to swith the font in our entire application at runtime. The problem is that it does not work for the more complex controls. In the demo app it works fine, but if you use that technique with a control like RadScheduleView there is hardly any effect at all. This is because the font settings are nested so deep in the control templates that the only way to change them is to recompile all the controls templates, switching out the fonts. While that is possible, it will quickly become a nightmare when you guys decide to update the control with a new template. For each upgrade of RadControls we would have to completely rewrite our custom templates as well. I suspect the situation is the same with the other more elaborate controls like RadDiagram, RadGanttView, possibly RadGridView and RadTreeListView etc.
While I understand the reason you have for handling the fonts differently in the Metro/Windows8 theme, it came as a real surprise to us that they did not work the same as in the other themes. Also, as I understand it the use of Segoe as the primary font is a recommendation
by Microsoft, but not an absolute requirement. I found this article by Arturo Toledo which seems to confirm just that. Even though he is not currently employed by Microsoft, he used to be, and should know what he is talking about. The interesting bit is at the middle of the page.
Just as an example, I doubt that the Windows App Store people would reject an app targeted for children just for using Comic Sans, or some other "fun" font. Of course that does not apply to Silverlight applications, but the example is still relevant regarding the use of fonts in the Metro design guidelines.
I seriously think you should consider rewriting the Windows8 theme and make it possible to dynamically swap the fonts used. I realise that you use two, three, maybe four of the different Segoe variations, but surely it cannot be that tricky to bind the FontFamily properties to a static class, similar to MetroColors? If I then wanted to use Comic Sans for all of the variations I could just go ahead and set them all to the same font. A similar mechanism could be written to handle the font sizes.
My main concern with this is that we have a large array of customers, and they all have different needs. The application that we develop is an e-learning suite used by all sorts of organizations and schools. So far we have no customer requirements to adapt it for younger children, but if that need comes up and they want Comic Sans we would like to be able to accommodate that need, no matter how ugly a font Comic Sans is. A more probable example would be if a client wants to use a custom font to comply with their own internal design guidelines. We have actually had that request from a client but it was not a priority one requirement so we never pursued it then.
A couple of more questions:
1. In your last reply you refer to the former Metro theme as the "Modern" theme. But in the code it is called the Windows8 theme. Are these the same thing? I just want to make sure we are not missing anything.
2. You are saying that the Segoe fonts are embedded in the theme? It does not look like that to me. When I use JustDecompile to extract the templates it is FontFamily="Segoe UI" all over the place. Surely, if the fonts were embedded it would be something like FontFamily="Fonts/segoeuil.ttf#Segoe UI Light"?