void gfxGDIFont::FillLogFont(LOGFONTW& aLogFont, gfxFloat aSize, bool aUseGDIFakeItalic) { GDIFontEntry *fe = static_cast<GDIFontEntry*>(GetFontEntry()); uint16_t weight; if (fe->IsUserFont()) { if (fe->IsLocalUserFont()) { // for local user fonts, don't change the original weight // in the entry's logfont, because that could alter the // choice of actual face used (bug 724231) weight = 0; } else { // avoid GDI synthetic bold which occurs when weight // specified is >= font data weight + 200 weight = mNeedsBold ? 700 : 200; } } else { weight = mNeedsBold ? 700 : fe->Weight(); } fe->FillLogFont(&aLogFont, weight, aSize, (mAntialiasOption == kAntialiasSubpixel) ? true : false); // If GDI synthetic italic is wanted, force the lfItalic field to true if (aUseGDIFakeItalic) { aLogFont.lfItalic = 1; } }
void gfxGDIFont::FillLogFont(LOGFONTW& aLogFont, gfxFloat aSize) { GDIFontEntry *fe = static_cast<GDIFontEntry*>(GetFontEntry()); PRUint16 weight = mNeedsBold ? 700 : fe->Weight(); PRBool italic = (mStyle.style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)); // if user font, disable italics/bold if defined to be italics/bold face // this avoids unwanted synthetic italics/bold if (fe->mIsUserFont) { if (fe->IsItalic()) italic = PR_FALSE; // avoid synthetic italic if (fe->IsBold() || !mNeedsBold) { // avoid GDI synthetic bold which occurs when weight // specified is >= font data weight + 200 weight = 200; } } fe->FillLogFont(&aLogFont, italic, weight, aSize, (mAntialiasOption == kAntialiasSubpixel) ? PR_TRUE : PR_FALSE); }