style.maxWidth es lo ancha que puede ser una línea, en píxeles, antes de que sus palabras pasen a la siguiente. Las líneas se parten en los espacios, y una palabra más ancha que la caja entera se parte entre dos letras. Un \n sigue empezando línea donde esté. El motor vuelve a partir las líneas cada vez que cambian el texto, su tamaño o el ancho, así que un cuadro de diálogo nunca necesita saltos de línea puestos a mano.
El bloque es tan ancho como maxWidth, así que align y anchor colocan las líneas dentro de la caja y no alrededor de las palabras. El letrero cambia de ancho en cada fotograma, y measureText(words) le pregunta al propio texto cómo ha quedado ahora, con su fuente y su estilo: el tamaño de su bloque, para ajustarle el letrero, y sus líneas, para contarlas. Lo mismo vale con una fuente de mapa de bits, una vectorial y drawText.
El diálogo se escribe letra a letra. Si se mostraran tal como llegan, una palabra empezaría al final de una línea y saltaría a la siguiente en cuanto dejara de caber. Por eso cada página se parte antes con measureText(page, style), con las palabras y el mismo estilo que tiene el cuadro de diálogo, que da las líneas en las que van a quedar antes de mostrarlas, y las letras que se muestran son las primeras de esas líneas. Haz clic, o pulsa Espacio, para terminar una página o pasar a la siguiente.