For any inherited characteristic, c, there is a procedure
inherited-c.
This procedure shall be used only in the evaluation of
an expression specifying a value for a characteristic.
The procedure returns the result of evaluating
the expression that specifies c for the flow parent of
the specification flow object; this expression is evaluated
with the value flow object unchanged and with the specification
flow object equal to the flow parent of the current specification flow
object.
If the current specification flow object has no flow parent
because it occurs as a characteristic value
of some flow object, then that flow object shall be treated
as the flow parent for this purpose.
If the current specification flow object has no flow parent
because it is used in a generate-specification
or a decoration-specification,
then the page-sequence or column-set-sequence flow object
that is using the page-model or column-set-model in
which that generate-specification or decoration-specification
occurs shall be treated as the flow parent for this purpose.
Otherwise, if the current specification flow object has no flow parent
then inherited-c returns the result of
evaluating the expression specifying the initial value of c;
there is no specification flow object during the
evaluation of this specification, and it shall be an error
if it calls inherited-c for any inherited characteristic
c.
The procedure inherited-c behaves differently when:
| • the flow parent of the specification flow object is a table or a table-part; |
| • the value flow object is a table-cell of that table or table-part
or is in a table-cell of that table or table-part; and |
| • the table or table-part contains a table-column flow object
that specifies c and has the same column number
as that table-cell. |
In this case, inherited-c shall return the result of
evaluating the specification of c in the table-column; this
expression shall be evaluated with the value flow object unchanged and
with the specification flow object equal to the table flow object.
(actual-c)
For each inherited characteristic c, actual-c shall
return the value of c for the value flow object.
This procedure shall be used only in the evaluation of
an expression specifying a value for a characteristic.
It shall be an error to
call actual-c with a value flow object of f in the
course of determining the value of c for f. Use of this
procedure requires the actual-characteristic feature.
(char-script-case string1 obj1 stringn-1 objn-1 objn)
This procedure shall be used only in the evaluation of an expression
specifying a value for an inherited characteristic. There shall be an
odd number of arguments. All arguments other than the last shall be
interpreted as a series of pairs, where the first member of the pair
is a string specifying a public identifier, and the second member is
any object. If the value flow object is not a character flow object
or is a character flow object that has a script property
that is not #f, then char-script-case shall return its last
argument.
Otherwise, the value of the script characteristic shall be compared in
turn against the first member of each argument pair; if it matches, then
the second member shall be returned; if there is no match, then the last
argument shall be returned.
| For example, in formatting Japanese text, it is common to use
different fonts for the Katakana, Han, and Latin portions of the
text. |
|
[182] application-characteristic-declaration = (declare-characteristic identifier string expression
)
This declares identifier to be an additional inherited
characteristic. It also has the effect of declaring procedures
inherited-identifier
and actual-identifier.
The string is a public identifier specifying the semantics of the
characteristic. If an implementation does not recognize the specified
public identifier, it shall ignore uses of the characteristic.
The expression is the specification of the initial value of
the characteristic.
[183] application-char-characteristic+property-declaration = (declare-char-characteristic+property identifier string
expression)
This declares identifier to be an additional non-inherited
characteristic of a character flow object and also declares
identifier to be an additional character property. The
string shall be a public identifier specifying the semantics of the
characteristic. The default value of the characteristic is the value
of the identifier property of the character that is the value of
the char: characteristic of the flow object. The default value
of the property is the value of expression. This expression
shall be
evaluated normally; it shall not be evaluated in the special way that
the values of characteristics are evaluated, nor shall it be evaluated
with respect to a current node.
[184] initial-value-declaration = (declare-initial-value identifier expression)
This declares the initial value of the inherited characteristic
identifier to be an expression.
This shall not be used for characteristics declared
with an application-characteristic-declaration.