An indent at the start of a paragraph is conventionally 1 em to 3 ems deep, where an em is as wide as the point size of the type.
When using indents, an alternative to explicitly setting the indent is to let the DSSSL engine derive it from the actual font size.
In the following example, the value of the font-size characteristic could be declared in the declaration for the para-style style object or it could be inherited, yet, without knowing how it was declared, the first line's start indent is always twice the font size since the (actual-font-size) procedure (and there's one for every inherited characteristic) returns the actual value of the font-size characteristic:
;; Indent 2 ems
(element PARA
(make paragraph
use: para-style
first-line-start-indent: (* 2 (actual-font-size))))
Note that typography books uniformly recommend against indenting the first line of the first paragraph of running text, particularly after a heading, but this is just an example, so we can get away with it. They also recommend against also inserting space between paragraphs if you indent the first line, so at least we got that part right.
In the following example, every line except the first is indented (or the first line has a hanging indent) that is equal to the line spacing. Again, we neither know nor care where the line-spacing characteristic was declared, since the actual value will always be supplied.
;; Hanging indent
(element ITEM
(make paragraph
use: para-style
start-indent: (+ (inherited-start-indent)
(actual-line-spacing))
first-line-start-indent: (- (actual-line-spacing))))
Note that it is an error to call an (actual-characteristic) procedure in the course of determining the value for characteristic.