// borrowed from Wine typedef struct { FT_Short height; FT_Short width; FT_Pos size; FT_Pos x_ppem; FT_Pos y_ppem; FT_Short internal_leading; } ROS_Bitmap_Size; static inline void get_bitmap_size(FT_Face ft_face, ROS_Bitmap_Size *face_size) { FT_Bitmap_Size *size; FT_WinFNT_HeaderRec winfnt_header; size = ft_face->available_sizes; DPRINT("Adding bitmap size h %d w %d size %ld x_ppem %ld y_ppem %ld\n", size->height, size->width, size->size >> 6, size->x_ppem >> 6, size->y_ppem >> 6); ASSERT(face_size); face_size->height = size->height; face_size->width = size->width; face_size->size = size->size; face_size->x_ppem = size->x_ppem; face_size->y_ppem = size->y_ppem; if (FT_Get_WinFNT_Header(ft_face, &winfnt_header)) return; face_size->internal_leading = winfnt_header.internal_leading; if (winfnt_header.external_leading > 0 && (face_size->height == winfnt_header.pixel_height + winfnt_header.external_leading)) { face_size->height = winfnt_header.pixel_height; } }