diff options
author | Steve Block <steveblock@google.com> | 2011-05-25 19:08:45 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-06-08 13:51:31 +0100 |
commit | 2bde8e466a4451c7319e3a072d118917957d6554 (patch) | |
tree | 28f4a1b869a513e565c7760d0e6a06e7cf1fe95a /Source/WebCore/platform/graphics/SimpleFontData.cpp | |
parent | 6939c99b71d9372d14a0c74a772108052e8c48c8 (diff) | |
download | external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.zip external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.gz external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.bz2 |
Merge WebKit at r82507: Initial merge by git
Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e
Diffstat (limited to 'Source/WebCore/platform/graphics/SimpleFontData.cpp')
-rw-r--r-- | Source/WebCore/platform/graphics/SimpleFontData.cpp | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/Source/WebCore/platform/graphics/SimpleFontData.cpp b/Source/WebCore/platform/graphics/SimpleFontData.cpp index aaab666..82f770d 100644 --- a/Source/WebCore/platform/graphics/SimpleFontData.cpp +++ b/Source/WebCore/platform/graphics/SimpleFontData.cpp @@ -47,15 +47,16 @@ using namespace std; namespace WebCore { -SimpleFontData::SimpleFontData(const FontPlatformData& platformData, bool isCustomFont, bool isLoading) +SimpleFontData::SimpleFontData(const FontPlatformData& platformData, bool isCustomFont, bool isLoading, bool isTextOrientationFallback) : m_maxCharWidth(-1) , m_avgCharWidth(-1) - , m_orientation(platformData.orientation()) , m_platformData(platformData) , m_treatAsFixedPitch(false) , m_isCustomFont(isCustomFont) , m_isLoading(isLoading) - , m_isBrokenIdeographFont(false) + , m_isTextOrientationFallback(isTextOrientationFallback) + , m_isBrokenIdeographFallback(false) + , m_hasVerticalGlyphs(false) { platformInit(); platformGlyphInit(); @@ -64,13 +65,14 @@ SimpleFontData::SimpleFontData(const FontPlatformData& platformData, bool isCust #if ENABLE(SVG_FONTS) SimpleFontData::SimpleFontData(PassOwnPtr<SVGFontData> svgFontData, int size, bool syntheticBold, bool syntheticItalic) - : m_orientation(Horizontal) - , m_platformData(FontPlatformData(size, syntheticBold, syntheticItalic)) + : m_platformData(FontPlatformData(size, syntheticBold, syntheticItalic)) , m_treatAsFixedPitch(false) , m_svgFontData(svgFontData) , m_isCustomFont(true) , m_isLoading(false) - , m_isBrokenIdeographFont(false) + , m_isTextOrientationFallback(false) + , m_isBrokenIdeographFallback(false) + , m_hasVerticalGlyphs(false) { SVGFontFaceElement* svgFontFaceElement = m_svgFontData->svgFontFaceElement(); unsigned unitsPerEm = svgFontFaceElement->unitsPerEm(); @@ -202,14 +204,34 @@ bool SimpleFontData::isSegmented() const return 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 = new SimpleFontData(verticalRightPlatformData, isCustomFont(), false, true); + } + return m_derivedFontData->verticalRightOrientation.get(); +} + +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(); +} + 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; + m_derivedFontData->brokenIdeograph->m_isBrokenIdeographFallback = true; } return m_derivedFontData->brokenIdeograph.get(); } @@ -242,6 +264,10 @@ SimpleFontData::DerivedFontData::~DerivedFontData() GlyphPageTreeNode::pruneTreeCustomFontData(emphasisMark.get()); if (brokenIdeograph) GlyphPageTreeNode::pruneTreeCustomFontData(brokenIdeograph.get()); + if (verticalRightOrientation) + GlyphPageTreeNode::pruneTreeCustomFontData(verticalRightOrientation.get()); + if (uprightOrientation) + GlyphPageTreeNode::pruneTreeCustomFontData(uprightOrientation.get()); } } // namespace WebCore |