<TextFlow <TFTag `A'> <TFAutoConnect Yes> <Notes > # end of Notes <Para <Unique 998197> <PgfTag `Body'> <ParaLine <TextRectID 19> <String `This is the first paragraph. '> <Font <FTag `Emphasis'> <FLocked No> > # end of Font <String `Character formatting begins here and spans to the next paragraph.'> > # end of ParaLine > # end of Para <Para <Unique 998199> <PgfTag `Body'> <ParaLine <Font <FTag `Emphasis'> <FLocked No> > # end of Font <String `This is the second paragraph. Character formatting ends here.'> <Font <FTag `'> <FLocked No> > # end of Font <String ` However, the paragraph continues.'> > # end of ParaLine > # end of Para > # end of TextFlowIt would help you to see exactly what type of character formatting is actually used. Here is approximately what it looks like when opened in FrameMaker: This is the first paragraph. Character formatting begins here and spans to the next paragraph. This is the second paragraph. Character formatting ends here. However, the paragraph continues. Notice that the FrameMaker code marks each paragraph as a "String". If you look just above the line <String `Character formatting begins here and spans to the next paragraph.'> you will notice that there is a definition of a font. That font is called "Emphasis". If you look just above the line that starts "<String `This is the second paragraph," you will see the same font. However, if you look at the other two lines containing a "String," the font just above it is nameless. You can also remark one additional detail: that FrameMaker does not specifically say at what point each character format ends. From these observations, you can see that FrameMaker format of each string by preceding it with the definition of a font. This is different from HTML which uses a tag at the start and end of each group of words it wants to format. Although you, the user, may select a large block of text with your mouse, spanning multiple paragraphs, and then hit "bold," FrameMaker treats each paragraph separately. This is a precise way to avoid confusion between paragraph and character formats, a confusion which often seems to crop up in Word. The Word 97 file format specification is here. Scroll to the section called "Character and Paragraph Formatting Properties" and compare how much more complicated is Word's approach to this problem. Since Word is so internally complex, it is often unpredictable. For example, you'll select some text and want to mark it "bold" and the heading on the next page will also become bold, or something like that. This is what frustrates so many Word users and actually makes purists rant and rave against the software. The FrameMaker code given above, on the other hand, gives you an example of predictability, where unambiguous code uniquely specifies each morsel of information. There are many computer scientists and businessmen who would like to see everything specified so clearly. The resulting utopia would be remarkably efficient. Specification, however, is not likely to catch up to originality, and utopia is not likely to happen.
October 09, 2001
Watch how FrameMaker stores specially-formatted text. There are two types of formats in most word processors: paragraph styles and character styles. Word processors face a problem when storing characters that have both a paragraph style (say "heading" or "normal") and a character style (say "bold"). The following example is a piece of a FrameMaker file which shows clearly how the word processor marks each piece of text. The segment includes one entire "text flow;" however, the only part which interests us is around the line <String `Character formatting begins here and spans to the next paragraph.'>