SimpleFontData* SimpleFontData::uprightOrientationFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->uprightOrientation) m_derivedFontData->uprightOrientation = new SimpleFontData(m_platformData, isCustomFont(), false, true); return m_derivedFontData->uprightOrientation.get(); }
PassRefPtr<SimpleFontData> SimpleFontData::uprightOrientationFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->uprightOrientation) m_derivedFontData->uprightOrientation = create(m_platformData, isCustomFont(), false, true); return m_derivedFontData->uprightOrientation; }
PassRefPtr<Font> Font::uprightOrientationFont() const { if (!m_derivedFontData) m_derivedFontData = std::make_unique<DerivedFontData>(isCustomFont()); if (!m_derivedFontData->uprightOrientation) m_derivedFontData->uprightOrientation = create(m_platformData, isCustomFont(), false, true); ASSERT(m_derivedFontData->uprightOrientation != this); return m_derivedFontData->uprightOrientation; }
PassRefPtr<SimpleFontData> SimpleFontData::brokenIdeographFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->brokenIdeograph) { m_derivedFontData->brokenIdeograph = create(m_platformData, isCustomFont(), false); m_derivedFontData->brokenIdeograph->m_isBrokenIdeographFallback = true; } return m_derivedFontData->brokenIdeograph; }
PassRefPtr<Font> Font::brokenIdeographFont() const { if (!m_derivedFontData) m_derivedFontData = std::make_unique<DerivedFontData>(isCustomFont()); if (!m_derivedFontData->brokenIdeograph) { m_derivedFontData->brokenIdeograph = create(m_platformData, isCustomFont(), false); m_derivedFontData->brokenIdeograph->m_isBrokenIdeographFallback = true; } ASSERT(m_derivedFontData->brokenIdeograph != this); return m_derivedFontData->brokenIdeograph; }
SimpleFontData* SimpleFontData::brokenIdeographFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->brokenIdeograph) { m_derivedFontData->brokenIdeograph = new SimpleFontData(m_platformData, isCustomFont(), false); m_derivedFontData->brokenIdeograph->m_orientation = Vertical; m_derivedFontData->brokenIdeograph->m_isBrokenIdeographFont = true; } return m_derivedFontData->brokenIdeograph.get(); }
SimpleFontData::~SimpleFontData() { if (isCustomFont()) GlyphPageTreeNode::pruneTreeCustomFontData(this); else GlyphPageTreeNode::pruneTreeFontData(this); }
SimpleFontData* SimpleFontData::scaledFontData(const FontDescription& fontDescription, float scaleFactor) const { FontDescription desc = FontDescription(fontDescription); desc.setSpecifiedSize(scaleFactor * fontDescription.computedSize()); FontPlatformData platformData(desc, desc.family().family()); return new SimpleFontData(platformData, isCustomFont(), false); }
PassOwnPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const { FontDescription desc = FontDescription(fontDescription); desc.setSpecifiedSize(scaleFactor * fontDescription.computedSize()); FontPlatformData fontPlatformData(desc, desc.family().family()); return adoptPtr(new SimpleFontData(fontPlatformData, isCustomFont(), false)); }
PassOwnPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const { return adoptPtr(new SimpleFontData(FontPlatformData(m_platformData.m_font.get(), scaleFactor * fontDescription.computedSize(), m_platformData.syntheticBold(), m_platformData.syntheticOblique()), isCustomFont(), false)); }
PassOwnPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const { LOGFONT winFont; GetObject(m_platformData.hfont(), sizeof(LOGFONT), &winFont); float scaledSize = scaleFactor * fontDescription.computedSize(); winFont.lfHeight = -lroundf(scaledSize); HFONT hfont = CreateFontIndirect(&winFont); return adoptPtr(new SimpleFontData(FontPlatformData(hfont, scaledSize), isCustomFont(), false)); }
PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData( const FontDescription& fontDescription, float scaleFactor) const { const float scaledSize = lroundf(fontDescription.computedSize() * scaleFactor); return SimpleFontData::create( FontPlatformData(m_platformData, scaledSize), isCustomFont() ? CustomFontData::create() : nullptr); }
void SimpleFontData::determinePitch() { if (isCustomFont()) { m_treatAsFixedPitch = false; return; } m_treatAsFixedPitch = m_platformData.isFixedPitch(); }
PassRefPtr<Font> Font::emphasisMarkFont(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = std::make_unique<DerivedFontData>(isCustomFont()); if (!m_derivedFontData->emphasisMark) m_derivedFontData->emphasisMark = createScaledFont(fontDescription, emphasisMarkFontSizeMultiplier); ASSERT(m_derivedFontData->emphasisMark != this); return m_derivedFontData->emphasisMark; }
String Font::description() const { if (isSVGFont()) return "[SVG font]"; if (isCustomFont()) return "[custom font]"; return platformData().description(); }
PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->emphasisMark) m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, emphasisMarkFontSizeMultiplier); return m_derivedFontData->emphasisMark; }
PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->smallCaps) m_derivedFontData->smallCaps = createScaledFontData(fontDescription, smallCapsFontSizeMultiplier); return m_derivedFontData->smallCaps; }
SimpleFontData* SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->smallCaps) m_derivedFontData->smallCaps = createScaledFontData(fontDescription, smallCapsFraction); return m_derivedFontData->smallCaps.get(); }
SimpleFontData* SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->emphasisMark) m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5); return m_derivedFontData->emphasisMark.get(); }
PassRefPtr<Font> Font::smallCapsFont(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = std::make_unique<DerivedFontData>(isCustomFont()); if (!m_derivedFontData->smallCaps) m_derivedFontData->smallCaps = createScaledFont(fontDescription, smallCapsFontSizeMultiplier); ASSERT(m_derivedFontData->smallCaps != this); return m_derivedFontData->smallCaps; }
SimpleFontData::~SimpleFontData() { if (!m_fontData) platformDestroy(); if (isCustomFont()) GlyphPageTreeNode::pruneTreeCustomFontData(this); else GlyphPageTreeNode::pruneTreeFontData(this); }
SimpleFontData* SimpleFontData::brokenIdeographFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->brokenIdeograph) { m_derivedFontData->brokenIdeograph = adoptPtr(new SimpleFontData(m_platformData, isCustomFont(), false)); m_derivedFontData->brokenIdeograph->m_isBrokenIdeographFallback = true; } return m_derivedFontData->brokenIdeograph.get(); }
SimpleFontData::~SimpleFontData() { #if ENABLE(SVG_FONTS) if (!m_fontData) #endif platformDestroy(); if (!isCustomFont()) GlyphPageTreeNode::pruneTreeFontData(this); }
SimpleFontData::~SimpleFontData() { #if ENABLE(SVG_FONTS) if (!m_svgFontData || !m_svgFontData->svgFontFaceElement()) #endif platformDestroy(); if (!isCustomFont()) GlyphPageTreeNode::pruneTreeFontData(this); }
PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const { ASSERT(m_platformData.scaledFont()); return SimpleFontData::create(FontPlatformData(cairo_scaled_font_get_font_face(m_platformData.scaledFont()), scaleFactor * fontDescription.computedSize(), m_platformData.syntheticBold(), m_platformData.syntheticOblique(), fontDescription.orientation()), isCustomFont(), false); }
SimpleFontData* SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); // FIXME: I think we want to ask FontConfig for the right font again. if (!m_derivedFontData->smallCaps) m_derivedFontData->smallCaps = createScaledFontData(fontDescription, .7); return m_derivedFontData->smallCaps.get(); }
PassRefPtr<SimpleFontData> SimpleFontData::uprightWithHorizontalGlyphOrientationFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->uprightWithHorizontalGlyphOrientation) { FontPlatformData uprightWithHorizontalGlyphPlatformData(m_platformData); uprightWithHorizontalGlyphPlatformData.m_textOrientation = TextOrientationUprightWithHorizontalGlyph; m_derivedFontData->uprightWithHorizontalGlyphOrientation = create(uprightWithHorizontalGlyphPlatformData, isCustomFont(), false, false); } return m_derivedFontData->uprightWithHorizontalGlyphOrientation; }
PassRefPtr<SimpleFontData> SimpleFontData::verticalRightOrientationFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->verticalRightOrientation) { FontPlatformData verticalRightPlatformData(m_platformData); verticalRightPlatformData.setOrientation(Horizontal); m_derivedFontData->verticalRightOrientation = create(verticalRightPlatformData, isCustomFont(), false, true); } return m_derivedFontData->verticalRightOrientation; }
RefPtr<Font> Font::platformCreateScaledFont(const FontDescription& fontDescription, float scaleFactor) const { ASSERT(m_platformData.scaledFont()); FontDescription scaledFontDescription = fontDescription; scaledFontDescription.setComputedSize(scaleFactor * fontDescription.computedSize()); return Font::create(FontPlatformData(cairo_scaled_font_get_font_face(m_platformData.scaledFont()), scaledFontDescription, m_platformData.syntheticBold(), m_platformData.syntheticOblique()), isCustomFont(), false); }
SimpleFontData* SimpleFontData::verticalRightOrientationFontData() const { if (!m_derivedFontData) m_derivedFontData = DerivedFontData::create(isCustomFont()); if (!m_derivedFontData->verticalRightOrientation) { FontPlatformData verticalRightPlatformData(m_platformData); verticalRightPlatformData.setOrientation(Horizontal); m_derivedFontData->verticalRightOrientation = adoptPtr(new SimpleFontData(verticalRightPlatformData, isCustomFont(), false, true)); } return m_derivedFontData->verticalRightOrientation.get(); }