nsresult nsFontMetrics::Init(const nsFont& aFont, nsIAtom* aLanguage, bool aExplicitLanguage, gfxFont::Orientation aOrientation, nsDeviceContext *aContext, gfxUserFontSet *aUserFontSet, gfxTextPerfMetrics *aTextPerf) { MOZ_ASSERT(mP2A == 0, "already initialized"); mFont = aFont; mLanguage = aLanguage; mOrientation = aOrientation; mDeviceContext = aContext; mP2A = mDeviceContext->AppUnitsPerDevPixel(); gfxFontStyle style(aFont.style, aFont.weight, aFont.stretch, gfxFloat(aFont.size) / mP2A, aLanguage, aExplicitLanguage, aFont.sizeAdjust, aFont.systemFont, mDeviceContext->IsPrinterSurface(), aFont.synthesis & NS_FONT_SYNTHESIS_WEIGHT, aFont.synthesis & NS_FONT_SYNTHESIS_STYLE, aFont.languageOverride); aFont.AddFontFeaturesToStyle(&style); mFontGroup = gfxPlatform::GetPlatform()-> CreateFontGroup(aFont.fontlist, &style, aTextPerf, aUserFontSet); return NS_OK; }
nsresult nsFontMetrics::Init(const nsFont& aFont, nsIAtom* aLanguage, nsDeviceContext *aContext, gfxUserFontSet *aUserFontSet) { NS_ABORT_IF_FALSE(mP2A == 0, "already initialized"); mFont = aFont; mLanguage = aLanguage; mDeviceContext = aContext; mP2A = mDeviceContext->AppUnitsPerDevPixel(); gfxFontStyle style(aFont.style, aFont.weight, aFont.stretch, gfxFloat(aFont.size) / mP2A, aLanguage, aFont.sizeAdjust, aFont.systemFont, mDeviceContext->IsPrinterSurface(), aFont.languageOverride); aFont.AddFontFeaturesToStyle(&style); mFontGroup = gfxPlatform::GetPlatform()-> CreateFontGroup(aFont.name, &style, aUserFontSet); if (mFontGroup->FontListLength() < 1) return NS_ERROR_UNEXPECTED; return NS_OK; }
nsFontMetrics::nsFontMetrics(const nsFont& aFont, const Params& aParams, nsDeviceContext *aContext) : mFont(aFont) , mLanguage(aParams.language) , mDeviceContext(aContext) , mP2A(aContext->AppUnitsPerDevPixel()) , mOrientation(aParams.orientation) , mTextRunRTL(false) , mVertical(false) , mTextOrientation(0) { gfxFontStyle style(aFont.style, aFont.weight, aFont.stretch, gfxFloat(aFont.size) / mP2A, aParams.language, aParams.explicitLanguage, aFont.sizeAdjust, aFont.systemFont, mDeviceContext->IsPrinterSurface(), aFont.synthesis & NS_FONT_SYNTHESIS_WEIGHT, aFont.synthesis & NS_FONT_SYNTHESIS_STYLE, aFont.languageOverride); aFont.AddFontFeaturesToStyle(&style); gfxFloat devToCssSize = gfxFloat(mP2A) / gfxFloat(mDeviceContext->AppUnitsPerCSSPixel()); mFontGroup = gfxPlatform::GetPlatform()-> CreateFontGroup(aFont.fontlist, &style, aParams.textPerf, aParams.userFontSet, devToCssSize); }
NS_IMETHODIMP nsThebesDeviceContext::FirstExistingFont(const nsFont& aFont, nsString& aFaceName) { FontEnumData data(this, aFaceName); if (aFont.EnumerateFamilies(FontEnumCallback, &data)) { return NS_ERROR_FAILURE; // ran out } return NS_OK; }