The trees in FOP
Overview The FO document. Each XML document and therefore also an FO document has a hierarchical structure that can be modeled as a tree. The FO DOM tree. This tree has the same hierarchical structure as an FO document, and is often built from an XML document. FOP can work from either an FO document or an FO DOM tree. FOP does not build a DOM tree from an FO document. The FO tree. FOP builds this tree from either the FO document or the FO DOM tree. The FO nodes in this tree correspond to the elements in the FO document or the XML nodes in the FO DOM tree. Note, however, that they are different from DOM tree nodes. When a sufficient part of the FO tree has been built (in current FOP the subtree of a PageSequence FO node), the layout process is started. This process builds three trees. The LM tree. This tree corresponds closely to the FO tree because each FO node creates a layout manager. But there are deviations. For example, a BlockLayoutManager creates a LineLayoutManager for each consecutive sequence of child FO nodes that generate inline areas. The BP tree. Each layout manager returns zero or more BreakPoss to its parent. These BreakPoss are connected to BreakPoss that the layout manager received from its child layout managers. This is not a real tree. There are many BP without a parent BP. They are connected to their siblings by their LM. The Area tree. Using the information stored in the BP tree and in the LMs connected with the BPs, layout areas are constructed. These areas are placed within other areas, which is expressed in a tree hierarchy.
The tree of BreakPoss Each LM contains a list of BPs belonging to and returned to it by the childLMs during the getNextBreakPoss stack. These are the BPs that end an area of the childLM. The BP contains an index position.iLeafPos, which connects it to the BP with that index in the list of BPs of its own LM (the childLM). For example, BlockLM's list childBreaks contains the BPs that end a line (if the childLM is a LineLM). LineLM's list vecInlineBreaks contains the BPs that were returned to it as possible linebreaks by TextLM (if the childLM is a TextLM). TextLM's list vecAreaInfo contains AreaInfo objects. A BP in BlockLM's list childBreaks belongs e.g. to a LineLM. Its index position.iLeafPos points to the BP with that index in vecInlineBreaks in ListLM. That BP belongs e.g. to a TextLM, and its index position.iLeafPos points to the AreaInfo object with that index in vecAreaInfo in TextLM. +-----------------+ LM | bp0 bp1 bp2 bp3 | +-++--++--++--++--+ .......................:|..:| :| :| : +----------+ | :| :| : | +----------+ :| :+----------------------+ : | | ........:| :....... | : | | : | : | : +----------+---+--+ : +------+------+ : +--------------+------+ LM | bp0 bp1 bp2 bp3 | LM | bp0 bp1 bp2 | LM | bp0 bp1 bp2 bp3 bp4 | +-----------------+ +-------------+ +---------------------+ The BPs are held in a list by the LM shown in front of them. They are associated with one of the childLMs, which is shown by the dotted lines. Their member position.iLeafPos connects them with the BP in their LM's list with that index, as shown by the dashed lines.
Example of an FO and area tree
The FO file Test FO ]]>
The corresponding FO tree In the listing below the notation has been shortened; .[n] denotes the nth child, for which the full notation is .children.elementData[n] . A number of static members are not shown. The root: root = "fo:root at line 2:44" root = { layoutMasterSet: instance of org.apache.fop.fo.pagination.LayoutMasterSet(id=1089) pageSequences: instance of java.util.ArrayList(id=1102) runningPageNumberCounter: 0 foTreeControl: instance of org.apache.fop.apps.Document(id=1103) org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1104) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1105) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1106) org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 2 org.apache.fop.fo.FObj.column: 44 org.apache.fop.fo.FONode.parent: null org.apache.fop.fo.FONode.name: "fo:root" } The root has no properties; the namespace nodes do not result in properties: root.propertyList = "{}" The root has two children: root.children = "[ fo:layout-master-set at line 3:25 fo:page-sequence at line 12:49 ]" The first child of root is the layout master set: root.[0] = "fo:layout-master-set at line 3:25" root.[0] = { simplePageMasters: instance of java.util.HashMap(id=1111) pageSequenceMasters: instance of java.util.HashMap(id=1112) org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1113) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1114) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1115) org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 3 org.apache.fop.fo.FObj.column: 25 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.Root(id=1088) org.apache.fop.fo.FONode.name: "fo:layout-master-set" } root.[0].propertyList = "{}" The layout master set contains a simple page master: root.[0].children = "[ fo:simple-page-master at line 8:28 ]" root.[0].[0] = "fo:simple-page-master at line 8:28" root.[0].[0] = { regions: instance of java.util.HashMap(id=1120) masterName: "simpleA4" org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1122) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1123) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: null org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 8 org.apache.fop.fo.FObj.column: 28 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.LayoutMasterSet(id=1089) org.apache.fop.fo.FONode.name: "fo:simple-page-master" } The properties of the simple page master: root.[0].[0].propertyList = "{ master-name=org.apache.fop.fo.StringProperty@1958bf9 margin-top=org.apache.fop.fo.LengthProperty@118958e margin-right=org.apache.fop.fo.LengthProperty@102b2b6 margin-bottom=org.apache.fop.fo.LengthProperty@22d166 margin-left=org.apache.fop.fo.LengthProperty@1e1962d page-width=org.apache.fop.fo.LengthProperty@14a75bb page-height=org.apache.fop.fo.LengthProperty@17779e3 }" root.[0].[0].propertyList.get("master-name") = { str: "simpleA4" org.apache.fop.fo.Property.specVal: null } root.[0].[0].propertyList.get("page-height") = { length: instance of org.apache.fop.datatypes.FixedLength(id=1329) org.apache.fop.fo.Property.specVal: null } root.[0].[0].propertyList.get("page-height").length = "841889mpt" The simple page master has only one region, the body: root.[0].[0].regions = "{body=fo:region-body at line 9:24}" The region body: root.[0].[0].regions.get("body") = "fo:region-body at line 9:24" root.[0].[0].regions.get("body") = { backgroundColor: null org.apache.fop.fo.pagination.Region.layoutMaster: instance of org.apache.fop.fo.pagination.SimplePageMaster(id=1082) org.apache.fop.fo.pagination.Region.regionName: "xsl-region-body" org.apache.fop.fo.pagination.Region.overflow: 8 org.apache.fop.fo.pagination.Region.wm: 49 org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1344) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1345) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: null org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 9 org.apache.fop.fo.FObj.column: 24 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.SimplePageMaster(id=1082) org.apache.fop.fo.FONode.name: "fo:region-body" } root.[0].[0].regions.get("body").propertyList = "{}" The second child of root is the page sequence: root.[1] = "fo:page-sequence at line 12:49" root.[1] = { root: instance of org.apache.fop.fo.pagination.Root(id=1088) layoutMasterSet: instance of org.apache.fop.fo.pagination.LayoutMasterSet(id=1089) flowMap: instance of java.util.HashMap(id=1090) sequenceStarted: true ipnValue: "auto" currentPageNumber: 1 explicitFirstNumber: 0 firstPageNumber: 1 pageNumberGenerator: instance of org.apache.fop.fo.pagination.PageNumberGenerator(id=1074) forcePageCount: 8 pageCount: 0 isForcing: false pageNumberType: 1 thisIsFirstPage: true simplePageMaster: instance of org.apache.fop.fo.pagination.SimplePageMaster(id=1082) pageSequenceMaster: null mainFlow: instance of org.apache.fop.fo.pagination.Flow(id=1092) titleFO: null org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1096) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1097) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1098) org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 12 org.apache.fop.fo.FObj.column: 49 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.Root(id=1088) org.apache.fop.fo.FONode.name: "fo:page-sequence" } The page-sequence has one property, the reference to the page master: root.[1].propertyList = "{ master-reference=org.apache.fop.fo.StringProperty@104e28b }" root.[1].propertyList.get("master-reference") = { str: "simpleA4" org.apache.fop.fo.Property.specVal: null } The page-sequence has one child, the flow: root.[1].children = "[ fo:flow at line 13:42 ]" root.[1].[0] = "fo:flow at line 13:42" root.[1].[0] = { pageSequence: instance of org.apache.fop.fo.pagination.PageSequence(id=1081) markerSnapshot: null flowName: "xsl-region-body" contentWidth: 0 org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1367) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1368) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1369) org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 13 org.apache.fop.fo.FObj.column: 42 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.PageSequence(id=1081) org.apache.fop.fo.FONode.name: "fo:flow" } The flow has one property, the flow name: root.[1].[0].propertyList = "{ flow-name=org.apache.fop.fo.StringProperty@6458a6 }" root.[1].[0].propertyList.get("flow-name") = { str: "xsl-region-body" org.apache.fop.fo.Property.specVal: null } The flow has one child, a block: root.children.elementData[1].children.elementData[0].children = "[ fo:block at line 15:28 ]" root.[1].[0].[0] = "fo:block at line 15:28" root.[1].[0].[0] = { align: 0 alignLast: 0 breakAfter: 0 lineHeight: 0 startIndent: 0 endIndent: 0 spaceBefore: 0 spaceAfter: 0 textIndent: 0 keepWithNext: 0 backgroundColor: null blockWidows: 0 blockOrphans: 0 id: null span: 59 wsTreatment: 41 lfTreatment: 98 bWScollapse: true anythingLaidOut: false firstInlineChild: null org.apache.fop.fo.FObjMixed.textInfo: instance of org.apache.fop.fo.TextInfo(id=1377) org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1378) org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1379) org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1380) org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 15 org.apache.fop.fo.FObj.column: 28 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.Flow(id=1092) org.apache.fop.fo.FONode.name: "fo:block" } root.[1].[0].[0].propertyList = "{ font-size=org.apache.fop.fo.LengthProperty@ae4646 font-weight=org.apache.fop.fo.StringProperty@187b287 space-after=org.apache.fop.fo.SpaceProperty@1d9e2c7 }" The block has two children: root.[1].[0].[0].children = "[ fo:text at line 15:35 fo:text at line 16:7 ]" root.[1].[0].[0].[0] = "fo:text at line 15:35" root.[1].[0].[0].[0] = { ca: instance of char[7] (id=1386) start: 0 length: 7 textInfo: instance of org.apache.fop.fo.TextInfo(id=1377) lastFOTextProcessed: instance of org.apache.fop.fo.FOText(id=1387) prevFOTextThisBlock: null nextFOTextThisBlock: instance of org.apache.fop.fo.FOText(id=1387) ancestorBlock: instance of org.apache.fop.fo.flow.Block(id=1375) org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: null org.apache.fop.fo.FObj.propMgr: null org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: null org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 15 org.apache.fop.fo.FObj.column: 35 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.flow.Block(id=1375) org.apache.fop.fo.FONode.name: "fo:text" } This text node contains the text "Test FO": root.[1].[0].[0].[0].ca = { T, e, s, t, , F, O } root.[1].[0].[0].[1] = "fo:text at line 16:7" root.[1].[0].[0].[1] = { ca: instance of char[1] (id=1390) start: 0 length: 1 textInfo: instance of org.apache.fop.fo.TextInfo(id=1377) lastFOTextProcessed: instance of org.apache.fop.fo.FOText(id=1387) prevFOTextThisBlock: instance of org.apache.fop.fo.FOText(id=1384) nextFOTextThisBlock: null ancestorBlock: instance of org.apache.fop.fo.flow.Block(id=1375) org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094) org.apache.fop.fo.FObj.propertyList: null org.apache.fop.fo.FObj.propMgr: null org.apache.fop.fo.FObj.id: null org.apache.fop.fo.FObj.children: null org.apache.fop.fo.FObj.markers: null org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file" org.apache.fop.fo.FObj.line: 16 org.apache.fop.fo.FObj.column: 7 org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.flow.Block(id=1375) org.apache.fop.fo.FONode.name: "fo:text" } This text node contains the text "\n": root.[1].[0].[0].[1].ca = { }
The corresponding area tree PageViewport has a Page page and a Rectangle2D viewArea (reference/viewport pair). Page has five RegionViewports. RegionViewport has a RegionReference region and a Rectangle2D viewArea (reference/viewport pair). BodyRegion has a MainReference mainReference, a BeforeFloat beforeFloat, and a Footnote footnote. MainReference has a list of Spans. Span has a list of Flows. Flow has a list of Blocks. Block has a list of Blocks or LineAreas. LineArea has a list of InlineAreas. Text Area (subclass of InlineArea) has text. The structure of the area tree is as follows: PageViewport | +-Page | +-RegionViewport | +-BodyRegion | +-MainReference | | | +-Span | | | | | +-Flow | | | +-Span | | | | | +-Flow | | | | | +-Block | | | | | | | +-LineArea | | | | | | | +-TextArea | | | | | +-Block | | | +-Span | | | | | +-Flow | | | +-Span | | | | | +-Flow | | | +-Span | | | +-Flow | +blocks | +CTM In the listing below members of an arraylist are indicated by [n], which stands for get(n). If the arraylist is called children, the word children has been omitted, so that [n] then stands for children.get(n). Type: org.apache.fop.area.PageViewport: curPage = "PageViewport: page=1" curPage = { page: instance of org.apache.fop.area.Page(id=1394) viewArea: instance of java.awt.Rectangle(id=1395) clip: false pageNumber: "1" idReferences: null unresolved: null pendingResolved: null markerFirstStart: null markerLastStart: null markerFirstAny: null markerLastEnd: null markerLastAny: null } Type: org.apache.fop.area.Page: curPage.page = { regionBefore: null regionStart: null regionBody: instance of org.apache.fop.area.RegionViewport(id=1397) regionEnd: null regionAfter: null unresolved: null } Type: org.apache.fop.area.RegionViewport: curPage.page.regionBody = { region: instance of org.apache.fop.area.BodyRegion(id=1077) viewArea: instance of java.awt.Rectangle(id=1399) clip: false org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 0 org.apache.fop.area.Area.props: null } Type: org.apache.fop.area.BodyRegion: curPage.page.regionBody.region = { beforeFloat: null mainReference: instance of org.apache.fop.area.MainReference(id=1401) footnote: null columnGap: 18000 columnCount: 1 refIPD: 0 org.apache.fop.area.RegionReference.regionClass: 2 org.apache.fop.area.RegionReference.ctm: instance of org.apache.fop.area.CTM(id=1402) org.apache.fop.area.RegionReference.blocks: instance of java.util.ArrayList(id=1403) org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 0 org.apache.fop.area.Area.props: null } Type: org.apache.fop.area.MainReference: curPage.page.regionBody.region.mainReference = { spanAreas: instance of java.util.ArrayList(id=1405) columnGap: 0 width: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 0 org.apache.fop.area.Area.props: null } The main reference contains five span areas. Four are empty. Number 1 contains the text of this page. curPage.page.regionBody.region.mainReference.spanAreas = "[ org.apache.fop.area.Span@53c3f5 org.apache.fop.area.Span@101ac93 org.apache.fop.area.Span@125d61e org.apache.fop.area.Span@155d3a3 org.apache.fop.area.Span@718242 ]" Type: org.apache.fop.area.Span: curPage.page.regionBody.region.mainReference.spanAreas[0] = { flowAreas: instance of java.util.ArrayList(id=1409) height: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[0].flowAreas = "[ org.apache.fop.area.Flow@e33e18 ]" Type: org.apache.fop.area.Flow: curPage.page.regionBody.region.mainReference.spanAreas[0].flowAreas[0] = { stacking: 2 width: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 0 org.apache.fop.area.BlockParent.height: 0 org.apache.fop.area.BlockParent.children: null org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } Type: org.apache.fop.area.Span: curPage.page.regionBody.region.mainReference.spanAreas[1] = { flowAreas: instance of java.util.ArrayList(id=1412) height: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[0].flowAreas = "[ org.apache.fop.area.Flow@e33e18 ]" Type: org.apache.fop.area.Flow: curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0] = { stacking: 2 width: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 0 org.apache.fop.area.BlockParent.height: 0 org.apache.fop.area.BlockParent.children: instance of java.util.ArrayList(id=1416) org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].children = "[ org.apache.fop.area.Block@61f533 org.apache.fop.area.Block@12922f6 ]" Type: org.apache.fop.area.Block: curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0] = { stacking: 2 positioning: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 481891 org.apache.fop.area.BlockParent.height: 19200 org.apache.fop.area.BlockParent.children: instance of java.util.ArrayList(id=1419) org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].children = "[ org.apache.fop.area.LineArea@9f0d ]" Type: org.apache.fop.area.LineArea: curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0] = { stacking: 0 startIndent: 0 length: 0 lineHeight: 19200 baseLine: 0 inlineAreas: instance of java.util.ArrayList(id=1422) org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 0 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0].inlineAreas = "[ org.apache.fop.area.inline.TextArea@21d23b ]" Type: org.apache.fop.area.inline.TextArea: curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0].inlineAreas[0] = { text: "Test FO" iTSadjust: 0 org.apache.fop.area.inline.InlineArea.height: 14800 org.apache.fop.area.inline.InlineArea.contentIPD: 59568 org.apache.fop.area.inline.InlineArea.verticalPosition: 13688 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 0 org.apache.fop.area.Area.props: instance of java.util.HashMap(id=1426) } curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0].inlineAreas[0].props = "{ 4=16000 3=F3 7=#000000 }" 3 org.apache.fop.area.Trait.FONT_NAME 4 org.apache.fop.area.Trait.FONT_SIZE 7 org.apache.fop.area.Trait.COLOR Type: org.apache.fop.area.Block: curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[1] = { stacking: 2 positioning: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 0 org.apache.fop.area.BlockParent.height: 14173 org.apache.fop.area.BlockParent.children: null org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 0 org.apache.fop.area.Area.props: null } Type: org.apache.fop.area.Span: curPage.page.regionBody.region.mainReference.spanAreas[2] = { flowAreas: instance of java.util.ArrayList(id=1429) height: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[2].flowAreas = "[ org.apache.fop.area.Flow@c72243 ]" Type: org.apache.fop.area.Flow: curPage.page.regionBody.region.mainReference.spanAreas[2].flowAreas[0] = { stacking: 2 width: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 0 org.apache.fop.area.BlockParent.height: 0 org.apache.fop.area.BlockParent.children: null org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } Type: org.apache.fop.area.Span: curPage.page.regionBody.region.mainReference.spanAreas[3] = { flowAreas: instance of java.util.ArrayList(id=1433) height: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[3].flowAreas = "[ org.apache.fop.area.Flow@dc9766 ]" Type: org.apache.fop.area.Flow: curPage.page.regionBody.region.mainReference.spanAreas[3].flowAreas[0] = { stacking: 2 width: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 0 org.apache.fop.area.BlockParent.height: 0 org.apache.fop.area.BlockParent.children: null org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } Type: org.apache.fop.area.Span: curPage.page.regionBody.region.mainReference.spanAreas[4] = { flowAreas: instance of java.util.ArrayList(id=1436) height: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.mainReference.spanAreas[4].flowAreas = "[ org.apache.fop.area.Flow@1ec58a ]" Type: org.apache.fop.area.Flow: curPage.page.regionBody.region.mainReference.spanAreas[4].flowAreas[0] = { stacking: 2 width: 0 org.apache.fop.area.BlockParent.xOffset: 0 org.apache.fop.area.BlockParent.yOffset: 0 org.apache.fop.area.BlockParent.width: 0 org.apache.fop.area.BlockParent.height: 0 org.apache.fop.area.BlockParent.children: null org.apache.fop.area.BlockParent.orientation: 0 org.apache.fop.area.Area.areaClass: 0 org.apache.fop.area.Area.ipd: 481891 org.apache.fop.area.Area.props: null } curPage.page.regionBody.region.blocks = "[]" Type: org.apache.fop.area.CTM: curPage.page.regionBody.region.ctm = { a: 1.0 b: 0.0 c: 0.0 d: 1.0 e: 56692.0 f: 56692.0 CTM_LRTB: instance of org.apache.fop.area.CTM(id=1439) CTM_RLTB: instance of org.apache.fop.area.CTM(id=1440) CTM_TBRL: instance of org.apache.fop.area.CTM(id=1441) }