renamed LineFragment.line to .slug
fixed the cache key for family_name()
distributed the Pair repr to subclasses
simplified center rotations
fixed the line-walking counter
frames no longer expose text-containers

- they’re not really a user-serviceable part after all…
made Text.find case-insensitive by default

- if a string arg is passed and it’s all lowercase, match insensitively
- if the string contains any capital letters, match sensitively
- if you need lowercase + sensitive, pass an re.complie’d object instead
text_frames() finds containers in a char range
better TextMatch visibility test

- now checking .frames rather than .lines
- switched to foundry’s implementation
- renamed layout->lines to mirror Text and TextFrame
Text.find() is a little smarter about regexes

- if the regex string has any paren-captures in it, the resulting
TextMatch will correspond to the *first* capture range
- if the regex has no captures, the TextMatch corresponds to the entire
pattern
TextFrames shouldn't copy the Text origin

- the offset is zero-based relative to that origin to begin with