more work on fonts (and refactoring)