Many typfaces come with different fonts for different font sizes. For example Surveyor Pro has a Book style for main text and a Display style for headings (or in general, large text). Another example is the open source project XITS which if scaled down to smaller text needs kerning pair adjustments (which result in a different font).
In these cases one could redefine the \Huge or \footnotesize environment and use the fontspec package to associate different fonts with those commands. This however is a rather hacky way and could lead to more problems. So hence my question.
Is there a simple way to manually change font with font size in XeTeX?
EDIT: I should point out that fontspec recognises optical scaling and would therefore automatically pick a different font for a different size if available. There are a lot of SizeFeatures too (as described in the fontspec manual) such as changing colour, kerning values et cetera. Is it possible though to change font? For example:
\setmainfont{Typeface}[SizeFeatures = {{Size = -8, <Font_A>},
{Size = 8-12, <Font_B>},
{Size = 12- , <Font_C>}}]
For the argument's sake Font_A should be Garamond and Font_B should be Times New Roman and Font_C can be Surveyor Pro Display.
fontspec
mechanism is about optical sizes of what the designer regards as the same font rather than actually changing font. (Semantically, the font size commands are only supposed to change the size, so that's not an unreasonable position.)