There does not seem to be a need to add the inherited value later; the property maker already has done so. See IndentPropertyMaker.compute(PropertyList). It uses propertyList.getInherited(baseMaker.propId).getNumeric()) to get the inherited value. Earlier FOP developers understood this part well.
I understand, but I think you're talking exclusively about the property resolution phase (right?) while I found that I need the computed value of the margin property (not only the explicit one as is currently the case) and the inherited start-indent for the layout manager code and to set traits correctly.
PropertyList().get(Constants.PR_START_INDENT) gets the computed value, that is, the value after property refinement. It is not the raw value stated in the FO file; FOP does not store that at all. FOP tries to do property refinement immediately. If that is not possible because the computed value depends on a trait of an area, FOP stores an expression, which can be computed at layout time.
I see no mention in section 5 of the spec that the trait value for start-indent is different from the computed property value.
The problem that Jeremias is trying to address is computing space-[start,end] traits. Since only start-indent was computed correctly he tried to compute space-[start,end] traits based on the [start,end]-indent and to do that the inherited indent values (which has just been added in IndentPropertyMaker) must be substracted.
Which may indicate that calculating space-[start,end] traits based on indents is probably not the right approach.
I think the solution would be to: - Store the [start,end]-indent traits. - Let LayoutContent.refIPD be the reference IPD rather than the content ipd of the parent. - let the renderer keep track of the reference rect and use the start-indent trait to locate the position of the content rectangle.