I have taken a look at the way this question is dealt with in LaTeX (TeX does not have the notion of font families, LaTeX does). Here the question what to use for small caps font is deferred to the font setup. The font definition tables must define a small caps font. If they do not do so, a fallback font is used; this should also be defined in the fd tables. If they fail to do that as well, the system uses its fallback font.
Like FOP's layout, LaTeX only uses the font metrics. The renderer
should locate the actual font. If such a font does not exist, but must
be emulated, then this should indicated in the font system
configuration for the renderers. For example, the fonts map for dvips
has these lines, which I believe tell it how to generate a small caps
font: pplr8rn Palatino-Roman ".82 ExtendFont TeXBase1Encoding ReEncodeFont" <8r.enc
Correct me if I'm wrong here, but doesn't TeX have a full font system of it's own? Doesn't TeX guarantee to produce .dvi (device independent, I think) files? I assume it does this based on its own fonts and any METAFONT data. The matching of this .dvi to actual output is then the job of a dvi->? renderer. That is, there is a translation step between the dvi and the native input of the renderer, e.g. PDF, PS, H-P printer or X11.
What's the intention for the FOP font system? Is FOP going to define a set of fonts and font metrics in its User Agent font database (as per CSS2)? Will this be defined with reference to the supported renderers (statically), the supported renderers and the fonts available on the system on which FOP is running (statically + dynamically), or by some other means. XSL-FO does not, AFAIT, expect the User Agent to support the degree of font matching specified in CSS2, even though the font model is based on CSS2. E.g. there is no capacity to specify a download "src" property. Users can't specify font characteristics to the same degree as in CSS2.
I have always assumed that rendering consistency was not guaranteed by XSL-FO. I can't find any reference ATM to justify that.
So my basic belief is that FOP should not know anything about this. It should all be configured in the font system. That is how the user imposes his choice of fonts.
If a user renders a given .fo file on two different systems, using the same renderer (say, PDF), and specifies a font family (say, Baskerville) that does not exist on the first system, but does on the second, what result should be expected?
Peter -- Peter B. West <http://www.powerup.com.au/~pbwest/resume.html>