Respecto a lo de la string de largo variable...no veo donde esta la duda.
Con respecto a las fuentes "con fondo", es por que vos estas renderizando el texto usando SOLID seguramente. SDL_ttf, tiene 3 tipos de renders:
SOLID, SHADED, BLENDED.
Aca te dejo la descripcion de cada una segun el manua:
-----------------------------------------------------------------------------------------------------------
Solid: Quick and Dirty
Create an 8-bit palettized surface and render the given text at fast quality
with the given font and color. The pixel value of 0 is the colorkey, giving a
transparent background when blitted. Pixel and colormap value 1 is set to the
text foreground color. This allows you to change the color without having to
render the text again. Palette index 0 is of course not drawn when blitted to
another surface, since it is the colorkey, and thus transparent, though its actual
color is 255 minus each of the RGB components of the foreground color. This
is the fastest rendering speed of all the rendering modes. This results in no box
around the text, but the text is not as smooth. The resulting surface should blit
faster than the Blended one. Use this mode for FPS and other fast changing
updating text displays.
Shaded: Slow and Nice, but with a Solid Box
Create an 8-bit palettized surface and render the given text at high quality
with the given font and colors. The 0 pixel value is background, while other
pixels have varying degrees of the foreground color from the background color.
This results in a box of the background color around the text in the foreground
color. The text is antialiased. This will render slower than Solid, but in about
the same time as Blended mode. The resulting surface should blit as fast as
Solid, once it is made. Use this when you need nice text, and can live with a
box.
Blended: Slow Slow Slow, but Ultra Nice over another image
Create a 32-bit ARGB surface and render the given text at high quality, using
alpha blending to dither the font with the given color. This results in a surface
with alpha transparency, so you don’t have a solid colored box around the text.
The text is antialiased. This will render slower than Solid, but in about the
same time as Shaded mode. The resulting surface will blit slower than if you
had used Solid or Shaded. Use this when you want high quality, and the text
isn’t changing too fast.
-----------------------------------------------------------------------------------------------------------
En pocas palabras. Solid es rapido, pero sale con el fondo ese, y tiene una calidad mala.
Shaded tiene la misma calidad del Solid, pero podes ponerele un color de fondo, y luego seleccionarlo como color key, y asi sale trasparente, pero siempre quedan algunos vestigios del color de fondo sobre la fuente.
Blended, es de alta calidad, en 32 bits (los otros son en

. No tiene fondo (el fondo es trasparente mediante alpha, creo). Pero consume bastante mas recursos del prosesador que los otros metodos.
Para usar estos metodos:
- Código: Seleccionar todo
TTF RenderText_Solid(TTF_Font *font, const char *text,
SDL_Color fg)
TTF RenderText_Shaded(TTF_Font *font, const char *text,
SDL_Color fg, SDL_Color bg)
TTF RenderText_Blended(TTF_Font *font, const char *text,
SDL_Color fg)