Horizontal alignment can be done using different metrics:
advance: current solution, works with mixed-dir lines.
bounding-box: exclude side bearings eg. so that a trailing "f" doesn't overflow the enclosing box. I don't know how to implement for mixed-dir lines because of bidi reordering.
Horizontal alignment can be done using different metrics: