Bertrand et al, It looks as though the principle of disentangling the FO and Area tree builds, with communication by a stream of FOEvents, would also be useful in this context.
Peter Bertrand Delacretaz wrote: > Hi Arved, > > >>What are your recommendations for someone to come up to speed with RTF? >> > > I'd recommend to stay away from it unless you really have to ;-) > Seriously, to someone accustomed to clear and well-defined specs, RTF is > somewhat messy, what it is really is a documented internal format, not a spec > that has been agreed upon by a carefully-selected comittee. > > The RTF spec that we use in jfor is (mostly) V1.5 from Microsoft, who since > moved on to 1.6 (at least), but apparently 1.5 is the most widely supported > spec. A google search shows it at http://www.dubois.ws/software/RTF, it might > be harder to find at Microsoft as it's not the latest. > > The rtflib package of jfor (available at www.jfor.org) encapsulates our > knowledge of RTF and is fairly simple and understandable, but it is still too > much element-oriented. > One important thing to realize (happened too late here) is that RTF is > more flow-based or stack-based than element-based: not everything that is > opened has to be closed, it's more like a flow with embedded attribute > changes. > > >>As I understand it, RTF is presented >>to a user-agent which does a fair amount of layout; higher-level structures >>are still present in the RTF. >> > > Right - but there are both structure and presentations codes, so an RTF > document could be both. > Jfor has a strong bend towards structure, as usually the user goal is to get > an editable RTF document, where as much of the original document structure > must be preserved for convenience. > Precise appearance usually comes second, as applying a new wordprocessor > style sheet can change a lot of it. > > RTF is both a presentation and a structure format, along with a moving target > due to the "spec" being expanded and rewritten with nearly every new version > of winword. > There are a many grey areas in the spec, meaning the only possible test is > opening the generated RTF in the desired wordprocessors (and often watching > it crash...). > > >><snip> >>This is not so different from MIF >> > Agreed. We are working with MIF for another project, and didn't choose FOP > for that because of lack of precise control over the MIF output. > > I tend to see these formats as: > -PDF for finished high-quality output ("presentation language"), layout 100% > done by FOP > > -MIF for semi-finished high-quality output ("typography language"), layout > done by Framemaker according to MIF instructions. > > -RTF for editable structure + presentation output ("wordprocessing > language"), layout done by wordprocessor. > > So I fully agree that MIF and RTF "renderers" share a lot in common - > they must be able to get as much information as possible about the original > document structure, and in my view do not need any layout computations. > > >>In a sense with RTF and MIF (and HTML for anyone who really desperately >>wants to see FO->HTML) we are talking about translators as opposed to >>formatters and renderers... >> > > yes - that's why I called jfor a "converter" instead of "formatter" > > Without knowing too much about FOP internals, I think a processing chain > along these lines might help: > > parsing if needed > -> SAX events > -> FO attributes processing (validation, inheritance) > -> StructureRenderer > > StructureRenderer is > EITHER Layout + PrintRenderer > OR StructureProcessor (RTF, MIF, etc.) > > What we need to find out is how much the existing FOP and these "structure > renderers" have in common. > > - Bertrand > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, email: [EMAIL PROTECTED] > > -- Peter B. West [EMAIL PROTECTED] http://powerup.com.au/~pbwest "Lord, to whom shall we go?" --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]