Soy el creador de Wordle. Así es como funciona realmente Wordle:
Cuente las palabras, deseche las palabras aburridas y ordene por la cuenta, descendiendo. Mantenga las N palabras principales para algunos N. Asigne a cada palabra un tamaño de fuente proporcional a su recuento. Genere una forma Java2D para cada palabra, utilizando la API Java2D.
Cada palabra "quiere" estar en algún lugar, como "en alguna posición x aleatoria en el centro vertical". En orden decreciente de frecuencia, haga esto para cada palabra:
place the word where it wants to be
while it intersects any of the previously placed words
move it one step along an ever-increasing spiral
Eso es. El duro parte es hacer las pruebas de intersección de manera eficiente, para lo cual uso el almacenamiento en caché de último golpe, los cuadros de delimitación jerárquica y un índice espacial quadtree (todos los cuales son cosas sobre las que puede aprender más con un poco de búsqueda diligente).
Editar: como señaló Reto Aebersold, ahora hay un capítulo de libro, disponible gratuitamente, que cubre este mismo territorio: Beautiful Visualization, Capítulo 3: Wordle