2016-11-22 4 views
0

미래의 PNG 문자의 너비가 &입니다. 정확한 그림을 그릴 필요가 있습니다. "Сonsolas가"I 수동 비율 촬상 용 카이로, 표면에 모노 스페이스가있는 라틴 문자의 폭을 얻으십시오.

int font_height=13, font_width=?; 
cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24, font_width * pic_width_in_chars, font_height * pic_height_in_chars); 
cairo_t *cr = cairo_create(surface); 
cairo_select_font_face(cr, "Consolas", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); 
cairo_set_font_size(cr, font_height); 
// fill surface by characters, no need help 

: font_width font_height * = 3/5; 하지만 API에서 가져 오는 방법은 무엇입니까?

감사합니다. extents.x_advance가 제가 추구하는 것입니다.

답변

1

단일 글자의 너비가 어떤 문자인지에 따라 달라지기 때문에 그렇게 할 수 없습니다. 전체 너비를 각각의 너비를 더하거나 전체 문자열을 사용하여 계산할 수 있습니다.

모노 스페이스 글꼴의 경우, 문자의 너비는 다른 문자의 너비와 같습니다. 따라서 하나를 계산하면 문자열의 문자 수를 곱할 수 있습니다.

그래서 짧은 대답은

  • 는 고정 폭 폰트를 제외하고, 문자에 대한 단위 폭이 없습니다입니다.

cairo_text_extents()을 사용하면 신속하게 문자열의 너비를 계산할 수 있습니다. 고정 폭 글꼴이면 임의 문자를 사용하여 단위 폭으로 사용하십시오.

+0

저는 모노 스페이스 폰트를 사용하고 있으며, 문자의 폭/높이에 대해 수동으로 비율 3/5를 발견했습니다. – biv