Index: third_party/WebKit/Source/platform/fonts/opentype/OpenTypeCapsSupport.cpp |
diff --git a/third_party/WebKit/Source/platform/fonts/opentype/OpenTypeCapsSupport.cpp b/third_party/WebKit/Source/platform/fonts/opentype/OpenTypeCapsSupport.cpp |
deleted file mode 100644 |
index bba64a56b121b822bce37b935a2920e53cfb5971..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/platform/fonts/opentype/OpenTypeCapsSupport.cpp |
+++ /dev/null |
@@ -1,173 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "platform/fonts/opentype/OpenTypeCapsSupport.h" |
- |
-namespace blink { |
- |
-OpenTypeCapsSupport::OpenTypeCapsSupport() |
- : m_harfBuzzFace(nullptr) |
- , m_requestedCaps(FontDescription::CapsNormal) |
- , m_fontSupport(FontSupport::Full) |
- , m_capsSynthesis(CapsSynthesis::None) |
-{ |
-} |
- |
-OpenTypeCapsSupport::OpenTypeCapsSupport(const HarfBuzzFace* harfBuzzFace, |
- FontDescription::FontVariantCaps requestedCaps, |
- hb_script_t script) |
- : m_harfBuzzFace(harfBuzzFace) |
- , m_requestedCaps(requestedCaps) |
- , m_fontSupport(FontSupport::Full) |
- , m_capsSynthesis(CapsSynthesis::None) |
-{ |
- if (requestedCaps != FontDescription::CapsNormal) |
- determineFontSupport(script); |
-} |
- |
-FontDescription::FontVariantCaps OpenTypeCapsSupport::fontFeatureToUse( |
- SmallCapsIterator::SmallCapsBehavior sourceTextCase) |
-{ |
- if (m_fontSupport == FontSupport::Full) |
- return m_requestedCaps; |
- |
- if (m_fontSupport == FontSupport::Fallback) { |
- if (m_requestedCaps == FontDescription::FontVariantCaps::AllPetiteCaps) |
- return FontDescription::FontVariantCaps::AllSmallCaps; |
- |
- if (m_requestedCaps == FontDescription::FontVariantCaps::PetiteCaps |
- || (m_requestedCaps == FontDescription::FontVariantCaps::Unicase |
- && sourceTextCase == SmallCapsIterator::SmallCapsSameCase)) |
- return FontDescription::FontVariantCaps::SmallCaps; |
- } |
- |
- return FontDescription::FontVariantCaps::CapsNormal; |
-} |
- |
-bool OpenTypeCapsSupport::needsRunCaseSplitting() |
-{ |
- // Lack of titling case support is ignored, titling case is not synthesized. |
- return m_fontSupport != FontSupport::Full |
- && m_requestedCaps != FontDescription::TitlingCaps; |
-} |
- |
-bool OpenTypeCapsSupport::needsSyntheticFont( |
- SmallCapsIterator::SmallCapsBehavior runCase) |
-{ |
- if (m_fontSupport == FontSupport::Full) |
- return false; |
- |
- if (m_requestedCaps == FontDescription::TitlingCaps) |
- return false; |
- |
- if (m_fontSupport == FontSupport::None) { |
- if (runCase == SmallCapsIterator::SmallCapsUppercaseNeeded |
- && (m_capsSynthesis == CapsSynthesis::LowerToSmallCaps |
- || m_capsSynthesis == CapsSynthesis::BothToSmallCaps)) |
- return true; |
- |
- if (runCase == SmallCapsIterator::SmallCapsSameCase |
- && (m_capsSynthesis == CapsSynthesis::UpperToSmallCaps |
- || m_capsSynthesis == CapsSynthesis::BothToSmallCaps)) { |
- return true; |
- } |
- } |
- |
- return false; |
-} |
- |
-CaseMapIntend OpenTypeCapsSupport::needsCaseChange( |
- SmallCapsIterator::SmallCapsBehavior runCase) |
-{ |
- CaseMapIntend caseMapIntend = CaseMapIntend::KeepSameCase; |
- |
- if (m_fontSupport == FontSupport::Full) |
- return caseMapIntend; |
- |
- switch (runCase) { |
- case SmallCapsIterator::SmallCapsSameCase: |
- caseMapIntend = m_fontSupport == FontSupport::Fallback |
- && (m_capsSynthesis == CapsSynthesis::BothToSmallCaps |
- || m_capsSynthesis == CapsSynthesis::UpperToSmallCaps) |
- ? CaseMapIntend::LowerCase |
- : CaseMapIntend::KeepSameCase; |
- break; |
- case SmallCapsIterator::SmallCapsUppercaseNeeded: |
- caseMapIntend = m_fontSupport != FontSupport::Fallback |
- && (m_capsSynthesis == CapsSynthesis::LowerToSmallCaps |
- || m_capsSynthesis == CapsSynthesis::BothToSmallCaps) |
- ? CaseMapIntend::UpperCase |
- : CaseMapIntend::KeepSameCase; |
- break; |
- default: |
- break; |
- } |
- return caseMapIntend; |
-} |
- |
-void OpenTypeCapsSupport::determineFontSupport(hb_script_t script) |
-{ |
- switch (m_requestedCaps) { |
- case FontDescription::SmallCaps: |
- if (!supportsOpenTypeFeature(script, HB_TAG('s', 'm', 'c', 'p'))) { |
- m_fontSupport = FontSupport::None; |
- m_capsSynthesis = CapsSynthesis::LowerToSmallCaps; |
- } |
- break; |
- case FontDescription::AllSmallCaps: |
- if (!(supportsOpenTypeFeature(script, HB_TAG('s', 'm', 'c', 'p')) |
- && supportsOpenTypeFeature( |
- script, |
- HB_TAG('c', '2', 's', 'c')))) { |
- m_fontSupport = FontSupport::None; |
- m_capsSynthesis = CapsSynthesis::BothToSmallCaps; |
- } |
- break; |
- case FontDescription::PetiteCaps: |
- if (!supportsOpenTypeFeature(script, HB_TAG('p', 'c', 'a', 'p'))) { |
- if (supportsOpenTypeFeature(script, HB_TAG('s', 'm', 'c', 'p'))) { |
- m_fontSupport = FontSupport::Fallback; |
- } else { |
- m_fontSupport = FontSupport::None; |
- m_capsSynthesis = CapsSynthesis::LowerToSmallCaps; |
- } |
- } |
- break; |
- case FontDescription::AllPetiteCaps: |
- if (!(supportsOpenTypeFeature(script, HB_TAG('p', 'c', 'a', 'p')) |
- && supportsOpenTypeFeature( |
- script, |
- HB_TAG('c', '2', 'p', 'c')))) { |
- if (supportsOpenTypeFeature(script, HB_TAG('s', 'm', 'c', 'p')) |
- && supportsOpenTypeFeature( |
- script, |
- HB_TAG('c', '2', 's', 'c'))) { |
- m_fontSupport = FontSupport::Fallback; |
- } else { |
- m_fontSupport = FontSupport::None; |
- m_capsSynthesis = CapsSynthesis::BothToSmallCaps; |
- } |
- } |
- break; |
- case FontDescription::Unicase: |
- if (!supportsOpenTypeFeature(script, HB_TAG('u', 'n', 'i', 'c'))) { |
- m_capsSynthesis = CapsSynthesis::UpperToSmallCaps; |
- if (supportsOpenTypeFeature(script, HB_TAG('s', 'm', 'c', 'p'))) { |
- m_fontSupport = FontSupport::Fallback; |
- } else { |
- m_fontSupport = FontSupport::None; |
- } |
- } |
- break; |
- case FontDescription::TitlingCaps: |
- if (!supportsOpenTypeFeature(script, HB_TAG('t', 'i', 't', 'l'))) { |
- m_fontSupport = FontSupport::None; |
- } |
- break; |
- default: |
- ASSERT_NOT_REACHED(); |
- } |
-} |
- |
-} // namespace blink |