16. In or for a computer system, a method for placing text around constraints the steps of: receiving a first width, a character position, and a vertical position associated with a first candidate rectangle; receiving parameters defining a constraint that intersects with the first candidate rectangle; fitting a preliminary text string to the first candidate rectangle; determining a first height associated with the preliminary text string; identifying a first set of unobstructed spans corresponding to the candidate rectangle by excluding from the candidate rectangle a portion of the candidate rectangle that intersects with the constraint; fitting a first set of text strings to the first set of unobstructed spans; determining a second height associated with the first set of text strings; comparing the second height to the first height; if the second height is equal to the first height, assigning the first set of text string to the first set of unobstructed spans and aligning a baseline associated with the first set of text strings; if the second height is greater than the first height, declaring the first candidate rectangle invalid and advancing the vertical position by a predetermined amount; and if the second height is less than the first height, defining a second candidate rectangle having the first width and the second height, identifying a second set of unobstructed spans corresponding to the second candidate rectangle by excluding from the second candidate rectangle a portion of the second candidate rectangle that intersects with the constraint, fitting a second set of text strings to the second set of unobstructed spans, determining a third height associated with the second set of text strings, comparing the third height to the second height, if the third height is equal to or less than the second height, assigning the second set of text strings to the second set of unobstructed spans for each unobstructed span of the second set of unobstructed spans by, determining whether a text string fitted to an unobstructed span ends in a delimiter, if the fitted text string ends in a delimiter, assigning the text string to the unobstructed span, and if the fitted text string does not end in a delimiter, assigning no text to the unobstructed span, and if the third height is greater than the second height, declaring the second candidate rectangle invalid and advancing the vertical position by a predetermined amount.
18. The method of claim 16, wherein each unobstructed span of the second set of unobstructed spans has an associated baseline, further comprising the steps of: aligning a baselines associated with the unobstructed span of the second set of unobstructed spans.