2.8.10 Plcfbkf

A Plcfbkf is a PLC whose data elements are FBKF structures (4 bytes each). Each CP in the Plcfbkf that is not the last CP represents the character position of the start of a bookmark in a document part. For every Plcfbkf, there is a corresponding Plcfbkl. Each data element in the Plcfbkf is associated in a one-to-one correlation with a data element in that Plcfbkl, whose corresponding CP represents the character position of the end of the same bookmark.

The following constraints apply to CPs in all bookmark PLCs.

The last CP in a bookmark PLC MUST have a value that is one greater than the largest CP that a bookmark of the type associated with the PLC is allowed to have and MUST be ignored. Unless otherwise specified by a particular type of bookmark, bookmark PLCs can contain duplicate CPs because bookmarks can overlap. The CP defining the start of a bookmark MUST be less than or equal in value to the CP defining the limit of the bookmark. The range of text spanned by a bookmark’s (1) CPs MUST obey all constraints, excluding those concerning tables, upon valid selections defined in section 2.2.3. The following constraints reference entities defined in section 2.4.3 Overview of Tables. For bookmark types whose BKC.fCol MUST be 0, the following rule 1 MUST apply. Otherwise, the following rule 2 MUST apply:

  1. If the range of text spanned by a bookmark’s (1) CPs contains a table cell mark, then its start CP MUST be less than or equal to the CP of the beginning of the cell in question and its limit CP MUST either be one less than the CP of a cell mark in that table, one greater than the CP of a TTP mark in that table, or outside the table. If the range of text spanned by a bookmark’s (1) CPs contains a TTP mark in a table, then its start CP MUST be outside the table, or the first character of a row in the table. If the range of text spanned by a bookmark’s (1) CPs contains a TTP mark in a table, then its limit CP MUST be outside the table, or two less than the CP of a TTP mark in the table, or one greater than the CP of a TTP mark in the table.

  2. If the range of text spanned by a bookmark’s (1) CPs contains content from a cell in a table and content from outside that table, then it MUST contain only whole rows of the table containing that cell. If the range of text spanned by a bookmark’s (1) CPs contains a table cell mark or TTP mark, then it MUST NOT span partial rows of the table containing that cell or TTP.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

aCP (variable)

...

aFBKF (variable)

...

aCP (variable): An array of CPs, each indicating the start of a bookmark (1) in the document.

aFBKF (variable): An array of FBKFs (4 bytes each), each of which specifies additional information about the bookmark starting at the corresponding CP in aCP.