#include <allegro5/allegro.h>
#include <pango/pangoft2.h>

#define FONT "Sans Bold 27"

int main(void)
{
   ALLEGRO_DISPLAY *dpy;
   ALLEGRO_BITMAP *bmp;

   al_init();
   dpy = al_create_display(640, 480);
   bmp = al_create_bitmap(640, 400);

   PangoFontMap *fontmap;
   fontmap = pango_ft2_font_map_new();
   pango_ft2_font_map_set_resolution(PANGO_FT2_FONT_MAP(fontmap), 96, 96);

   PangoContext *context;
   context = pango_font_map_create_context(fontmap);

   PangoLayout *layout;
   layout = pango_layout_new(context);

   PangoFontDescription *font_description;
   font_description = pango_font_description_from_string(FONT);
   pango_layout_set_font_description(layout, font_description);
   pango_font_description_free(font_description);

   pango_layout_set_text(layout, "abc مرحبا def", -1);

   int width, height;
   pango_layout_get_pixel_size(layout, &width, &height);

   /* Use ALLEGRO_PIXEL_FORMAT_LUMINANCE_8 to match FT_PIXEL_MODE_MONO. */
   ALLEGRO_LOCKED_REGION *lr;
   lr = al_lock_bitmap_region(bmp, 0, 0, width, height,
      ALLEGRO_PIXEL_FORMAT_LUMINANCE_8, ALLEGRO_LOCK_READWRITE);

   FT_Bitmap ftb;
   ftb.width = width;
   ftb.rows = height;
   ftb.pitch = lr->pitch;
   ftb.buffer = lr->data;
   ftb.num_grays = 256;
   ftb.pixel_mode = FT_PIXEL_MODE_MONO;
   /* doesn't seem to work: FT_PIXEL_MODE_LCD */

   pango_ft2_render_layout(&ftb, layout, 0, 0);

   al_unlock_bitmap(bmp);

   /* Cleanup here */

   al_clear_to_color(al_map_rgb_f(0.7, 0.7, 0.7));
   al_draw_bitmap(bmp, 0, 0, 0);
   al_flip_display();
   al_rest(1.0);

   return 0;
}

/* vim: set sts=3 sw=3 et: */

