I'm assuming you mean they share a single letter. I would probably use
bounding boxes to break the words at the letter that is shared, and adjust
the horizontal text positions based on these widths. For example:
-- "shape" and "cactus" share "a".
-- Use GetBoundingBox() to get widths of "shape" and "cactus" text
objects.
-- Change SHAPE's textstring to APE and store the original word in a
variable.
-- Change CACTUS's textstring to ACTUS and store the original word in a
variable.
-- Use GetBoundingBox() to get widths of APE and ACTUS text objects.
-- Change the words back to their original values.
-- The new Y-coord for the CACTUS text should be found by the following
formula:
(Y-coord of insert point of SHAPE) + (width of SHAPE) - (width of APE) +
(width of CACTUS) - (width of ACTUS)
If you have a column, just go down the list of words, using this method on
each one to align it with the first word.
This isn't tested, it's just how I would go about trying to do it.
HTH,
James