void defont_get_font_extents(DEFont *font, GrFontExtents *fnte) { #ifdef HAVE_X11_XFT if(font->font!=NULL){ fnte->max_height=font->font->ascent+font->font->descent; fnte->max_width=font->font->max_advance_width; fnte->baseline=font->font->ascent; return; } #endif /* HAVE_X11_XFT */ #ifdef HAVE_X11_BMF if(font->fontset!=NULL){ XFontSetExtents *ext=XExtentsOfFontSet(font->fontset); if(ext==NULL) goto fail; fnte->max_height=ext->max_logical_extent.height; fnte->max_width=ext->max_logical_extent.width; fnte->baseline=-ext->max_logical_extent.y; return; }else if(font->fontstruct!=NULL){ XFontStruct *fnt=font->fontstruct; fnte->max_height=fnt->ascent+fnt->descent; fnte->max_width=fnt->max_bounds.width; fnte->baseline=fnt->ascent; return; } fail: #endif /* HAVE_X11_BMF */ DE_RESET_FONT_EXTENTS(fnte); }
void debrush_get_font_extents(DEBrush *brush, GrFontExtents *fnte) { if(brush->d->font==NULL){ DE_RESET_FONT_EXTENTS(fnte); return; } defont_get_font_extents(brush->d->font, fnte); }
void defont_get_font_extents(DEFont *font, GrFontExtents *fnte) { if(font->fontset!=NULL){ XFontSetExtents *ext=XExtentsOfFontSet(font->fontset); if(ext==NULL) goto fail; fnte->max_height=ext->max_logical_extent.height; fnte->max_width=ext->max_logical_extent.width; fnte->baseline=-ext->max_logical_extent.y; return; }else if(font->fontstruct!=NULL){ XFontStruct *fnt=font->fontstruct; fnte->max_height=fnt->ascent+fnt->descent; fnte->max_width=fnt->max_bounds.width; fnte->baseline=fnt->ascent; return; } fail: DE_RESET_FONT_EXTENTS(fnte); }