🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

New C/C++ library: Font Chef

Started by
0 comments, last by lgfreitas 3 years, 11 months ago

Hey all!

I'm releasing a new library, called Font Chef, to assist in text rendering. Its purpose is to create an atlas of selected glyphs from unicode blocks and produce source and target rectangles to clip and render the atlas into the screen. It is basically an abstraction of the great stb_truetype

It handles kerning, wrapping (line breaking) and alignment. It is also fully documented with examples and a manual.

Example for C:

fc_font * font = fc_construct(font_data, fc_px(30), fc_color_black);
fc_add(fc_basic_latin.start, fc_basic_latin.end);
fc_cook(font);
// use fc_get_pixels(font) to make a texture
    
const char hello[] = "Hello, world!";
fc_character_mapping output[32];
int count = fc_render(font, text, strlen(hello), &output);
for (int i = 0; i < count; i++) {
    render(texture, output[i].source, output[i].target
}

It comes with a C++ wrapper. Example for C++:

fc::font font = fc
      ::from(font_data, fc::px(30), fc_color_black)
      .add(fc_basic_latin)
      .cook();

// use font.pixels() to make a texture

fc::render_result result = font.render("Hello, world!");
for (auto &amp; map : result) {
    render(texture, map.source, map.target);
}

I believe this is mostly useful to those handling directly with graphics rendering (aka game developers with their own engine) but I hope it is useful to you if you're not in that group.

Opinions and constructive criticism are very much welcome.

Links

This topic is closed to new replies.

Advertisement