public WinGdiFont(WinGdiFontFace fontFace, float sizeInPoints, FontStyle style) { this.fontFace = fontFace; this.fontSizeInPoints = sizeInPoints; this.fontStyle = style; this.fontSizeInPoints = sizeInPoints; this.emSizeInPixels = PixelFarm.Drawing.RequestFont.ConvEmSizeInPointsToPixels(this.fontSizeInPoints); this.hfont = InitFont(fontFace.Name, sizeInPoints, style); //------------------------------------------------------------------ //create gdi font from font data //build font matrix ; WinGdiTextService.MeasureCharWidths(hfont, out charWidths, out charAbcWidths); float scale = fontFace.GetScale(sizeInPoints); ascendInPixels = fontFace.AscentInDzUnit * scale; descentInPixels = fontFace.DescentInDzUnit * scale; linegapInPixels = fontFace.LineGapInDzUnit * scale; //------------------------------------------------------------------ //int emHeightInDzUnit = f.FontFamily.GetEmHeight(f.Style); //this.ascendInPixels = Font.ConvEmSizeInPointsToPixels((f.FontFamily.GetCellAscent(f.Style) / emHeightInDzUnit)); //this.descentInPixels = Font.ConvEmSizeInPointsToPixels((f.FontFamily.GetCellDescent(f.Style) / emHeightInDzUnit)); ////-------------- ////we build font glyph, this is just win32 glyph //// //int j = charAbcWidths.Length; //fontGlyphs = new FontGlyph[j]; //for (int i = 0; i < j; ++i) //{ // FontGlyph glyph = new FontGlyph(); // glyph.horiz_adv_x = charWidths[i] << 6; // fontGlyphs[i] = glyph; //} }