Day 22: Fonts and Text – Part 2
Introduction
Last day we started creating an atlas-based font class to draw text. Today we are going to complete this work by using it to draw characters. In order to draw a piece of text on the screen, we need the following information.
- The text (a series of characters)
- Screen coordinates to draw the text
- Font
- Font size (and possibly other attributes)
Given font size, we need to scale the atlas texture accordingly before drawing characters. What we introduce later today are text sprites. Like other sprites in our framework, text sprites can be rotated, scaled, and translated. For ease of use, we associate the scaling factor of a text sprite to its font size. For instance if the scaling factor is 12, it represents a text with a font height of 12 pixels. This contrasts with a normal texture, where it means 12 times as big as the original size. In day 6 we discussed how transformations work in OpenGL ES. In order to figure out how we should apply transformations to text sprites, we have to keep the following in mind:
- Rotation should be applied to the text as a whole, not individual characters.
- Scaling can either be applied to the whole text or to individual characters.
- Translation is applied to the whole text as well as individual characters. Note that we have to position the text first, and then every character should appear after the previous.