#include #include #include cairo_font_face_t *make_font(const wchar_t *font_name, LONG font_weight) { LOGFONTW lf; cairo_font_face_t* ret; memset(&lf, 0, sizeof(lf)); lf.lfWeight = font_weight; lf.lfCharSet = DEFAULT_CHARSET; lf.lfOutPrecision = OUT_TT_PRECIS; lf.lfPitchAndFamily = FF_SWISS; wcscpy(lf.lfFaceName, font_name); ret = cairo_win32_font_face_create_for_logfontw(&lf); assert(CAIRO_STATUS_SUCCESS == cairo_font_face_status(ret)); return ret; } void test(cairo_t *c) { cairo_font_face_t *arial_norm = make_font(L"Arial", FW_NORMAL); cairo_font_face_t *arial_bold = make_font(L"Arial", FW_BOLD); cairo_font_face_t *arums_norm = make_font(L"Arial Unicode MS", FW_NORMAL); cairo_font_face_t *arums_bold = make_font(L"Arial Unicode MS", FW_BOLD); assert(CAIRO_STATUS_SUCCESS == cairo_status(c)); cairo_move_to(c, 5, 35); cairo_set_font_face(c, arial_norm); cairo_set_font_size(c, 32); cairo_show_text(c, "Arial normal"); assert(CAIRO_STATUS_SUCCESS == cairo_status(c)); cairo_move_to(c, 5, 70); cairo_set_font_face(c, arial_bold); cairo_set_font_size(c, 32); cairo_show_text(c, "Arial bold"); assert(CAIRO_STATUS_SUCCESS == cairo_status(c)); cairo_move_to(c, 5, 105); cairo_set_font_face(c, arums_norm); cairo_set_font_size(c, 32); cairo_show_text(c, "Arial Unicode MS normal"); assert(CAIRO_STATUS_SUCCESS == cairo_status(c)); cairo_move_to(c, 5, 140); cairo_set_font_face(c, arums_bold); cairo_set_font_size(c, 32); cairo_show_text(c, "Arial Unicode MS bold"); assert(CAIRO_STATUS_SUCCESS == cairo_status(c)); } void main(int argc, char** argv) { cairo_surface_t *pdf, *png; cairo_t *c_pdf, *c_png; pdf = cairo_pdf_surface_create("test.pdf", 400, 150); c_pdf = cairo_create(pdf); test(c_pdf); cairo_show_page(c_pdf); cairo_surface_destroy(pdf); cairo_destroy(c_pdf); png = cairo_win32_surface_create_with_dib(CAIRO_FORMAT_ARGB32, 400, 150); c_png = cairo_create(png); test(c_png); cairo_surface_write_to_png(png, "test.png"); cairo_surface_destroy(png); cairo_destroy(c_png); }