wrapInside greedily wraps content to fill a space defined by a
predicate. It is passed a list of vectors which express the
order of dimensions to be filled. In other words, wrapping RTL
text is done by passing in [unitX, unitY], to first exhaust
space horizontally, and then vertically.

Note that this function does not guarantee that there are not
points inside each positioned item for which the predicate is
False. Instead, only the corners of the bounds, along each axii,
are used.