Delete dead SVG Font code
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 13 Mar 2016 00:36:59 +0000 (00:36 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 13 Mar 2016 00:36:59 +0000 (00:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=154718

Reviewed by Antti Koivisto.

.:

* Source/cmake/OptionsEfl.cmake:
* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

All the ports have adopted the SVG -> OTF Font Converter, so there will never
be an instantiation of a font backed by a DOM subtree. We can remove all the
infrastructure used to support that.

No new tests because there is no behavior change.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* WebCore.order:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::CSSFontFaceSource): Deleted.
(WebCore::CSSFontFaceSource::font): Deleted.
* css/CSSFontFaceSource.h:
* loader/cache/CachedFont.cpp:
* loader/cache/CachedSVGFont.cpp:
(WebCore::CachedSVGFont::createFont): Deleted.
(WebCore::CachedSVGFont::ensureCustomFontData): Deleted.
* loader/cache/CachedSVGFont.h:
* platform/graphics/Font.cpp:
(WebCore::Font::Font):
(WebCore::fillGlyphPage):
(WebCore::Font::description): Deleted.
(WebCore::Font::createScaledFont): Deleted.
(WebCore::Font::applyTransforms): Deleted.
* platform/graphics/Font.h:
(WebCore::Font::widthForGlyph):
(WebCore::Font::SVGData::~SVGData): Deleted.
(WebCore::Font::create): Deleted.
(WebCore::Font::svgData): Deleted.
(WebCore::Font::isSVGFont): Deleted.
* platform/graphics/win/FontWin.cpp:
* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::drawText):
(WebCore::FontCascade::drawEmphasisMarks):
(WebCore::FontCascade::glyphDataForCharacter):
(WebCore::FontCascade::adjustSelectionRectForText):
(WebCore::FontCascade::offsetForPosition):
(WebCore::FontCascade::drawEmphasisMarksForSimpleText):
(WebCore::FontCascade::drawGlyphBuffer):
(WebCore::isDrawnWithSVGFont): Deleted.
(WebCore::FontCascade::width): Deleted.
(WebCore::FontCascade::codePath): Deleted.
* platform/graphics/FontCascade.h:
* platform/graphics/GraphicsContext.h:
* platform/graphics/SVGGlyph.cpp: Removed.
(WebCore::processArabicFormDetection): Deleted.
(WebCore::charactersWithArabicForm): Deleted.
(WebCore::isCompatibleArabicForm): Deleted.
(WebCore::isCompatibleGlyph): Deleted.
* platform/graphics/SVGGlyph.h: Removed.
(WebCore::SVGGlyph::SVGGlyph): Deleted.
(WebCore::SVGGlyph::inheritedValue): Deleted.
(WebCore::SVGGlyph::operator==): Deleted.
* platform/graphics/TextRun.cpp:
* platform/graphics/TextRun.h:
(WebCore::TextRun::RenderingContext::~RenderingContext): Deleted.
(WebCore::TextRun::renderingContext): Deleted.
(WebCore::TextRun::setRenderingContext): Deleted.
* platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::applyFontTransforms):
(WebCore::WidthIterator::advanceInternal):
(WebCore::WidthIterator::glyphDataForCharacter): Deleted.
* platform/graphics/WidthIterator.h:
(WebCore::WidthIterator::lastGlyphName): Deleted.
(WebCore::WidthIterator::setLastGlyphName): Deleted.
(WebCore::WidthIterator::arabicForms): Deleted.
* platform/graphics/cairo/FontCairo.cpp:
(WebCore::CairoGlyphToPathTranslator::advance):
(WebCore::FontCascade::dashesForIntersectionsWithRect):
(WebCore::CairoGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
* platform/graphics/cocoa/FontCascadeCocoa.mm:
(WebCore::MacGlyphToPathTranslator::advance):
(WebCore::FontCascade::dashesForIntersectionsWithRect):
(WebCore::FontCascade::primaryFontIsSystemFont):
(WebCore::FontCascade::drawEmphasisMarksForComplexText):
(WebCore::MacGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
* platform/graphics/harfbuzz/HarfBuzzShaper.cpp:
(WebCore::HarfBuzzShaper::shapeHarfBuzzRuns): Deleted.
* platform/graphics/mac/ComplexTextController.cpp:
(WebCore::TextLayout::isNeeded):
(WebCore::TextLayout::TextLayout):
(WebCore::TextLayout::constructTextRun):
* rendering/EllipsisBox.cpp:
(WebCore::EllipsisBox::paint):
(WebCore::EllipsisBox::selectionRect):
(WebCore::EllipsisBox::paintSelection):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::localSelectionRect):
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::paintSelection):
(WebCore::InlineTextBox::paintCompositionBackground):
(WebCore::InlineTextBox::paintDocumentMarker):
(WebCore::InlineTextBox::paintTextMatchMarker):
(WebCore::InlineTextBox::offsetForPosition):
(WebCore::InlineTextBox::positionForOffset):
(WebCore::InlineTextBox::constructTextRun):
* rendering/InlineTextBox.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::constructTextRun):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::stripTrailingSpace):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::checkLinesForTextOverflow):
* rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
* rendering/RenderFileUploadControl.cpp:
(WebCore::RenderFileUploadControl::paintObject):
(WebCore::RenderFileUploadControl::computeIntrinsicLogicalWidths):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::setImageSizeForAltText):
(WebCore::RenderImage::paintReplaced):
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::updateFromElement):
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::getRelativeMarkerRect):
* rendering/RenderMenuList.cpp:
(RenderMenuList::updateOptionsWidth):
* rendering/RenderText.cpp:
(WebCore::RenderText::widthFromCache):
(WebCore::RenderText::trimmedPrefWidths):
(WebCore::hyphenWidth):
(WebCore::maxWordFragmentWidth):
(WebCore::RenderText::computePreferredLogicalWidths):
(WebCore::RenderText::width):
* rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::getAverageCharWidth):
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeMeasureTextClient::RenderThemeMeasureTextClient):
(WebCore::adjustInputElementButtonStyle):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForFontAndText): Deleted.
* rendering/line/BreakingContext.h:
(WebCore::WordTrailingSpace::WordTrailingSpace):
(WebCore::WordTrailingSpace::width):
(WebCore::measureHyphenWidth):
(WebCore::textWidth):
(WebCore::tryHyphenating):
(WebCore::BreakingContext::handleText):
* rendering/svg/RenderSVGAllInOne.cpp:
* rendering/svg/RenderSVGText.cpp:
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::prepareGraphicsContextForTextPainting):
(WebCore::SVGInlineTextBox::restoreGraphicsContextAfterTextPainting):
(WebCore::SVGInlineTextBox::paintTextWithShadows):
(WebCore::SVGInlineTextBox::constructTextRun): Deleted.
* rendering/svg/SVGInlineTextBox.h:
* rendering/svg/SVGTextLayoutEngine.cpp:
(WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath):
* rendering/svg/SVGTextLayoutEngineSpacing.cpp:
(WebCore::SVGTextLayoutEngineSpacing::calculateSVGKerning): Deleted.
* rendering/svg/SVGTextLayoutEngineSpacing.h:
* rendering/svg/SVGTextMetrics.cpp:
(WebCore::SVGTextMetrics::SVGTextMetrics):
(WebCore::SVGTextMetrics::constructTextRun): Deleted.
* rendering/svg/SVGTextMetrics.h:
* rendering/svg/SVGTextMetricsBuilder.cpp:
(WebCore::SVGTextMetricsBuilder::advanceSimpleText):
* rendering/svg/SVGTextRunRenderingContext.cpp: Removed.
(WebCore::svgFontAndFontFaceElementForFontData): Deleted.
(WebCore::SVGTextRunRenderingContext::floatWidthUsingSVGFont): Deleted.
(WebCore::SVGTextRunRenderingContext::applySVGKerning): Deleted.
(WebCore::SVGGlyphToPathTranslator::SVGGlyphToPathTranslator): Deleted.
(WebCore::SVGGlyphToPathTranslator::transform): Deleted.
(WebCore::SVGGlyphToPathTranslator::path): Deleted.
(WebCore::SVGGlyphToPathTranslator::extents): Deleted.
(WebCore::SVGGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
(WebCore::SVGGlyphToPathTranslator::advance): Deleted.
(WebCore::SVGTextRunRenderingContext::createGlyphToPathTranslator): Deleted.
(WebCore::SVGTextRunRenderingContext::drawSVGGlyphs): Deleted.
(WebCore::missingGlyphForFont): Deleted.
(WebCore::SVGTextRunRenderingContext::glyphDataForCharacter): Deleted.
* rendering/svg/SVGTextRunRenderingContext.h: Removed.
* svg/SVGAllInOne.cpp:
* svg/SVGFontData.cpp: Removed.
(WebCore::SVGFontData::SVGFontData): Deleted.
(WebCore::SVGFontData::initializeFont): Deleted.
(WebCore::SVGFontData::widthForSVGGlyph): Deleted.
(WebCore::SVGFontData::applySVGGlyphSelection): Deleted.
(WebCore::SVGFontData::fillSVGGlyphPage): Deleted.
(WebCore::SVGFontData::fillBMPGlyphs): Deleted.
(WebCore::SVGFontData::fillNonBMPGlyphs): Deleted.
(WebCore::computeNormalizedSpaces): Deleted.
(WebCore::createStringWithMirroredCharacters): Deleted.
* svg/SVGFontData.h: Removed.
(WebCore::SVGFontData::~SVGFontData): Deleted.
(WebCore::SVGFontData::svgFontFaceElement): Deleted.
(WebCore::SVGFontData::horizontalOriginX): Deleted.
(WebCore::SVGFontData::horizontalOriginY): Deleted.
(WebCore::SVGFontData::horizontalAdvanceX): Deleted.
(WebCore::SVGFontData::verticalOriginX): Deleted.
(WebCore::SVGFontData::verticalOriginY): Deleted.
(WebCore::SVGFontData::verticalAdvanceY): Deleted.
* svg/SVGFontElement.cpp:
(WebCore::SVGFontElement::SVGFontElement): Deleted.
(WebCore::SVGFontElement::invalidateGlyphCache): Deleted.
(WebCore::SVGFontElement::firstMissingGlyphElement): Deleted.
(WebCore::SVGFontElement::registerLigaturesInGlyphCache): Deleted.
(WebCore::SVGFontElement::ensureGlyphCache): Deleted.
(WebCore::SVGKerningMap::clear): Deleted.
(WebCore::SVGKerningMap::insert): Deleted.
(WebCore::stringMatchesUnicodeRange): Deleted.
(WebCore::stringMatchesGlyphName): Deleted.
(WebCore::stringMatchesUnicodeName): Deleted.
(WebCore::matches): Deleted.
(WebCore::kerningForPairOfStringsAndGlyphs): Deleted.
(WebCore::SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs): Deleted.
(WebCore::SVGFontElement::verticalKerningForPairOfStringsAndGlyphs): Deleted.
(WebCore::SVGFontElement::collectGlyphsForString): Deleted.
(WebCore::SVGFontElement::collectGlyphsForGlyphName): Deleted.
(WebCore::SVGFontElement::svgGlyphForGlyph): Deleted.
(WebCore::SVGFontElement::missingGlyph): Deleted.
* svg/SVGFontElement.h:
(WebCore::SVGKerning::SVGKerning): Deleted.
(WebCore::SVGKerningMap::isEmpty): Deleted.
* svg/SVGGlyphElement.cpp:
(WebCore::SVGGlyphElement::invalidateGlyphCache): Deleted.
(WebCore::SVGGlyphElement::parseAttribute): Deleted.
(WebCore::SVGGlyphElement::insertedInto): Deleted.
(WebCore::SVGGlyphElement::removedFrom): Deleted.
(WebCore::parseArabicForm): Deleted.
(WebCore::parseOrientation): Deleted.
(WebCore::SVGGlyphElement::inheritUnspecifiedAttributes): Deleted.
(WebCore::parseSVGGlyphAttribute): Deleted.
(WebCore::SVGGlyphElement::buildGenericGlyphIdentifier): Deleted.
(WebCore::SVGGlyphElement::buildGlyphIdentifier): Deleted.
* svg/SVGGlyphElement.h:
* svg/SVGGlyphMap.h: Removed.
(WebCore::GlyphMapNode::GlyphMapNode): Deleted.
(WebCore::GlyphMapNode::create): Deleted.
(WebCore::SVGGlyphMap::SVGGlyphMap): Deleted.
(WebCore::SVGGlyphMap::addGlyph): Deleted.
(WebCore::SVGGlyphMap::appendToGlyphTable): Deleted.
(WebCore::SVGGlyphMap::compareGlyphPriority): Deleted.
(WebCore::SVGGlyphMap::collectGlyphsForString): Deleted.
(WebCore::SVGGlyphMap::clear): Deleted.
(WebCore::SVGGlyphMap::svgGlyphForGlyph): Deleted.
(WebCore::SVGGlyphMap::glyphIdentifierForGlyphName): Deleted.
* svg/SVGHKernElement.cpp:
(WebCore::SVGHKernElement::insertedInto): Deleted.
(WebCore::SVGHKernElement::removedFrom): Deleted.
* svg/SVGHKernElement.h:
* svg/SVGToOTFFontConversion.cpp:
* svg/SVGToOTFFontConversion.h:
* svg/SVGVKernElement.cpp:
(WebCore::SVGVKernElement::insertedInto): Deleted.
(WebCore::SVGVKernElement::removedFrom): Deleted.
* svg/SVGVKernElement.h:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@198074 268f45cc-cd09-0410-ab3c-d52691b4dbfc

82 files changed:
ChangeLog
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/Configurations/FeatureDefines.xcconfig
Source/WebCore/WebCore.order
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/css/CSSFontFaceSource.cpp
Source/WebCore/css/CSSFontFaceSource.h
Source/WebCore/loader/cache/CachedFont.cpp
Source/WebCore/loader/cache/CachedSVGFont.cpp
Source/WebCore/loader/cache/CachedSVGFont.h
Source/WebCore/platform/graphics/Font.cpp
Source/WebCore/platform/graphics/Font.h
Source/WebCore/platform/graphics/FontCascade.cpp
Source/WebCore/platform/graphics/FontCascade.h
Source/WebCore/platform/graphics/GraphicsContext.h
Source/WebCore/platform/graphics/SVGGlyph.cpp [deleted file]
Source/WebCore/platform/graphics/SVGGlyph.h [deleted file]
Source/WebCore/platform/graphics/TextRun.cpp
Source/WebCore/platform/graphics/TextRun.h
Source/WebCore/platform/graphics/WidthIterator.cpp
Source/WebCore/platform/graphics/WidthIterator.h
Source/WebCore/platform/graphics/cairo/FontCairo.cpp
Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm
Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp
Source/WebCore/platform/graphics/mac/ComplexTextController.cpp
Source/WebCore/platform/graphics/win/FontWin.cpp
Source/WebCore/rendering/EllipsisBox.cpp
Source/WebCore/rendering/InlineTextBox.cpp
Source/WebCore/rendering/InlineTextBox.h
Source/WebCore/rendering/RenderBlock.cpp
Source/WebCore/rendering/RenderBlock.h
Source/WebCore/rendering/RenderBlockFlow.cpp
Source/WebCore/rendering/RenderBlockLineLayout.cpp
Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp
Source/WebCore/rendering/RenderFileUploadControl.cpp
Source/WebCore/rendering/RenderImage.cpp
Source/WebCore/rendering/RenderListBox.cpp
Source/WebCore/rendering/RenderListMarker.cpp
Source/WebCore/rendering/RenderMenuList.cpp
Source/WebCore/rendering/RenderText.cpp
Source/WebCore/rendering/RenderTextControl.cpp
Source/WebCore/rendering/RenderThemeIOS.mm
Source/WebCore/rendering/SimpleLineLayout.cpp
Source/WebCore/rendering/line/BreakingContext.h
Source/WebCore/rendering/svg/RenderSVGAllInOne.cpp
Source/WebCore/rendering/svg/RenderSVGText.cpp
Source/WebCore/rendering/svg/SVGInlineTextBox.cpp
Source/WebCore/rendering/svg/SVGInlineTextBox.h
Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp
Source/WebCore/rendering/svg/SVGTextLayoutEngineSpacing.cpp
Source/WebCore/rendering/svg/SVGTextLayoutEngineSpacing.h
Source/WebCore/rendering/svg/SVGTextMetrics.cpp
Source/WebCore/rendering/svg/SVGTextMetrics.h
Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp
Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp [deleted file]
Source/WebCore/rendering/svg/SVGTextRunRenderingContext.h [deleted file]
Source/WebCore/svg/SVGAllInOne.cpp
Source/WebCore/svg/SVGFontData.cpp [deleted file]
Source/WebCore/svg/SVGFontData.h [deleted file]
Source/WebCore/svg/SVGFontElement.cpp
Source/WebCore/svg/SVGFontElement.h
Source/WebCore/svg/SVGGlyphElement.cpp
Source/WebCore/svg/SVGGlyphElement.h
Source/WebCore/svg/SVGGlyphMap.h [deleted file]
Source/WebCore/svg/SVGHKernElement.cpp
Source/WebCore/svg/SVGHKernElement.h
Source/WebCore/svg/SVGToOTFFontConversion.cpp
Source/WebCore/svg/SVGToOTFFontConversion.h
Source/WebCore/svg/SVGVKernElement.cpp
Source/WebCore/svg/SVGVKernElement.h
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/Configurations/FeatureDefines.xcconfig
Source/WebKit2/ChangeLog
Source/WebKit2/Configurations/FeatureDefines.xcconfig
Source/cmake/OptionsEfl.cmake
Source/cmake/OptionsWin.cmake
Source/cmake/WebKitFeatures.cmake
Source/cmake/tools/vsprops/FeatureDefines.props
Source/cmake/tools/vsprops/FeatureDefinesCairo.props

index e61b0b8..c8dcdfc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Delete dead SVG Font code
+        https://bugs.webkit.org/show_bug.cgi?id=154718
+
+        Reviewed by Antti Koivisto.
+
+        * Source/cmake/OptionsEfl.cmake:
+        * Source/cmake/OptionsWin.cmake:
+        * Source/cmake/WebKitFeatures.cmake:
+        * Source/cmake/tools/vsprops/FeatureDefines.props:
+        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:
+
 2016-03-12  Jeremy Huddleston Sequoia  <jeremyhu@apple.com>
 
         [GTK][Mac] Don't force ENABLE_INTROSPECTION=OFF on Mac
index 3fcfdd8..023d994 100644 (file)
@@ -1,3 +1,12 @@
+2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Delete dead SVG Font code
+        https://bugs.webkit.org/show_bug.cgi?id=154718
+
+        Reviewed by Antti Koivisto.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2016-03-11  Benjamin Poulain  <bpoulain@apple.com>
 
         [JSC] Remove a few jumps from DFG
index a4e4633..dca0128 100644 (file)
@@ -151,7 +151,6 @@ ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
 ENABLE_STREAMS_API = ENABLE_STREAMS_API;
 ENABLE_SUBTLE_CRYPTO = ENABLE_SUBTLE_CRYPTO;
 ENABLE_SVG_FONTS = ENABLE_SVG_FONTS;
-ENABLE_SVG_OTF_CONVERTER = ENABLE_SVG_OTF_CONVERTER;
 
 ENABLE_TELEPHONE_NUMBER_DETECTION = ENABLE_TELEPHONE_NUMBER_DETECTION;
 
@@ -197,4 +196,4 @@ ENABLE_CUSTOM_ELEMENTS = ENABLE_CUSTOM_ELEMENTS;
 ENABLE_SEPARATED_WX_HEAP[sdk=iphone*] = ENABLE_SEPARATED_WX_HEAP;
 ENABLE_SEPARATED_WX_HEAP[sdk=macosx*] = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_OTF_CONVERTER) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
index 6dc58b2..978d40d 100644 (file)
@@ -2234,7 +2234,6 @@ set(WebCore_SOURCES
     platform/graphics/PlatformTimeRanges.cpp
     platform/graphics/Region.cpp
     platform/graphics/RoundedRect.cpp
-    platform/graphics/SVGGlyph.cpp
     platform/graphics/ShadowBlur.cpp
     platform/graphics/StringTruncator.cpp
     platform/graphics/SurrogatePairAwareTextIterator.cpp
@@ -2619,7 +2618,6 @@ set(WebCore_SOURCES
     rendering/svg/SVGTextMetrics.cpp
     rendering/svg/SVGTextMetricsBuilder.cpp
     rendering/svg/SVGTextQuery.cpp
-    rendering/svg/SVGTextRunRenderingContext.cpp
 
     replay/UserInputBridge.cpp
 
@@ -2713,7 +2711,6 @@ set(WebCore_SOURCES
     svg/SVGFilterElement.cpp
     svg/SVGFilterPrimitiveStandardAttributes.cpp
     svg/SVGFitToViewBox.cpp
-    svg/SVGFontData.cpp
     svg/SVGFontElement.cpp
     svg/SVGFontFaceElement.cpp
     svg/SVGFontFaceFormatElement.cpp
index 6f3f27f..6b05898 100644 (file)
@@ -1,5 +1,264 @@
 2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>
 
+        Delete dead SVG Font code
+        https://bugs.webkit.org/show_bug.cgi?id=154718
+
+        Reviewed by Antti Koivisto.
+
+        All the ports have adopted the SVG -> OTF Font Converter, so there will never
+        be an instantiation of a font backed by a DOM subtree. We can remove all the
+        infrastructure used to support that.
+
+        No new tests because there is no behavior change.
+
+        * CMakeLists.txt:
+        * Configurations/FeatureDefines.xcconfig:
+        * WebCore.order:
+        * WebCore.xcodeproj/project.pbxproj:
+        * css/CSSFontFaceSource.cpp:
+        (WebCore::CSSFontFaceSource::CSSFontFaceSource): Deleted.
+        (WebCore::CSSFontFaceSource::font): Deleted.
+        * css/CSSFontFaceSource.h:
+        * loader/cache/CachedFont.cpp:
+        * loader/cache/CachedSVGFont.cpp:
+        (WebCore::CachedSVGFont::createFont): Deleted.
+        (WebCore::CachedSVGFont::ensureCustomFontData): Deleted.
+        * loader/cache/CachedSVGFont.h:
+        * platform/graphics/Font.cpp:
+        (WebCore::Font::Font):
+        (WebCore::fillGlyphPage):
+        (WebCore::Font::description): Deleted.
+        (WebCore::Font::createScaledFont): Deleted.
+        (WebCore::Font::applyTransforms): Deleted.
+        * platform/graphics/Font.h:
+        (WebCore::Font::widthForGlyph):
+        (WebCore::Font::SVGData::~SVGData): Deleted.
+        (WebCore::Font::create): Deleted.
+        (WebCore::Font::svgData): Deleted.
+        (WebCore::Font::isSVGFont): Deleted.
+        * platform/graphics/win/FontWin.cpp:
+        * platform/graphics/FontCascade.cpp:
+        (WebCore::FontCascade::drawText):
+        (WebCore::FontCascade::drawEmphasisMarks):
+        (WebCore::FontCascade::glyphDataForCharacter):
+        (WebCore::FontCascade::adjustSelectionRectForText):
+        (WebCore::FontCascade::offsetForPosition):
+        (WebCore::FontCascade::drawEmphasisMarksForSimpleText):
+        (WebCore::FontCascade::drawGlyphBuffer):
+        (WebCore::isDrawnWithSVGFont): Deleted.
+        (WebCore::FontCascade::width): Deleted.
+        (WebCore::FontCascade::codePath): Deleted.
+        * platform/graphics/FontCascade.h:
+        * platform/graphics/GraphicsContext.h:
+        * platform/graphics/SVGGlyph.cpp: Removed.
+        (WebCore::processArabicFormDetection): Deleted.
+        (WebCore::charactersWithArabicForm): Deleted.
+        (WebCore::isCompatibleArabicForm): Deleted.
+        (WebCore::isCompatibleGlyph): Deleted.
+        * platform/graphics/SVGGlyph.h: Removed.
+        (WebCore::SVGGlyph::SVGGlyph): Deleted.
+        (WebCore::SVGGlyph::inheritedValue): Deleted.
+        (WebCore::SVGGlyph::operator==): Deleted.
+        * platform/graphics/TextRun.cpp:
+        * platform/graphics/TextRun.h:
+        (WebCore::TextRun::RenderingContext::~RenderingContext): Deleted.
+        (WebCore::TextRun::renderingContext): Deleted.
+        (WebCore::TextRun::setRenderingContext): Deleted.
+        * platform/graphics/WidthIterator.cpp:
+        (WebCore::WidthIterator::applyFontTransforms):
+        (WebCore::WidthIterator::advanceInternal):
+        (WebCore::WidthIterator::glyphDataForCharacter): Deleted.
+        * platform/graphics/WidthIterator.h:
+        (WebCore::WidthIterator::lastGlyphName): Deleted.
+        (WebCore::WidthIterator::setLastGlyphName): Deleted.
+        (WebCore::WidthIterator::arabicForms): Deleted.
+        * platform/graphics/cairo/FontCairo.cpp:
+        (WebCore::CairoGlyphToPathTranslator::advance):
+        (WebCore::FontCascade::dashesForIntersectionsWithRect):
+        (WebCore::CairoGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
+        * platform/graphics/cocoa/FontCascadeCocoa.mm:
+        (WebCore::MacGlyphToPathTranslator::advance):
+        (WebCore::FontCascade::dashesForIntersectionsWithRect):
+        (WebCore::FontCascade::primaryFontIsSystemFont):
+        (WebCore::FontCascade::drawEmphasisMarksForComplexText):
+        (WebCore::MacGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
+        * platform/graphics/harfbuzz/HarfBuzzShaper.cpp:
+        (WebCore::HarfBuzzShaper::shapeHarfBuzzRuns): Deleted.
+        * platform/graphics/mac/ComplexTextController.cpp:
+        (WebCore::TextLayout::isNeeded):
+        (WebCore::TextLayout::TextLayout):
+        (WebCore::TextLayout::constructTextRun):
+        * rendering/EllipsisBox.cpp:
+        (WebCore::EllipsisBox::paint):
+        (WebCore::EllipsisBox::selectionRect):
+        (WebCore::EllipsisBox::paintSelection):
+        * rendering/InlineTextBox.cpp:
+        (WebCore::InlineTextBox::localSelectionRect):
+        (WebCore::InlineTextBox::paint):
+        (WebCore::InlineTextBox::paintSelection):
+        (WebCore::InlineTextBox::paintCompositionBackground):
+        (WebCore::InlineTextBox::paintDocumentMarker):
+        (WebCore::InlineTextBox::paintTextMatchMarker):
+        (WebCore::InlineTextBox::offsetForPosition):
+        (WebCore::InlineTextBox::positionForOffset):
+        (WebCore::InlineTextBox::constructTextRun):
+        * rendering/InlineTextBox.h:
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::constructTextRun):
+        * rendering/RenderBlock.h:
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::stripTrailingSpace):
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlockFlow::checkLinesForTextOverflow):
+        * rendering/RenderDeprecatedFlexibleBox.cpp:
+        (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
+        * rendering/RenderFileUploadControl.cpp:
+        (WebCore::RenderFileUploadControl::paintObject):
+        (WebCore::RenderFileUploadControl::computeIntrinsicLogicalWidths):
+        * rendering/RenderImage.cpp:
+        (WebCore::RenderImage::setImageSizeForAltText):
+        (WebCore::RenderImage::paintReplaced):
+        * rendering/RenderListBox.cpp:
+        (WebCore::RenderListBox::updateFromElement):
+        * rendering/RenderListMarker.cpp:
+        (WebCore::RenderListMarker::paint):
+        (WebCore::RenderListMarker::computePreferredLogicalWidths):
+        (WebCore::RenderListMarker::getRelativeMarkerRect):
+        * rendering/RenderMenuList.cpp:
+        (RenderMenuList::updateOptionsWidth):
+        * rendering/RenderText.cpp:
+        (WebCore::RenderText::widthFromCache):
+        (WebCore::RenderText::trimmedPrefWidths):
+        (WebCore::hyphenWidth):
+        (WebCore::maxWordFragmentWidth):
+        (WebCore::RenderText::computePreferredLogicalWidths):
+        (WebCore::RenderText::width):
+        * rendering/RenderTextControl.cpp:
+        (WebCore::RenderTextControl::getAverageCharWidth):
+        * rendering/RenderThemeIOS.mm:
+        (WebCore::RenderThemeMeasureTextClient::RenderThemeMeasureTextClient):
+        (WebCore::adjustInputElementButtonStyle):
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::canUseForFontAndText): Deleted.
+        * rendering/line/BreakingContext.h:
+        (WebCore::WordTrailingSpace::WordTrailingSpace):
+        (WebCore::WordTrailingSpace::width):
+        (WebCore::measureHyphenWidth):
+        (WebCore::textWidth):
+        (WebCore::tryHyphenating):
+        (WebCore::BreakingContext::handleText):
+        * rendering/svg/RenderSVGAllInOne.cpp:
+        * rendering/svg/RenderSVGText.cpp:
+        * rendering/svg/SVGInlineTextBox.cpp:
+        (WebCore::SVGInlineTextBox::prepareGraphicsContextForTextPainting):
+        (WebCore::SVGInlineTextBox::restoreGraphicsContextAfterTextPainting):
+        (WebCore::SVGInlineTextBox::paintTextWithShadows):
+        (WebCore::SVGInlineTextBox::constructTextRun): Deleted.
+        * rendering/svg/SVGInlineTextBox.h:
+        * rendering/svg/SVGTextLayoutEngine.cpp:
+        (WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath):
+        * rendering/svg/SVGTextLayoutEngineSpacing.cpp:
+        (WebCore::SVGTextLayoutEngineSpacing::calculateSVGKerning): Deleted.
+        * rendering/svg/SVGTextLayoutEngineSpacing.h:
+        * rendering/svg/SVGTextMetrics.cpp:
+        (WebCore::SVGTextMetrics::SVGTextMetrics):
+        (WebCore::SVGTextMetrics::constructTextRun): Deleted.
+        * rendering/svg/SVGTextMetrics.h:
+        * rendering/svg/SVGTextMetricsBuilder.cpp:
+        (WebCore::SVGTextMetricsBuilder::advanceSimpleText):
+        * rendering/svg/SVGTextRunRenderingContext.cpp: Removed.
+        (WebCore::svgFontAndFontFaceElementForFontData): Deleted.
+        (WebCore::SVGTextRunRenderingContext::floatWidthUsingSVGFont): Deleted.
+        (WebCore::SVGTextRunRenderingContext::applySVGKerning): Deleted.
+        (WebCore::SVGGlyphToPathTranslator::SVGGlyphToPathTranslator): Deleted.
+        (WebCore::SVGGlyphToPathTranslator::transform): Deleted.
+        (WebCore::SVGGlyphToPathTranslator::path): Deleted.
+        (WebCore::SVGGlyphToPathTranslator::extents): Deleted.
+        (WebCore::SVGGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
+        (WebCore::SVGGlyphToPathTranslator::advance): Deleted.
+        (WebCore::SVGTextRunRenderingContext::createGlyphToPathTranslator): Deleted.
+        (WebCore::SVGTextRunRenderingContext::drawSVGGlyphs): Deleted.
+        (WebCore::missingGlyphForFont): Deleted.
+        (WebCore::SVGTextRunRenderingContext::glyphDataForCharacter): Deleted.
+        * rendering/svg/SVGTextRunRenderingContext.h: Removed.
+        * svg/SVGAllInOne.cpp:
+        * svg/SVGFontData.cpp: Removed.
+        (WebCore::SVGFontData::SVGFontData): Deleted.
+        (WebCore::SVGFontData::initializeFont): Deleted.
+        (WebCore::SVGFontData::widthForSVGGlyph): Deleted.
+        (WebCore::SVGFontData::applySVGGlyphSelection): Deleted.
+        (WebCore::SVGFontData::fillSVGGlyphPage): Deleted.
+        (WebCore::SVGFontData::fillBMPGlyphs): Deleted.
+        (WebCore::SVGFontData::fillNonBMPGlyphs): Deleted.
+        (WebCore::computeNormalizedSpaces): Deleted.
+        (WebCore::createStringWithMirroredCharacters): Deleted.
+        * svg/SVGFontData.h: Removed.
+        (WebCore::SVGFontData::~SVGFontData): Deleted.
+        (WebCore::SVGFontData::svgFontFaceElement): Deleted.
+        (WebCore::SVGFontData::horizontalOriginX): Deleted.
+        (WebCore::SVGFontData::horizontalOriginY): Deleted.
+        (WebCore::SVGFontData::horizontalAdvanceX): Deleted.
+        (WebCore::SVGFontData::verticalOriginX): Deleted.
+        (WebCore::SVGFontData::verticalOriginY): Deleted.
+        (WebCore::SVGFontData::verticalAdvanceY): Deleted.
+        * svg/SVGFontElement.cpp:
+        (WebCore::SVGFontElement::SVGFontElement): Deleted.
+        (WebCore::SVGFontElement::invalidateGlyphCache): Deleted.
+        (WebCore::SVGFontElement::firstMissingGlyphElement): Deleted.
+        (WebCore::SVGFontElement::registerLigaturesInGlyphCache): Deleted.
+        (WebCore::SVGFontElement::ensureGlyphCache): Deleted.
+        (WebCore::SVGKerningMap::clear): Deleted.
+        (WebCore::SVGKerningMap::insert): Deleted.
+        (WebCore::stringMatchesUnicodeRange): Deleted.
+        (WebCore::stringMatchesGlyphName): Deleted.
+        (WebCore::stringMatchesUnicodeName): Deleted.
+        (WebCore::matches): Deleted.
+        (WebCore::kerningForPairOfStringsAndGlyphs): Deleted.
+        (WebCore::SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs): Deleted.
+        (WebCore::SVGFontElement::verticalKerningForPairOfStringsAndGlyphs): Deleted.
+        (WebCore::SVGFontElement::collectGlyphsForString): Deleted.
+        (WebCore::SVGFontElement::collectGlyphsForGlyphName): Deleted.
+        (WebCore::SVGFontElement::svgGlyphForGlyph): Deleted.
+        (WebCore::SVGFontElement::missingGlyph): Deleted.
+        * svg/SVGFontElement.h:
+        (WebCore::SVGKerning::SVGKerning): Deleted.
+        (WebCore::SVGKerningMap::isEmpty): Deleted.
+        * svg/SVGGlyphElement.cpp:
+        (WebCore::SVGGlyphElement::invalidateGlyphCache): Deleted.
+        (WebCore::SVGGlyphElement::parseAttribute): Deleted.
+        (WebCore::SVGGlyphElement::insertedInto): Deleted.
+        (WebCore::SVGGlyphElement::removedFrom): Deleted.
+        (WebCore::parseArabicForm): Deleted.
+        (WebCore::parseOrientation): Deleted.
+        (WebCore::SVGGlyphElement::inheritUnspecifiedAttributes): Deleted.
+        (WebCore::parseSVGGlyphAttribute): Deleted.
+        (WebCore::SVGGlyphElement::buildGenericGlyphIdentifier): Deleted.
+        (WebCore::SVGGlyphElement::buildGlyphIdentifier): Deleted.
+        * svg/SVGGlyphElement.h:
+        * svg/SVGGlyphMap.h: Removed.
+        (WebCore::GlyphMapNode::GlyphMapNode): Deleted.
+        (WebCore::GlyphMapNode::create): Deleted.
+        (WebCore::SVGGlyphMap::SVGGlyphMap): Deleted.
+        (WebCore::SVGGlyphMap::addGlyph): Deleted.
+        (WebCore::SVGGlyphMap::appendToGlyphTable): Deleted.
+        (WebCore::SVGGlyphMap::compareGlyphPriority): Deleted.
+        (WebCore::SVGGlyphMap::collectGlyphsForString): Deleted.
+        (WebCore::SVGGlyphMap::clear): Deleted.
+        (WebCore::SVGGlyphMap::svgGlyphForGlyph): Deleted.
+        (WebCore::SVGGlyphMap::glyphIdentifierForGlyphName): Deleted.
+        * svg/SVGHKernElement.cpp:
+        (WebCore::SVGHKernElement::insertedInto): Deleted.
+        (WebCore::SVGHKernElement::removedFrom): Deleted.
+        * svg/SVGHKernElement.h:
+        * svg/SVGToOTFFontConversion.cpp:
+        * svg/SVGToOTFFontConversion.h:
+        * svg/SVGVKernElement.cpp:
+        (WebCore::SVGVKernElement::insertedInto): Deleted.
+        (WebCore::SVGVKernElement::removedFrom): Deleted.
+        * svg/SVGVKernElement.h:
+
+2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>
+
         [OS X] Scrollbars of overflow:scroll divs should appear on the left on RTL systems
         https://bugs.webkit.org/show_bug.cgi?id=155385
 
index a4e4633..dca0128 100644 (file)
@@ -151,7 +151,6 @@ ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
 ENABLE_STREAMS_API = ENABLE_STREAMS_API;
 ENABLE_SUBTLE_CRYPTO = ENABLE_SUBTLE_CRYPTO;
 ENABLE_SVG_FONTS = ENABLE_SVG_FONTS;
-ENABLE_SVG_OTF_CONVERTER = ENABLE_SVG_OTF_CONVERTER;
 
 ENABLE_TELEPHONE_NUMBER_DETECTION = ENABLE_TELEPHONE_NUMBER_DETECTION;
 
@@ -197,4 +196,4 @@ ENABLE_CUSTOM_ELEMENTS = ENABLE_CUSTOM_ELEMENTS;
 ENABLE_SEPARATED_WX_HEAP[sdk=iphone*] = ENABLE_SEPARATED_WX_HEAP;
 ENABLE_SEPARATED_WX_HEAP[sdk=macosx*] = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_OTF_CONVERTER) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
index bedf194..b86e737 100644 (file)
@@ -18220,7 +18220,6 @@ __ZN7WebCore11JSDOMWindow19getOwnPropertyNamesEPN3JSC8JSObjectEPNS1_9ExecStateER
 __ZN7WebCore9DOMWindow18canShowModalDialogEPKNS_5FrameE
 __ZNK7WebCore6Chrome11canRunModalEv
 __ZN7WebCore31jsXMLHttpRequestWithCredentialsEPN3JSC9ExecStateENS0_7JSValueENS0_12PropertyNameE
-__ZN7WebCore10CachedFont17ensureSVGFontDataEv
 __ZN7WebCore8Document16setXMLStandaloneEbRi
 __ZN7WebCoreL19metadataConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
 __ZN7WebCore18SVGMetadataElement6createERKNS_13QualifiedNameEPNS_8DocumentE
@@ -18262,7 +18261,6 @@ __ZN7WebCore23RenderFileUploadControlD0Ev
 __ZN7WebCore10JSLocation19getOwnPropertyNamesEPN3JSC8JSObjectEPNS1_9ExecStateERNS1_17PropertyNameArrayENS1_15EnumerationModeE
 __ZN3JSC18getStaticValueSlotIN7WebCore15JSDOMStringListENS1_12JSDOMWrapperEEEbPNS_9ExecStateEPKNS_9HashTableEPT_NS_12PropertyNameERNS_12PropertySlotE
 __ZN7WebCore24JSDOMStringListPrototype18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE
-__ZN7WebCore11SVGFontDataC1EPNS_18SVGFontFaceElementE
 __ZNK7WebCore18SVGFontFaceElement17horizontalOriginXEv
 __ZNK7WebCore18SVGFontFaceElement17horizontalOriginYEv
 __ZNK7WebCore18SVGFontFaceElement18horizontalAdvanceXEv
@@ -18271,19 +18269,16 @@ __ZNK7WebCore18SVGFontFaceElement15verticalOriginYEv
 __ZNK7WebCore18SVGFontFaceElement6ascentEv
 __ZNK7WebCore18SVGFontFaceElement16verticalAdvanceYEv
 __ZN7WebCore14SimpleFontDataC1EN3WTF10PassOwnPtrINS0_18AdditionalFontDataEEEfbb
-__ZN7WebCore11SVGFontData18initializeFontDataEPNS_14SimpleFontDataEf
 __ZNK7WebCore18SVGFontFaceElement21associatedFontElementEv
 __ZN7WebCore14SVGFontElement12missingGlyphEv
 __ZN7WebCore14SVGFontElement16ensureGlyphCacheEv
 __ZNK7WebCore15SVGGlyphElement20buildGlyphIdentifierEv
 __ZN7WebCore15SVGGlyphElement27buildGenericGlyphIdentifierEPKNS_10SVGElementE
 __ZN7WebCore19buildPathFromStringERKN3WTF6StringERNS_4PathE
-__ZN7WebCore11SVGGlyphMap8addGlyphERKN3WTF6StringES4_NS_8SVGGlyphE
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm0ENS_15CrashOnOverflowEE14appendSlowCaseIS2_EEvRKT_
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm0ENS_15CrashOnOverflowEE14expandCapacityEmPKS2_
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm0ENS_15CrashOnOverflowEE15reserveCapacityEm
 __ZN3WTF20VectorTypeOperationsIN7WebCore8SVGGlyphEE4moveEPKS2_S5_PS2_
-__ZN7WebCore11SVGGlyphMap18appendToGlyphTableERNS_8SVGGlyphE
 __ZN7WebCore13SVGPathParser28parseCurveToQuadraticSegmentEv
 __ZN7WebCore19SVGPathStringSource28parseCurveToQuadraticSegmentERNS_10FloatPointES2_
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm256ENS_15CrashOnOverflowEE14appendSlowCaseIS2_EEvRKT_
@@ -18292,25 +18287,15 @@ __ZN3WTF6VectorIN7WebCore8SVGGlyphELm256ENS_15CrashOnOverflowEE15reserveCapacity
 __ZNK7WebCore18SVGFontFaceElement10unitsPerEmEv
 __ZNK7WebCore18SVGFontFaceElement7xHeightEv
 __ZNK7WebCore18SVGFontFaceElement7descentEv
-__ZNK7WebCore11SVGFontData16fillSVGGlyphPageEPNS_9GlyphPageEjjPtjPKNS_14SimpleFontDataE
-__ZNK7WebCore11SVGFontData13fillBMPGlyphsEPNS_14SVGFontElementEPNS_9GlyphPageEjjPtPKNS_14SimpleFontDataE
 __ZN7WebCore14SVGFontElement22collectGlyphsForStringERKN3WTF6StringERNS1_6VectorINS_8SVGGlyphELm0ENS1_15CrashOnOverflowEEE
-__ZN7WebCore11SVGGlyphMap22collectGlyphsForStringERKN3WTF6StringERNS1_6VectorINS_8SVGGlyphELm0ENS1_15CrashOnOverflowEEE
 __ZNSt3__16__sortIRPFbRKN7WebCore8SVGGlyphES4_EPS2_EEvT0_S9_T_
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm0ENS_15CrashOnOverflowEE6appendIS2_EEvPKT_m
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm0ENS_15CrashOnOverflowEE14shrinkCapacityEm
 __ZN3WTF6VectorIN7WebCore8SVGGlyphELm0ENS_15CrashOnOverflowEED1Ev
-__ZNK7WebCore11SVGFontData16widthForSVGGlyphEtf
 __ZN7WebCore14SVGFontElement16svgGlyphForGlyphEt
-__ZNK7WebCore11SVGGlyphMap16svgGlyphForGlyphEt
-__ZN7WebCore15SVGGlyphElement28inheritUnspecifiedAttributesERNS_8SVGGlyphEPKNS_11SVGFontDataE
-__ZN7WebCore26SVGTextRunRenderingContext21glyphDataForCharacterERKNS_4FontERKNS_7TextRunERNS_13WidthIteratorEibiRj
-__ZNK7WebCore11SVGFontData22applySVGGlyphSelectionERNS_13WidthIteratorERNS_9GlyphDataEbiRj
 __ZN7WebCore4Font15normalizeSpacesEPKtj
 __ZN7WebCore24charactersWithArabicFormERKN3WTF6StringEb
 __ZN7WebCore17isCompatibleGlyphERKNS_8SVGGlyphEbRKN3WTF6StringERKNS3_6VectorINS0_10ArabicFormELm0ENS3_15CrashOnOverflowEEEjj
-__ZN7WebCore26SVGTextRunRenderingContextD0Ev
-__ZNK7WebCore26SVGTextRunRenderingContext13drawSVGGlyphsEPNS_15GraphicsContextERKNS_7TextRunEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
 __ZNK7WebCore11RenderLayer36convertFromContainingViewToScrollbarEPKNS_9ScrollbarERKNS_8IntPointE
 __ZN7WebCore34jsDOMWindowFloat32ArrayConstructorEPN3JSC9ExecStateENS0_7JSValueENS0_12PropertyNameE
 __ZN7WebCore14JSFloat32Array14getConstructorEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
@@ -23452,7 +23437,6 @@ __ZTVN7WebCore16SVGInlineTextBoxE
 __ZTVN7WebCore16SVGInlineFlowBoxE
 __ZTVN7WebCore16SVGRootInlineBoxE
 __ZTVN7WebCore32RenderSVGResourceFilterPrimitiveE
-__ZTVN7WebCore26SVGTextRunRenderingContextE
 __ZTVN7WebCore11RenderTableE
 __ZTVN7WebCore18RenderTableCaptionE
 __ZTVN7WebCore15RenderTableCellE
@@ -23635,7 +23619,6 @@ __ZTVN7WebCore22SVGFETurbulenceElementE
 __ZTVN7WebCore9SVGFilterE
 __ZTVN7WebCore16SVGFilterElementE
 __ZTVN7WebCore36SVGFilterPrimitiveStandardAttributesE
-__ZTVN7WebCore11SVGFontDataE
 __ZTVN7WebCore18SVGFontFaceElementE
 __ZTVN7WebCore24SVGFontFaceFormatElementE
 __ZTVN7WebCore21SVGFontFaceSrcElementE
@@ -26294,8 +26277,6 @@ __ZTVN7WebCore17SVGFEFuncAElementE
 __ZTVN7WebCore17SVGFEFuncBElementE
 __ZTVN7WebCore17SVGFEFuncGElementE
 __ZTVN7WebCore17SVGFEFuncRElementE
-__ZZNK7WebCore11SVGGlyphMap16svgGlyphForGlyphEtE12defaultGlyph
-__ZGVZNK7WebCore11SVGGlyphMap16svgGlyphForGlyphEtE12defaultGlyph
 __ZTVN7WebCore14SVGFontElementE
 __ZTVN7WebCore22SVGFontFaceNameElementE
 __ZTVN7WebCore28SVGExternalResourcesRequiredE
index 0307ba3..cc82b8d 100644 (file)
                085A15931289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 085A15921289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h */; };
                085B92BA0EFDE73D00E6123C /* FormDataBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 085B92B80EFDE73D00E6123C /* FormDataBuilder.cpp */; };
                085B92BB0EFDE73D00E6123C /* FormDataBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 085B92B90EFDE73D00E6123C /* FormDataBuilder.h */; settings = {ATTRIBUTES = (); }; };
-               085CD275138BB8E000907F2D /* SVGTextRunRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 085CD274138BB8E000907F2D /* SVGTextRunRenderingContext.h */; };
                0863951613B5FE5700BB344D /* SVGAnimatedPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 0863951413B5FE5700BB344D /* SVGAnimatedPath.h */; };
                08641D4712142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08641D4512142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp */; };
                08641D4812142F7D008DE9F6 /* RenderImageResourceStyleImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 08641D4612142F7D008DE9F6 /* RenderImageResourceStyleImage.h */; settings = {ATTRIBUTES = (Private, ); }; };
                087558C513B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 087558C313B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp */; };
                087558C613B4A57D00F49307 /* SurrogatePairAwareTextIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 087558C413B4A57D00F49307 /* SurrogatePairAwareTextIterator.h */; settings = {ATTRIBUTES = (Private, ); }; };
                087B84961272CEC800A14417 /* SVGAnimatedAngle.h in Headers */ = {isa = PBXBuildFile; fileRef = 087B84951272CEC700A14417 /* SVGAnimatedAngle.h */; };
-               087E0AF613606D0B00FA4BA8 /* SVGGlyph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 087E0AF413606D0B00FA4BA8 /* SVGGlyph.cpp */; };
-               087E0AF713606D0B00FA4BA8 /* SVGGlyph.h in Headers */ = {isa = PBXBuildFile; fileRef = 087E0AF513606D0B00FA4BA8 /* SVGGlyph.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0880F70E1282B46D00948505 /* SVGStaticListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 0880F70D1282B46D00948505 /* SVGStaticListPropertyTearOff.h */; };
                0885067F11DA045B00182B98 /* PaintInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0885067D11DA045B00182B98 /* PaintInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0885068011DA045B00182B98 /* PaintPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0885067E11DA045B00182B98 /* PaintPhase.h */; settings = {ATTRIBUTES = (Private, ); }; };
                372ADA3B197F687600FC501E /* ProtectionSpaceCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 372ADA39197F687600FC501E /* ProtectionSpaceCocoa.mm */; };
                372C00C4129611F1005C9575 /* TextBoundaries.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 372C00C3129611F1005C9575 /* TextBoundaries.cpp */; };
                372C00D9129619F8005C9575 /* FindOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 372C00D8129619F8005C9575 /* FindOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               3744570F0DB05FA500AE0992 /* SVGGlyphMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */; };
                375CD232119D43C800A2A859 /* Hyphenation.h in Headers */ = {isa = PBXBuildFile; fileRef = 375CD231119D43C800A2A859 /* Hyphenation.h */; };
                376DCCE113B4F966002EBEFC /* TextRun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 376DCCE013B4F966002EBEFC /* TextRun.cpp */; };
                3774ABA50FA21EB400AD7DE9 /* OverlapTestRequestClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 3774ABA30FA21EB400AD7DE9 /* OverlapTestRequestClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
                B22362290C3AF04A0008CA9B /* JSSVGTextPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22362270C3AF04A0008CA9B /* JSSVGTextPathElement.h */; };
                B23540F20D00782E002382FA /* StringTruncator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B23540F00D00782E002382FA /* StringTruncator.cpp */; };
                B23540F30D00782E002382FA /* StringTruncator.h in Headers */ = {isa = PBXBuildFile; fileRef = B23540F10D00782E002382FA /* StringTruncator.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B237C8A50D344D110013F707 /* SVGFontData.cpp */; };
-               B237C8A80D344D110013F707 /* SVGFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = B237C8A60D344D110013F707 /* SVGFontData.h */; };
                B25599840D00D8BA00BB825C /* SVGFEImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B25598EA0D00D8B900BB825C /* SVGFEImage.cpp */; };
                B25599850D00D8BA00BB825C /* SVGFEImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B25598EB0D00D8B900BB825C /* SVGFEImage.h */; };
                B25599A30D00D8BA00BB825C /* SVGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B255990B0D00D8B900BB825C /* SVGImage.cpp */; };
                085A15921289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedTransformListPropertyTearOff.h; sourceTree = "<group>"; };
                085B92B80EFDE73D00E6123C /* FormDataBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormDataBuilder.cpp; sourceTree = "<group>"; };
                085B92B90EFDE73D00E6123C /* FormDataBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormDataBuilder.h; sourceTree = "<group>"; };
-               085CD274138BB8E000907F2D /* SVGTextRunRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextRunRenderingContext.h; sourceTree = "<group>"; };
                0863951313B5FE5700BB344D /* SVGAnimatedPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedPath.cpp; sourceTree = "<group>"; };
                0863951413B5FE5700BB344D /* SVGAnimatedPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPath.h; sourceTree = "<group>"; };
                08641D4512142F7D008DE9F6 /* RenderImageResourceStyleImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderImageResourceStyleImage.cpp; sourceTree = "<group>"; };
                087558C313B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SurrogatePairAwareTextIterator.cpp; sourceTree = "<group>"; };
                087558C413B4A57D00F49307 /* SurrogatePairAwareTextIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SurrogatePairAwareTextIterator.h; sourceTree = "<group>"; };
                087B84951272CEC700A14417 /* SVGAnimatedAngle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedAngle.h; sourceTree = "<group>"; };
-               087E0AF413606D0B00FA4BA8 /* SVGGlyph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGlyph.cpp; sourceTree = "<group>"; };
-               087E0AF513606D0B00FA4BA8 /* SVGGlyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGGlyph.h; sourceTree = "<group>"; };
                0880F70D1282B46D00948505 /* SVGStaticListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGStaticListPropertyTearOff.h; sourceTree = "<group>"; };
                0885067D11DA045B00182B98 /* PaintInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaintInfo.h; sourceTree = "<group>"; };
                0885067E11DA045B00182B98 /* PaintPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaintPhase.h; sourceTree = "<group>"; };
                08C925170FCC7C4A00480DEC /* FilterEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FilterEffect.cpp; sourceTree = "<group>"; };
                08C925180FCC7C4A00480DEC /* FilterEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FilterEffect.h; sourceTree = "<group>"; };
                08CA3D4312894A3800FFF260 /* SVGMatrixTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGMatrixTearOff.h; sourceTree = "<group>"; };
-               08D29440138669E40097C89B /* SVGTextRunRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextRunRenderingContext.cpp; sourceTree = "<group>"; };
                08D46CE2127AD5FC0089694B /* SVGAnimatedEnumeration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedEnumeration.h; sourceTree = "<group>"; };
                08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLengthCustom.cpp; sourceTree = "<group>"; };
                08EDE19E12A50B8E00B95797 /* SVGRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGRect.h; sourceTree = "<group>"; };
                372ADA39197F687600FC501E /* ProtectionSpaceCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ProtectionSpaceCocoa.mm; sourceTree = "<group>"; };
                372C00C3129611F1005C9575 /* TextBoundaries.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBoundaries.cpp; sourceTree = "<group>"; };
                372C00D8129619F8005C9575 /* FindOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindOptions.h; sourceTree = "<group>"; };
-               3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGGlyphMap.h; sourceTree = "<group>"; };
                37569E0013AF172C00CDBA8E /* SharedBufferChunkReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedBufferChunkReader.cpp; sourceTree = "<group>"; };
                37569E0213AF172C00CDBA8E /* SharedBufferChunkReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedBufferChunkReader.h; sourceTree = "<group>"; };
                375CD231119D43C800A2A859 /* Hyphenation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hyphenation.h; sourceTree = "<group>"; };
                B22362270C3AF04A0008CA9B /* JSSVGTextPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGTextPathElement.h; sourceTree = "<group>"; };
                B23540F00D00782E002382FA /* StringTruncator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StringTruncator.cpp; sourceTree = "<group>"; };
                B23540F10D00782E002382FA /* StringTruncator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StringTruncator.h; sourceTree = "<group>"; };
-               B237C8A50D344D110013F707 /* SVGFontData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontData.cpp; sourceTree = "<group>"; };
-               B237C8A60D344D110013F707 /* SVGFontData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontData.h; sourceTree = "<group>"; };
                B25598EA0D00D8B900BB825C /* SVGFEImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFEImage.cpp; sourceTree = "<group>"; };
                B25598EB0D00D8B900BB825C /* SVGFEImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFEImage.h; sourceTree = "<group>"; };
                B255990B0D00D8B900BB825C /* SVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImage.cpp; sourceTree = "<group>"; };
                                7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */,
                                0854B0121255E4E600B9CDD0 /* SVGTextQuery.cpp */,
                                0854B0131255E4E600B9CDD0 /* SVGTextQuery.h */,
-                               08D29440138669E40097C89B /* SVGTextRunRenderingContext.cpp */,
-                               085CD274138BB8E000907F2D /* SVGTextRunRenderingContext.h */,
                        );
                        path = svg;
                        sourceTree = "<group>";
                                B222787B0D00BF200071B782 /* SVGFitToViewBox.cpp */,
                                B222787C0D00BF200071B782 /* SVGFitToViewBox.h */,
                                B222787D0D00BF200071B782 /* SVGFitToViewBox.idl */,
-                               B237C8A50D344D110013F707 /* SVGFontData.cpp */,
-                               B237C8A60D344D110013F707 /* SVGFontData.h */,
                                B2A1F2A10CEF0ABF00442F6A /* SVGFontElement.cpp */,
                                B2A1F2A20CEF0ABF00442F6A /* SVGFontElement.h */,
                                B2A1F2A30CEF0ABF00442F6A /* SVGFontElement.idl */,
                                B2A1F2A40CEF0ABF00442F6A /* SVGGlyphElement.cpp */,
                                B2A1F2A50CEF0ABF00442F6A /* SVGGlyphElement.h */,
                                B2A1F2A60CEF0ABF00442F6A /* SVGGlyphElement.idl */,
-                               3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */,
                                24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */,
                                24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */,
                                24D912BC13CA9A9700D21915 /* SVGGlyphRefElement.idl */,
                                849F77750EFEC6200090849D /* StrokeStyleApplier.h */,
                                087558C313B4A57D00F49307 /* SurrogatePairAwareTextIterator.cpp */,
                                087558C413B4A57D00F49307 /* SurrogatePairAwareTextIterator.h */,
-                               087E0AF413606D0B00FA4BA8 /* SVGGlyph.cpp */,
-                               087E0AF513606D0B00FA4BA8 /* SVGGlyph.h */,
                                376DCCE013B4F966002EBEFC /* TextRun.cpp */,
                                A824B4640E2EF2EA0081A7B7 /* TextRun.h */,
                                CD1E7346167BC78E009A885D /* TextTrackRepresentation.cpp */,
                                B2227A0C0D00BF220071B782 /* SVGFilterElement.h in Headers */,
                                B2227A0F0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.h in Headers */,
                                B2227A120D00BF220071B782 /* SVGFitToViewBox.h in Headers */,
-                               B237C8A80D344D110013F707 /* SVGFontData.h in Headers */,
                                B2A1F2AB0CEF0ABF00442F6A /* SVGFontElement.h in Headers */,
                                B2227A150D00BF220071B782 /* SVGFontFaceElement.h in Headers */,
                                B2227A180D00BF220071B782 /* SVGFontFaceFormatElement.h in Headers */,
                                B2227A210D00BF220071B782 /* SVGFontFaceUriElement.h in Headers */,
                                B2227A240D00BF220071B782 /* SVGForeignObjectElement.h in Headers */,
                                B2227A270D00BF220071B782 /* SVGGElement.h in Headers */,
-                               087E0AF713606D0B00FA4BA8 /* SVGGlyph.h in Headers */,
                                B2A1F2AE0CEF0ABF00442F6A /* SVGGlyphElement.h in Headers */,
-                               3744570F0DB05FA500AE0992 /* SVGGlyphMap.h in Headers */,
                                24D912BE13CA9A9700D21915 /* SVGGlyphRefElement.h in Headers */,
                                B2227A2A0D00BF220071B782 /* SVGGradientElement.h in Headers */,
                                B2227AB60D00BF220071B782 /* SVGGraphicsElement.h in Headers */,
                                B2227ACE0D00BF220071B782 /* SVGTextPathElement.h in Headers */,
                                B2227AD10D00BF220071B782 /* SVGTextPositioningElement.h in Headers */,
                                0854B0251255E4E600B9CDD0 /* SVGTextQuery.h in Headers */,
-                               085CD275138BB8E000907F2D /* SVGTextRunRenderingContext.h in Headers */,
                                B2227AD40D00BF220071B782 /* SVGTitleElement.h in Headers */,
                                1CCDF5BE1990332400BCEBAD /* SVGToOTFFontConversion.h in Headers */,
                                B2227AD70D00BF220071B782 /* SVGTransform.h in Headers */,
                                B2227A0B0D00BF220071B782 /* SVGFilterElement.cpp in Sources */,
                                B2227A0E0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.cpp in Sources */,
                                B2227A110D00BF220071B782 /* SVGFitToViewBox.cpp in Sources */,
-                               B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */,
                                B2A1F2AA0CEF0ABF00442F6A /* SVGFontElement.cpp in Sources */,
                                B2227A140D00BF220071B782 /* SVGFontFaceElement.cpp in Sources */,
                                B2227A170D00BF220071B782 /* SVGFontFaceFormatElement.cpp in Sources */,
                                B2227A200D00BF220071B782 /* SVGFontFaceUriElement.cpp in Sources */,
                                B2227A230D00BF220071B782 /* SVGForeignObjectElement.cpp in Sources */,
                                B2227A260D00BF220071B782 /* SVGGElement.cpp in Sources */,
-                               087E0AF613606D0B00FA4BA8 /* SVGGlyph.cpp in Sources */,
                                B2A1F2AD0CEF0ABF00442F6A /* SVGGlyphElement.cpp in Sources */,
                                24D912BD13CA9A9700D21915 /* SVGGlyphRefElement.cpp in Sources */,
                                B2227A290D00BF220071B782 /* SVGGradientElement.cpp in Sources */,
index cf5b24f..d402231 100644 (file)
 #include "FontCache.h"
 #include "FontDescription.h"
 
-#if ENABLE(SVG_OTF_CONVERTER)
 #include "FontCustomPlatformData.h"
 #include "SVGToOTFFontConversion.h"
-#endif
 
 #if ENABLE(SVG_FONTS)
 #include "CachedSVGFont.h"
 #include "FontCustomPlatformData.h"
-#include "SVGFontData.h"
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
 #include "SVGNames.h"
@@ -76,14 +73,8 @@ CSSFontFaceSource::CSSFontFaceSource(CSSFontFace& owner, const String& familyNam
     : m_familyNameOrURI(familyNameOrURI)
     , m_font(font)
     , m_face(owner)
-#if ENABLE(SVG_FONTS) || ENABLE(SVG_OTF_CONVERTER)
     , m_svgFontFaceElement(fontFace)
-#endif
 {
-#if !(ENABLE(SVG_FONTS) || ENABLE(SVG_OTF_CONVERTER))
-    UNUSED_PARAM(fontFace);
-#endif
-
     // This may synchronously call fontLoaded().
     if (m_font)
         m_font->addClient(this);
@@ -157,7 +148,6 @@ RefPtr<Font> CSSFontFaceSource::font(const FontDescription& fontDescription, boo
         return nullptr;
 
 #if ENABLE(SVG_FONTS)
-#if ENABLE(SVG_OTF_CONVERTER)
     if (!is<SVGFontElement>(m_svgFontFaceElement->parentNode()))
         return nullptr;
     if (!m_inDocumentCustomPlatformData) {
@@ -175,9 +165,6 @@ RefPtr<Font> CSSFontFaceSource::font(const FontDescription& fontDescription, boo
 #else
     return Font::create(m_inDocumentCustomPlatformData->fontPlatformData(fontDescription, syntheticBold, syntheticItalic), true, false);
 #endif
-#else
-    return Font::create(std::make_unique<SVGFontData>(m_svgFontFaceElement.get()), fontDescription.computedPixelSize(), syntheticBold, syntheticItalic);
-#endif
 #endif
 
     ASSERT_NOT_REACHED();
index fead020..25266cc 100644 (file)
@@ -79,14 +79,10 @@ private:
     CachedResourceHandle<CachedFont> m_font; // For remote fonts, a pointer to our cached resource.
     CSSFontFace& m_face; // Our owning font face.
 
-#if ENABLE(SVG_OTF_CONVERTER)
     RefPtr<SharedBuffer> m_generatedOTFBuffer;
-#endif
 
-#if ENABLE(SVG_FONTS) || ENABLE(SVG_OTF_CONVERTER)
     RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
     std::unique_ptr<FontCustomPlatformData> m_inDocumentCustomPlatformData;
-#endif
 
     Status m_status { Status::Pending };
 };
index 08b3374..a307f69 100644 (file)
 #include "WOFFFileFormat.h"
 #include <wtf/Vector.h>
 
-#if ENABLE(SVG_FONTS)
-#include "NodeList.h"
-#include "SVGDocument.h"
-#include "SVGElement.h"
-#include "SVGFontElement.h"
-#include "SVGGElement.h"
-#include "SVGNames.h"
-#endif
-
 namespace WebCore {
 
 CachedFont::CachedFont(const ResourceRequest& resourceRequest, SessionID sessionID, Type type)
index ad02b99..24262f3 100644 (file)
 #include "FontDescription.h"
 #include "FontPlatformData.h"
 #include "SVGDocument.h"
-#include "SVGFontData.h"
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
 #include "SharedBuffer.h"
 #include "TextResourceDecoder.h"
 #include "TypedElementDescendantIterator.h"
-
-#if ENABLE(SVG_OTF_CONVERTER)
 #include "SVGToOTFFontConversion.h"
-#endif
 
 namespace WebCore {
 
@@ -53,15 +49,8 @@ CachedSVGFont::CachedSVGFont(const ResourceRequest& resourceRequest, SessionID s
 
 RefPtr<Font> CachedSVGFont::createFont(const FontDescription& fontDescription, const AtomicString& remoteURI, bool syntheticBold, bool syntheticItalic, const FontFeatureSettings& fontFaceFeatures, const FontVariantSettings& fontFaceVariantSettings)
 {
-#if ENABLE(SVG_OTF_CONVERTER)
     if (firstFontFace(remoteURI))
         return CachedFont::createFont(fontDescription, remoteURI, syntheticBold, syntheticItalic, fontFaceFeatures, fontFaceVariantSettings);
-#else
-    UNUSED_PARAM(fontFaceFeatures);
-    UNUSED_PARAM(fontFaceVariantSettings);
-    if (SVGFontFaceElement* firstFontFace = this->firstFontFace(remoteURI))
-        return Font::create(std::make_unique<SVGFontData>(firstFontFace), fontDescription.computedPixelSize(), syntheticBold, syntheticItalic);
-#endif
     return nullptr;
 }
 
@@ -80,7 +69,6 @@ bool CachedSVGFont::ensureCustomFontData(const AtomicString& remoteURI)
         m_externalSVGDocument->setContent(decoder->decodeAndFlush(m_data->data(), m_data->size()));
         if (decoder->sawError())
             m_externalSVGDocument = nullptr;
-#if ENABLE(SVG_OTF_CONVERTER)
         if (m_externalSVGDocument)
             maybeInitializeExternalSVGFontElement(remoteURI);
         if (!m_externalSVGFontElement)
@@ -91,16 +79,9 @@ bool CachedSVGFont::ensureCustomFontData(const AtomicString& remoteURI)
             m_externalSVGDocument = nullptr;
             return false;
         }
-#else
-        UNUSED_PARAM(remoteURI);
-#endif
     }
 
-#if !ENABLE(SVG_OTF_CONVERTER)
-    return m_externalSVGDocument;
-#else
     return m_externalSVGDocument && CachedFont::ensureCustomFontData(m_convertedFont.get());
-#endif
 }
 
 SVGFontElement* CachedSVGFont::getSVGFontById(const String& fontName) const
index 0c2383c..661ba5c 100644 (file)
@@ -50,9 +50,7 @@ private:
     SVGFontElement* maybeInitializeExternalSVGFontElement(const AtomicString& remoteURI);
     SVGFontFaceElement* firstFontFace(const AtomicString& remoteURI);
 
-#if ENABLE(SVG_OTF_CONVERTER)
     RefPtr<SharedBuffer> m_convertedFont;
-#endif
     RefPtr<SVGDocument> m_externalSVGDocument;
     SVGFontElement* m_externalSVGFontElement;
 };
index bc97f78..ef44258 100644 (file)
@@ -51,11 +51,10 @@ unsigned GlyphPage::s_count = 0;
 const float smallCapsFontSizeMultiplier = 0.7f;
 const float emphasisMarkFontSizeMultiplier = 0.5f;
 
-Font::Font(const FontPlatformData& platformData, std::unique_ptr<SVGData>&& svgData, bool isCustomFont, bool isLoading, bool isTextOrientationFallback)
+Font::Font(const FontPlatformData& platformData, bool isCustomFont, bool isLoading, bool isTextOrientationFallback)
     : m_maxCharWidth(-1)
     , m_avgCharWidth(-1)
     , m_platformData(platformData)
-    , m_svgData(WTFMove(svgData))
     , m_mathData(nullptr)
     , m_treatAsFixedPitch(false)
     , m_isCustomFont(isCustomFont)
@@ -68,11 +67,6 @@ Font::Font(const FontPlatformData& platformData, std::unique_ptr<SVGData>&& svgD
     , m_shouldNotBeUsedForArabic(false)
 #endif
 {
-}
-
-Font::Font(const FontPlatformData& platformData, bool isCustomFont, bool isLoading, bool isTextOrientationFallback)
-    : Font(platformData, std::unique_ptr<SVGData>(), isCustomFont, isLoading, isTextOrientationFallback)
-{
     platformInit();
     platformGlyphInit();
     platformCharWidthInit();
@@ -84,12 +78,6 @@ Font::Font(const FontPlatformData& platformData, bool isCustomFont, bool isLoadi
 #endif
 }
 
-Font::Font(std::unique_ptr<SVGData> svgData, float fontSize, bool syntheticBold, bool syntheticItalic)
-    : Font(FontPlatformData(fontSize, syntheticBold, syntheticItalic), WTFMove(svgData), true, false, false)
-{
-    m_svgData->initializeFont(this, fontSize);
-}
-
 // Estimates of avgCharWidth and maxCharWidth for platforms that don't support accessing these values from the font.
 void Font::initCharWidths()
 {
@@ -148,14 +136,12 @@ Font::~Font()
 
 static bool fillGlyphPage(GlyphPage& pageToFill, UChar* buffer, unsigned bufferLength, const Font& font)
 {
-#if ENABLE(SVG_FONTS)
-    if (auto* svgData = font.svgData())
-        return svgData->fillSVGGlyphPage(&pageToFill, buffer, bufferLength);
-#endif
     bool hasGlyphs = pageToFill.fill(buffer, bufferLength);
 #if ENABLE(OPENTYPE_VERTICAL)
     if (hasGlyphs && font.verticalData())
         font.verticalData()->substituteWithVerticalGlyphs(&font, &pageToFill);
+#else
+    UNUSED_PARAM(font);
 #endif
     return hasGlyphs;
 }
@@ -347,8 +333,6 @@ const Font& Font::nonSyntheticItalicFont() const
 #ifndef NDEBUG
 String Font::description() const
 {
-    if (isSVGFont())
-        return "[SVG font]";
     if (isCustomFont())
         return "[custom font]";
 
@@ -374,16 +358,12 @@ Font::DerivedFontData::~DerivedFontData()
 
 RefPtr<Font> Font::createScaledFont(const FontDescription& fontDescription, float scaleFactor) const
 {
-    if (isSVGFont())
-        return nullptr;
-
     return platformCreateScaledFont(fontDescription, scaleFactor);
 }
 
 bool Font::applyTransforms(GlyphBufferGlyph* glyphs, GlyphBufferAdvance* advances, size_t glyphCount, bool enableKerning, bool requiresShaping) const
 {
     // We need to handle transforms on SVG fonts internally, since they are rendered internally.
-    ASSERT(!isSVGFont());
 #if PLATFORM(COCOA)
     CTFontTransformOptions options = (enableKerning ? kCTFontTransformApplyPositioning : 0) | (requiresShaping ? kCTFontTransformApplyShaping : 0);
     return CTFontTransformGlyphs(m_platformData.ctFont(), glyphs, reinterpret_cast<CGSize*>(advances), glyphCount, options);
index b11b678..224dfdf 100644 (file)
@@ -70,28 +70,12 @@ enum Pitch { UnknownPitch, FixedPitch, VariablePitch };
 
 class Font : public RefCounted<Font> {
 public:
-    class SVGData {
-        WTF_MAKE_FAST_ALLOCATED;
-    public:
-        virtual ~SVGData() { }
-
-        virtual void initializeFont(Font*, float fontSize) = 0;
-        virtual float widthForSVGGlyph(Glyph, float fontSize) const = 0;
-        virtual bool fillSVGGlyphPage(GlyphPage*, UChar* buffer, unsigned bufferLength) const = 0;
-    };
-
     // Used to create platform fonts.
     static Ref<Font> create(const FontPlatformData& platformData, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false)
     {
         return adoptRef(*new Font(platformData, isCustomFont, isLoading, isTextOrientationFallback));
     }
 
-    // Used to create SVG Fonts.
-    static Ref<Font> create(std::unique_ptr<SVGData> svgData, float fontSize, bool syntheticBold, bool syntheticItalic)
-    {
-        return adoptRef(*new Font(WTFMove(svgData), fontSize, syntheticBold, syntheticItalic));
-    }
-
     WEBCORE_EXPORT ~Font();
 
     static const Font* systemFallback() { return reinterpret_cast<const Font*>(-1); }
@@ -181,9 +165,6 @@ public:
     void determinePitch();
     Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitch; }
 
-    const SVGData* svgData() const { return m_svgData.get(); }
-    bool isSVGFont() const { return !!m_svgData; }
-
     bool isCustomFont() const { return m_isCustomFont; }
     bool isLoading() const { return m_isLoading; }
 
@@ -224,10 +205,6 @@ public:
 private:
     Font(const FontPlatformData&, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false);
 
-    Font(std::unique_ptr<SVGData>, float fontSize, bool syntheticBold, bool syntheticItalic);
-
-    Font(const FontPlatformData&, std::unique_ptr<SVGData>&&, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false);
-
     void platformInit();
     void platformGlyphInit();
     void platformCharWidthInit();
@@ -253,7 +230,6 @@ private:
     float m_avgCharWidth;
 
     FontPlatformData m_platformData;
-    std::unique_ptr<SVGData> m_svgData;
 
     mutable RefPtr<GlyphPage> m_glyphPageZero;
     mutable HashMap<unsigned, RefPtr<GlyphPage>> m_glyphPages;
@@ -363,17 +339,15 @@ ALWAYS_INLINE float Font::widthForGlyph(Glyph glyph) const
     if (width != cGlyphSizeUnknown)
         return width;
 
-    if (isSVGFont())
-        width = m_svgData->widthForSVGGlyph(glyph, m_platformData.size());
 #if ENABLE(OPENTYPE_VERTICAL)
-    else if (m_verticalData)
+    if (m_verticalData)
 #if USE(CG) || USE(CAIRO)
         width = m_verticalData->advanceHeight(this, glyph) + m_syntheticBoldOffset;
 #else
         width = m_verticalData->advanceHeight(this, glyph);
 #endif
-#endif
     else
+#endif
         width = platformWidthForGlyph(glyph);
 
     m_glyphToWidthMap.setMetricsForGlyph(glyph, width);
index 33dc4cc..4e5c931 100644 (file)
@@ -46,11 +46,6 @@ namespace WebCore {
 
 static Ref<FontCascadeFonts> retrieveOrAddCachedFonts(const FontCascadeDescription&, RefPtr<FontSelector>&&);
 
-static bool isDrawnWithSVGFont(const TextRun& run)
-{
-    return run.renderingContext();
-}
-
 static bool useBackslashAsYenSignForFamily(const AtomicString& family)
 {
     if (family.isEmpty())
@@ -318,7 +313,7 @@ float FontCascade::drawText(GraphicsContext& context, const TextRun& run, const
 
     CodePath codePathToUse = codePath(run);
     // FIXME: Use the fast code path once it handles partial runs with kerning and ligatures. See http://webkit.org/b/100050
-    if (codePathToUse != Complex && (enableKerning() || requiresShaping()) && (from || static_cast<unsigned>(to) != run.length()) && !isDrawnWithSVGFont(run))
+    if (codePathToUse != Complex && (enableKerning() || requiresShaping()) && (from || static_cast<unsigned>(to) != run.length()))
         codePathToUse = Complex;
 
     GlyphBuffer glyphBuffer;
@@ -328,7 +323,7 @@ float FontCascade::drawText(GraphicsContext& context, const TextRun& run, const
         return 0;
     // Draw the glyph buffer now at the starting point returned in startX.
     FloatPoint startPoint(startX, point.y());
-    drawGlyphBuffer(context, run, glyphBuffer, startPoint);
+    drawGlyphBuffer(context, glyphBuffer, startPoint);
     return startPoint.x() - startX;
 }
 
@@ -342,7 +337,7 @@ void FontCascade::drawEmphasisMarks(GraphicsContext& context, const TextRun& run
 
     CodePath codePathToUse = codePath(run);
     // FIXME: Use the fast code path once it handles partial runs with kerning and ligatures. See http://webkit.org/b/100050
-    if (codePathToUse != Complex && (enableKerning() || requiresShaping()) && (from || static_cast<unsigned>(to) != run.length()) && !isDrawnWithSVGFont(run))
+    if (codePathToUse != Complex && (enableKerning() || requiresShaping()) && (from || static_cast<unsigned>(to) != run.length()))
         codePathToUse = Complex;
 
     if (codePathToUse != Complex)
@@ -383,22 +378,10 @@ float FontCascade::width(const TextRun& run, HashSet<const Font*>* fallbackFonts
     return result;
 }
 
-float FontCascade::width(const TextRun& run, int& charsConsumed, String& glyphName) const
-{
-#if ENABLE(SVG_FONTS)
-    if (isDrawnWithSVGFont(run))
-        return run.renderingContext()->floatWidthUsingSVGFont(*this, run, charsConsumed, glyphName);
-#endif
-
-    charsConsumed = run.length();
-    glyphName = "";
-    return width(run);
-}
-
 GlyphData FontCascade::glyphDataForCharacter(UChar32 c, bool mirror, FontVariant variant) const
 {
     if (variant == AutoVariant) {
-        if (m_fontDescription.variantCaps() == FontVariantCaps::Small && !primaryFont().isSVGFont()) {
+        if (m_fontDescription.variantCaps() == FontVariantCaps::Small) {
             UChar32 upperC = u_toupper(c);
             if (upperC != c) {
                 c = upperC;
@@ -514,7 +497,7 @@ void FontCascade::adjustSelectionRectForText(const TextRun& run, LayoutRect& sel
 
     CodePath codePathToUse = codePath(run);
     // FIXME: Use the fast code path once it handles partial runs with kerning and ligatures. See http://webkit.org/b/100050
-    if (codePathToUse != Complex && (enableKerning() || requiresShaping()) && (from || static_cast<unsigned>(to) != run.length()) && !isDrawnWithSVGFont(run))
+    if (codePathToUse != Complex && (enableKerning() || requiresShaping()) && (from || static_cast<unsigned>(to) != run.length()))
         codePathToUse = Complex;
 
     if (codePathToUse != Complex)
@@ -526,7 +509,7 @@ void FontCascade::adjustSelectionRectForText(const TextRun& run, LayoutRect& sel
 int FontCascade::offsetForPosition(const TextRun& run, float x, bool includePartialGlyphs) const
 {
     // FIXME: Use the fast code path once it handles partial runs with kerning and ligatures. See http://webkit.org/b/100050
-    if (codePath(run) != Complex && (!(enableKerning() || requiresShaping()) || isDrawnWithSVGFont(run)))
+    if (codePath(run) != Complex && (!(enableKerning() || requiresShaping())))
         return offsetForPositionForSimpleText(run, x, includePartialGlyphs);
 
     return offsetForPositionForComplexText(run, x, includePartialGlyphs);
@@ -582,11 +565,6 @@ FontCascade::CodePath FontCascade::codePath(const TextRun& run) const
     if (s_codePath != Auto)
         return s_codePath;
 
-#if ENABLE(SVG_FONTS)
-    if (isDrawnWithSVGFont(run))
-        return Simple;
-#endif
-
 #if PLATFORM(COCOA)
     // Because Font::applyTransforms() doesn't know which features to enable/disable in the simple code path, it can't properly handle feature or variant settings.
     // FIXME: https://bugs.webkit.org/show_bug.cgi?id=150791: @font-face features should also cause this to be complex.
@@ -1293,10 +1271,10 @@ void FontCascade::drawEmphasisMarksForSimpleText(GraphicsContext& context, const
     if (glyphBuffer.isEmpty())
         return;
 
-    drawEmphasisMarks(context, run, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
+    drawEmphasisMarks(context, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
 }
 
-void FontCascade::drawGlyphBuffer(GraphicsContext& context, const TextRun& run, const GlyphBuffer& glyphBuffer, FloatPoint& point) const
+void FontCascade::drawGlyphBuffer(GraphicsContext& context, const GlyphBuffer& glyphBuffer, FloatPoint& point) const
 {
 #if !ENABLE(SVG_FONTS)
     UNUSED_PARAM(run);
@@ -1310,20 +1288,12 @@ void FontCascade::drawGlyphBuffer(GraphicsContext& context, const TextRun& run,
     float nextY = startPoint.y() + glyphBuffer.advanceAt(0).height();
     int lastFrom = 0;
     int nextGlyph = 1;
-#if ENABLE(SVG_FONTS)
-    TextRun::RenderingContext* renderingContext = run.renderingContext();
-#endif
     while (nextGlyph < glyphBuffer.size()) {
         const Font* nextFontData = glyphBuffer.fontAt(nextGlyph);
         FloatSize nextOffset = glyphBuffer.offsetAt(nextGlyph);
 
         if (nextFontData != fontData || nextOffset != offset) {
-#if ENABLE(SVG_FONTS)
-            if (renderingContext && fontData->isSVGFont())
-                renderingContext->drawSVGGlyphs(context, *fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
-            else
-#endif
-                context.drawGlyphs(*this, *fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
+            context.drawGlyphs(*this, *fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
 
             lastFrom = nextGlyph;
             fontData = nextFontData;
@@ -1336,15 +1306,8 @@ void FontCascade::drawGlyphBuffer(GraphicsContext& context, const TextRun& run,
         nextGlyph++;
     }
 
-#if ENABLE(SVG_FONTS)
-    if (renderingContext && fontData->isSVGFont())
-        renderingContext->drawSVGGlyphs(context, *fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
-    else
-#endif
-    {
-        context.drawGlyphs(*this, *fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
-        point.setX(nextX);
-    }
+    context.drawGlyphs(*this, *fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
+    point.setX(nextX);
 }
 
 inline static float offsetToMiddleOfGlyph(const Font* fontData, Glyph glyph)
@@ -1362,7 +1325,7 @@ inline static float offsetToMiddleOfGlyphAtIndex(const GlyphBuffer& glyphBuffer,
     return offsetToMiddleOfGlyph(glyphBuffer.fontAt(i), glyphBuffer.glyphAt(i));
 }
 
-void FontCascade::drawEmphasisMarks(GraphicsContext& context, const TextRun& run, const GlyphBuffer& glyphBuffer, const AtomicString& mark, const FloatPoint& point) const
+void FontCascade::drawEmphasisMarks(GraphicsContext& context, const GlyphBuffer& glyphBuffer, const AtomicString& mark, const FloatPoint& point) const
 {
     Optional<GlyphData> markGlyphData = getEmphasisMarkGlyphData(mark);
     if (!markGlyphData)
@@ -1388,7 +1351,7 @@ void FontCascade::drawEmphasisMarks(GraphicsContext& context, const TextRun& run
     }
     markBuffer.add(glyphBuffer.glyphAt(glyphBuffer.size() - 1) ? markGlyph : spaceGlyph, markFontData, 0);
 
-    drawGlyphBuffer(context, run, markBuffer, startPoint);
+    drawGlyphBuffer(context, markBuffer, startPoint);
 }
 
 float FontCascade::floatWidthForSimpleText(const TextRun& run, HashSet<const Font*>* fallbackFonts, GlyphOverflow* glyphOverflow) const
index dec1fc5..c6d0c25 100644 (file)
@@ -140,7 +140,6 @@ public:
     DashArray dashesForIntersectionsWithRect(const TextRun&, const FloatPoint& textOrigin, const FloatRect& lineExtents) const;
 
     WEBCORE_EXPORT float width(const TextRun&, HashSet<const Font*>* fallbackFonts = 0, GlyphOverflow* = 0) const;
-    float width(const TextRun&, int& charsConsumed, String& glyphName) const;
 
     std::unique_ptr<TextLayout, TextLayoutDeleter> createLayout(RenderText&, float xPos, bool collapseWhiteSpace) const;
     static float width(TextLayout&, unsigned from, unsigned len, HashSet<const Font*>* fallbackFonts = 0);
@@ -223,8 +222,8 @@ private:
     // Returns the initial in-stream advance.
     float getGlyphsAndAdvancesForSimpleText(const TextRun&, int from, int to, GlyphBuffer&, ForTextEmphasisOrNot = NotForTextEmphasis) const;
     void drawEmphasisMarksForSimpleText(GraphicsContext&, const TextRun&, const AtomicString& mark, const FloatPoint&, int from, int to) const;
-    void drawGlyphBuffer(GraphicsContext&, const TextRun&, const GlyphBuffer&, FloatPoint&) const;
-    void drawEmphasisMarks(GraphicsContext&, const TextRun&, const GlyphBuffer&, const AtomicString&, const FloatPoint&) const;
+    void drawGlyphBuffer(GraphicsContext&, const GlyphBuffer&, FloatPoint&) const;
+    void drawEmphasisMarks(GraphicsContext&, const GlyphBuffer&, const AtomicString&, const FloatPoint&) const;
     float floatWidthForSimpleText(const TextRun&, HashSet<const Font*>* fallbackFonts = 0, GlyphOverflow* = 0) const;
     int offsetForPositionForSimpleText(const TextRun&, float position, bool includePartialGlyphs) const;
     void adjustSelectionRectForSimpleText(const TextRun&, LayoutRect& selectionRect, int from, int to) const;
@@ -245,7 +244,6 @@ private:
     static std::pair<unsigned, bool> expansionOpportunityCountInternal(const UChar*, size_t length, TextDirection, ExpansionBehavior);
 
     friend struct WidthIterator;
-    friend class SVGTextRunRenderingContext;
 
 public:
 #if ENABLE(IOS_TEXT_AUTOSIZING)
index b325d73..babc4c8 100644 (file)
@@ -384,7 +384,7 @@ public:
 
     float drawText(const FontCascade&, const TextRun&, const FloatPoint&, int from = 0, int to = -1);
     void drawGlyphs(const FontCascade&, const Font&, const GlyphBuffer&, int from, int numGlyphs, const FloatPoint&);
-    void drawEmphasisMarks(const FontCascade&, const TextRun& , const AtomicString& mark, const FloatPoint&, int from = 0, int to = -1);
+    void drawEmphasisMarks(const FontCascade&, const TextRun&, const AtomicString& mark, const FloatPoint&, int from = 0, int to = -1);
     void drawBidiText(const FontCascade&, const TextRun&, const FloatPoint&, FontCascade::CustomFontNotReadyAction = FontCascade::DoNotPaintIfFontNotReady);
 
     void applyState(const GraphicsContextState&);
diff --git a/Source/WebCore/platform/graphics/SVGGlyph.cpp b/Source/WebCore/platform/graphics/SVGGlyph.cpp
deleted file mode 100644 (file)
index 5f4f753..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
- * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#if ENABLE(SVG_FONTS)
-#include "SVGGlyph.h"
-
-namespace WebCore {
-
-// Helper functions to determine the arabic character forms (initial, medial, terminal, isolated)
-enum ArabicCharShapingMode : uint8_t {
-    SNone = 0,
-    SRight = 1,
-    SDual = 2
-};
-
-static const ArabicCharShapingMode s_arabicCharShapingMode[222] = {
-    SRight, SRight, SRight, SRight, SDual , SRight, SDual , SRight, SDual , SDual , SDual , SDual , SDual , SRight,                 /* 0x0622 - 0x062F */
-    SRight, SRight, SRight, SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SNone , SNone , SNone , SNone , SNone , /* 0x0630 - 0x063F */
-    SNone , SDual , SDual , SDual , SDual , SDual , SDual , SRight, SDual , SDual , SNone , SNone , SNone , SNone , SNone , SNone , /* 0x0640 - 0x064F */
-    SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , /* 0x0650 - 0x065F */
-    SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , /* 0x0660 - 0x066F */
-    SNone , SRight, SRight, SRight, SNone , SRight, SRight, SRight, SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , /* 0x0670 - 0x067F */
-    SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, /* 0x0680 - 0x068F */
-    SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, SDual , SDual , SDual , SDual , SDual , SDual , /* 0x0690 - 0x069F */
-    SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , /* 0x06A0 - 0x06AF */
-    SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , SDual , /* 0x06B0 - 0x06BF */
-    SRight, SDual , SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, SRight, SDual , SRight, SDual , SRight, /* 0x06C0 - 0x06CF */
-    SDual , SDual , SRight, SRight, SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , /* 0x06D0 - 0x06DF */
-    SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , /* 0x06E0 - 0x06EF */
-    SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SNone , SDual , SDual , SDual , SNone , SNone , SNone   /* 0x06F0 - 0x06FF */
-};
-
-static inline SVGGlyph::ArabicForm processArabicFormDetection(const UChar& curChar, bool& lastCharShapesRight, SVGGlyph::ArabicForm* prevForm)
-{
-    SVGGlyph::ArabicForm curForm;
-
-    ArabicCharShapingMode shapingMode = SNone;
-    if (curChar >= 0x0622 && curChar <= 0x06FF)
-        shapingMode = s_arabicCharShapingMode[curChar - 0x0622];
-
-    // Use a simple state machine to identify the actual arabic form
-    // It depends on the order of the arabic form enum:
-    // enum ArabicForm { None = 0, Isolated, Terminal, Initial, Medial };
-
-    if (lastCharShapesRight && shapingMode == SDual) {
-        if (prevForm) {
-            int correctedForm = (int) *prevForm + 1;
-            ASSERT(correctedForm >= SVGGlyph::None && correctedForm <= SVGGlyph::Medial);
-            *prevForm = static_cast<SVGGlyph::ArabicForm>(correctedForm);
-        }
-
-        curForm = SVGGlyph::Initial;
-    } else
-        curForm = shapingMode == SNone ? SVGGlyph::None : SVGGlyph::Isolated;
-
-    lastCharShapesRight = shapingMode != SNone;
-    return curForm;
-}
-
-Vector<SVGGlyph::ArabicForm> charactersWithArabicForm(const String& input, bool rtl)
-{
-    Vector<SVGGlyph::ArabicForm> forms;
-    unsigned length = input.length();
-
-    bool containsArabic = false;
-    for (unsigned i = 0; i < length; ++i) {
-        if (ublock_getCode(input[i]) == UBLOCK_ARABIC) {
-            containsArabic = true;
-            break;
-        }
-    }
-
-    if (!containsArabic)
-        return forms;
-
-    bool lastCharShapesRight = false;
-
-    // Start identifying arabic forms
-    if (rtl) {
-        for (int i = length - 1; i >= 0; --i)
-            forms.insert(0, processArabicFormDetection(input[i], lastCharShapesRight, forms.isEmpty() ? 0 : &forms.first()));
-    } else {
-        for (unsigned i = 0; i < length; ++i)
-            forms.append(processArabicFormDetection(input[i], lastCharShapesRight, forms.isEmpty() ? 0 : &forms.last()));
-    }
-
-    return forms;
-}
-
-static inline bool isCompatibleArabicForm(const SVGGlyph& identifier, const Vector<SVGGlyph::ArabicForm>& chars, unsigned startPosition, unsigned endPosition)
-{
-    if (chars.isEmpty())
-        return true;
-
-    Vector<SVGGlyph::ArabicForm>::const_iterator realEnd = chars.end();
-    Vector<SVGGlyph::ArabicForm>::const_iterator it = chars.begin() + static_cast<int>(startPosition);
-    if (it >= realEnd)
-        return true;
-
-    Vector<SVGGlyph::ArabicForm>::const_iterator end = chars.begin() + static_cast<int>(endPosition);
-    if (end >= realEnd)
-        end = realEnd;
-
-    for (; it != end; ++it) {
-        if (*it != static_cast<SVGGlyph::ArabicForm>(identifier.arabicForm) && *it != SVGGlyph::None)
-            return false;
-    }
-
-    return true;
-}
-
-bool isCompatibleGlyph(const SVGGlyph& identifier, bool isVerticalText, const String& language,
-                       const Vector<SVGGlyph::ArabicForm>& chars, unsigned startPosition, unsigned endPosition)
-{
-    bool valid = true;
-
-    // Check wheter orientation if glyph fits within the request
-    switch (identifier.orientation) {
-    case SVGGlyph::Vertical:
-        valid = isVerticalText;
-        break;
-    case SVGGlyph::Horizontal:
-        valid = !isVerticalText;
-        break;
-    case SVGGlyph::Both:
-        break;
-    }
-
-    if (!valid)
-        return false;
-
-    // Check wheter languages are compatible
-    if (!identifier.languages.isEmpty()) {
-        // This glyph exists only in certain languages, if we're not specifying a
-        // language on the referencing element we're unable to use this glyph.
-        if (language.isEmpty())
-            return false;
-
-        // Split subcode from language, if existant.
-        String languagePrefix;
-
-        size_t subCodeSeparator = language.find('-');
-        if (subCodeSeparator != notFound)
-            languagePrefix = language.left(subCodeSeparator);
-
-        Vector<String>::const_iterator it = identifier.languages.begin();
-        Vector<String>::const_iterator end = identifier.languages.end();
-
-        bool found = false;
-        for (; it != end; ++it) {
-            const String& cur = *it;
-            if (cur == language || cur == languagePrefix) {
-                found = true;
-                break;
-            }
-        }
-
-        if (!found)
-            return false;
-    }
-
-    // Check wheter arabic form is compatible
-    return isCompatibleArabicForm(identifier, chars, startPosition, endPosition);
-}
-
-}
-
-#endif
diff --git a/Source/WebCore/platform/graphics/SVGGlyph.h b/Source/WebCore/platform/graphics/SVGGlyph.h
deleted file mode 100644 (file)
index 7f5f7f9..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
- * Copyright (C) 2008 Rob Buis <buis@kde.org>
- * Copyright (C) Research In Motion Limited 2011. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef SVGGlyph_h
-#define SVGGlyph_h
-
-#if ENABLE(SVG_FONTS)
-#include "Glyph.h"
-#include "Path.h"
-
-#include <limits>
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
-namespace WebCore {
-
-// Describe a glyph from a SVG Font.
-struct SVGGlyph {
-    enum Orientation {
-        Vertical,
-        Horizontal,
-        Both
-    };
-
-    // SVG Font depends on exactly this order.
-    enum ArabicForm {
-        None = 0,
-        Isolated,
-        Terminal,
-        Initial,
-        Medial
-    };
-
-    SVGGlyph()
-        : unicodeStringLength(0)
-        , priority(0)
-        , horizontalAdvanceX(0)
-        , verticalOriginX(0)
-        , verticalOriginY(0)
-        , verticalAdvanceY(0)
-        , tableEntry(0)
-        , isPartOfLigature(false)
-        , orientation(Both)
-        , arabicForm(None)
-    {
-    }
-
-    // Used to mark our float properties as "to be inherited from SVGFontData"
-    static float inheritedValue()
-    {
-        static float s_inheritedValue = std::numeric_limits<float>::infinity();
-        return s_inheritedValue;
-    }
-
-    bool operator==(const SVGGlyph& other) const
-    {
-        return isPartOfLigature == other.isPartOfLigature
-            && orientation == other.orientation
-            && arabicForm == other.arabicForm
-            && tableEntry == other.tableEntry
-            && unicodeStringLength == other.unicodeStringLength
-            && glyphName == other.glyphName
-            && horizontalAdvanceX == other.horizontalAdvanceX
-            && verticalOriginX == other.verticalOriginX
-            && verticalOriginY == other.verticalOriginY
-            && verticalAdvanceY == other.verticalAdvanceY
-            && languages == other.languages;
-    }
-
-    Vector<String> languages;
-
-    size_t unicodeStringLength;
-    String glyphName;
-
-    Path pathData;
-    int priority;
-
-    float horizontalAdvanceX;
-    float verticalOriginX;
-    float verticalOriginY;
-    float verticalAdvanceY;
-
-    Glyph tableEntry;
-
-    unsigned isPartOfLigature : 1;
-
-    unsigned orientation : 2; // Orientation
-    unsigned arabicForm : 3; // ArabicForm
-};
-
-Vector<SVGGlyph::ArabicForm> charactersWithArabicForm(const String& input, bool rtl);
-bool isCompatibleGlyph(const SVGGlyph&, bool isVerticalText, const String& language, const Vector<SVGGlyph::ArabicForm>&, unsigned startPosition, unsigned endPosition);
-
-} // namespace WebCore
-
-#endif // ENABLE(SVG_FONTS)
-#endif
index e34056e..884cf9b 100644 (file)
@@ -29,7 +29,6 @@
 namespace WebCore {
 
 struct ExpectedTextRunSize {
-    void* renderingContext;
     StringView text;
     unsigned integer1;
     unsigned integer2;
index a63d50a..77dee3b 100644 (file)
@@ -116,25 +116,7 @@ public:
     void setCharacterScanForCodePath(bool scan) { m_characterScanForCodePath = scan; }
     StringView text() const { return m_text; }
 
-    class RenderingContext : public RefCounted<RenderingContext> {
-    public:
-        virtual ~RenderingContext() { }
-
-#if ENABLE(SVG_FONTS)
-        virtual GlyphData glyphDataForCharacter(const FontCascade&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) = 0;
-        virtual void drawSVGGlyphs(GraphicsContext&, const Font&, const GlyphBuffer&, int from, int to, const FloatPoint&) const = 0;
-        virtual float floatWidthUsingSVGFont(const FontCascade&, const TextRun&, int& charsConsumed, String& glyphName) const = 0;
-        virtual bool applySVGKerning(const Font*, WidthIterator&, GlyphBuffer*, int from) const = 0;
-        virtual std::unique_ptr<GlyphToPathTranslator> createGlyphToPathTranslator(const Font&, const TextRun*, const GlyphBuffer&, int from, int numGlyphs, const FloatPoint&) const = 0;
-#endif
-    };
-
-    RenderingContext* renderingContext() const { return m_renderingContext.get(); }
-    void setRenderingContext(PassRefPtr<RenderingContext> context) { m_renderingContext = context; }
-
 private:
-    RefPtr<RenderingContext> m_renderingContext;
-
     StringView m_text;
     unsigned m_charactersLength; // Marks the end of the characters buffer. Default equals to length of m_text.
 
index 32348a9..0b9a740 100644 (file)
@@ -62,22 +62,6 @@ WidthIterator::WidthIterator(const FontCascade* font, const TextRun& run, HashSe
     }
 }
 
-GlyphData WidthIterator::glyphDataForCharacter(UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache)
-{
-    ASSERT(m_font);
-
-#if ENABLE(SVG_FONTS)
-    if (TextRun::RenderingContext* renderingContext = m_run.renderingContext())
-        return renderingContext->glyphDataForCharacter(*m_font, *this, character, mirror, currentCharacter, advanceLength, normalizedSpacesStringCache);
-#else
-    UNUSED_PARAM(currentCharacter);
-    UNUSED_PARAM(advanceLength);
-    UNUSED_PARAM(normalizedSpacesStringCache);
-#endif
-
-    return m_font->glyphDataForCharacter(character, mirror);
-}
-
 struct OriginalAdvancesForCharacterTreatedAsSpace {
 public:
     OriginalAdvancesForCharacterTreatedAsSpace(bool isSpace, float advanceBefore, float advanceAt)
@@ -127,18 +111,7 @@ inline float WidthIterator::applyFontTransforms(GlyphBuffer* glyphBuffer, bool l
     if (!ltr)
         glyphBuffer->reverse(lastGlyphCount, glyphBufferSize - lastGlyphCount);
 
-#if ENABLE(SVG_FONTS)
-    // We need to handle transforms on SVG fonts internally, since they are rendered internally.
-    if (font->isSVGFont()) {
-        // SVG font ligatures are handled during glyph selection, only kerning remaining.
-        if (run().renderingContext() && m_enableKerning) {
-            // FIXME: We could pass the necessary context down to this level so we can lazily create rendering contexts at this point.
-            // However, a larger refactoring of SVG fonts might necessary to sidestep this problem completely.
-            run().renderingContext()->applySVGKerning(font, *this, glyphBuffer, lastGlyphCount);
-        }
-    } else
-#endif
-        font->applyTransforms(glyphBuffer->glyphs(lastGlyphCount), advances + lastGlyphCount, glyphBufferSize - lastGlyphCount, m_enableKerning, m_requiresShaping);
+    font->applyTransforms(glyphBuffer->glyphs(lastGlyphCount), advances + lastGlyphCount, glyphBufferSize - lastGlyphCount, m_enableKerning, m_requiresShaping);
 
     if (!ltr)
         glyphBuffer->reverse(lastGlyphCount, glyphBufferSize - lastGlyphCount);
@@ -219,7 +192,7 @@ inline unsigned WidthIterator::advanceInternal(TextIterator& textIterator, Glyph
     while (textIterator.consume(character, clusterLength)) {
         unsigned advanceLength = clusterLength;
         int currentCharacter = textIterator.currentCharacter();
-        const GlyphData& glyphData = glyphDataForCharacter(character, rtl, currentCharacter, advanceLength, normalizedSpacesStringCache);
+        const GlyphData& glyphData = m_font->glyphDataForCharacter(character, rtl);
         Glyph glyph = glyphData.glyph;
         if (!glyph) {
             textIterator.advance(advanceLength);
index 1782663..68fe3f3 100644 (file)
@@ -22,9 +22,7 @@
 #ifndef WidthIterator_h
 #define WidthIterator_h
 
-#include "FontCascade.h"
-#include "SVGGlyph.h"
-#include "TextRun.h"
+#include <unicode/umachine.h>
 #include <wtf/HashSet.h>
 #include <wtf/Vector.h>
 
@@ -55,12 +53,6 @@ public:
     const TextRun& run() const { return m_run; }
     float runWidthSoFar() const { return m_runWidthSoFar; }
 
-#if ENABLE(SVG_FONTS)
-    String lastGlyphName() const { return m_lastGlyphName; }
-    void setLastGlyphName(const String& name) { m_lastGlyphName = name; }
-    Vector<SVGGlyph::ArabicForm>& arabicForms() { return m_arabicForms; }
-#endif
-
     const FontCascade* m_font;
 
     const TextRun& m_run;
@@ -72,13 +64,8 @@ public:
     bool m_isAfterExpansion;
     float m_finalRoundingWidth;
 
-#if ENABLE(SVG_FONTS)
-    String m_lastGlyphName;
-    Vector<SVGGlyph::ArabicForm> m_arabicForms;
-#endif
-
 private:
-    GlyphData glyphDataForCharacter(UChar32, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache);
+    GlyphData glyphDataForCharacter(UChar32, bool mirror);
     template <typename TextIterator>
     inline unsigned advanceInternal(TextIterator&, GlyphBuffer*);
 
index 1ff55a9..662d551 100644 (file)
@@ -220,7 +220,6 @@ public:
         , m_fontData(glyphBuffer.fontAt(m_index))
         , m_translation(AffineTransform().translate(textOrigin.x(), textOrigin.y()))
     {
-        moveToNextValidGlyph();
     }
 private:
     bool containsMorePaths() override
@@ -231,7 +230,6 @@ private:
     std::pair<float, float> extents() override;
     GlyphUnderlineType underlineType() override;
     void advance() override;
-    void moveToNextValidGlyph();
 
     int m_index;
     const TextRun& m_textRun;
@@ -272,23 +270,13 @@ GlyphToPathTranslator::GlyphUnderlineType CairoGlyphToPathTranslator::underlineT
     return computeUnderlineType(m_textRun, m_glyphBuffer, m_index);
 }
 
-void CairoGlyphToPathTranslator::moveToNextValidGlyph()
-{
-    if (!m_fontData->isSVGFont())
-        return;
-    advance();
-}
-
 void CairoGlyphToPathTranslator::advance()
 {
-    do {
-        GlyphBufferAdvance advance = m_glyphBuffer.advanceAt(m_index);
-        m_translation = m_translation.translate(advance.width(), advance.height());
-        ++m_index;
-        if (m_index >= m_glyphBuffer.size())
-            break;
+    GlyphBufferAdvance advance = m_glyphBuffer.advanceAt(m_index);
+    m_translation = m_translation.translate(advance.width(), advance.height());
+    ++m_index;
+    if (m_index < m_glyphBuffer.size())
         m_fontData = m_glyphBuffer.fontAt(m_index);
-    } while (m_fontData->isSVGFont() && m_index < m_glyphBuffer.size());
 }
 
 DashArray FontCascade::dashesForIntersectionsWithRect(const TextRun& run, const FloatPoint& textOrigin, const FloatRect& lineExtents) const
@@ -308,27 +296,14 @@ DashArray FontCascade::dashesForIntersectionsWithRect(const TextRun& run, const
         return DashArray();
 
     // FIXME: Handle SVG + non-SVG interleaved runs. https://bugs.webkit.org/show_bug.cgi?id=133778
-    const Font* fontData = glyphBuffer.fontAt(0);
-    std::unique_ptr<GlyphToPathTranslator> translator;
-    bool isSVG = false;
     FloatPoint origin = FloatPoint(textOrigin.x() + deltaX, textOrigin.y());
-    if (!fontData->isSVGFont())
-        translator = std::make_unique<CairoGlyphToPathTranslator>(run, glyphBuffer, origin);
-#if ENABLE(SVG_FONTS)
-    else {
-        TextRun::RenderingContext* renderingContext = run.renderingContext();
-        if (!renderingContext)
-            return DashArray();
-        translator = renderingContext->createGlyphToPathTranslator(*fontData, &run, glyphBuffer, 0, glyphBuffer.size(), origin);
-        isSVG = true;
-    }
-#endif
+    std::unique_ptr<GlyphToPathTranslator> translator = std::make_unique<CairoGlyphToPathTranslator>(run, glyphBuffer, origin);
     DashArray result;
     for (int index = 0; translator->containsMorePaths(); ++index, translator->advance()) {
         float centerOfLine = lineExtents.y() + (lineExtents.height() / 2);
         GlyphIterationState info = GlyphIterationState(FloatPoint(), FloatPoint(), centerOfLine, lineExtents.x() + lineExtents.width(), lineExtents.x());
         const Font* localFontData = glyphBuffer.fontAt(index);
-        if (!localFontData || (!isSVG && localFontData->isSVGFont()) || (isSVG && localFontData != fontData)) {
+        if (!localFontData) {
             // The advances will get all messed up if we do anything other than bail here.
             result.clear();
             break;
index 2595a1c..0510d1f 100644 (file)
@@ -426,7 +426,6 @@ public:
         , m_fontData(glyphBuffer.fontAt(m_index))
         , m_translation(CGAffineTransformScale(CGAffineTransformMakeTranslation(textOrigin.x(), textOrigin.y()), 1, -1))
     {
-        moveToNextValidGlyph();
     }
 private:
     bool containsMorePaths() override
@@ -437,7 +436,6 @@ private:
     std::pair<float, float> extents() override;
     GlyphUnderlineType underlineType() override;
     void advance() override;
-    void moveToNextValidGlyph();
 
     int m_index;
     const TextRun& m_textRun;
@@ -464,23 +462,13 @@ auto MacGlyphToPathTranslator::underlineType() -> GlyphUnderlineType
     return computeUnderlineType(m_textRun, m_glyphBuffer, m_index);
 }
 
-void MacGlyphToPathTranslator::moveToNextValidGlyph()
-{
-    if (!m_fontData->isSVGFont())
-        return;
-    advance();
-}
-
 void MacGlyphToPathTranslator::advance()
 {
-    do {
-        GlyphBufferAdvance advance = m_glyphBuffer.advanceAt(m_index);
-        m_translation = CGAffineTransformTranslate(m_translation, advance.width(), advance.height());
-        ++m_index;
-        if (m_index >= m_glyphBuffer.size())
-            break;
+    GlyphBufferAdvance advance = m_glyphBuffer.advanceAt(m_index);
+    m_translation = CGAffineTransformTranslate(m_translation, advance.width(), advance.height());
+    ++m_index;
+    if (m_index < m_glyphBuffer.size())
         m_fontData = m_glyphBuffer.fontAt(m_index);
-    } while (m_fontData->isSVGFont() && m_index < m_glyphBuffer.size());
 }
 
 DashArray FontCascade::dashesForIntersectionsWithRect(const TextRun& run, const FloatPoint& textOrigin, const FloatRect& lineExtents) const
@@ -500,24 +488,13 @@ DashArray FontCascade::dashesForIntersectionsWithRect(const TextRun& run, const
         return DashArray();
     
     // FIXME: Handle SVG + non-SVG interleaved runs. https://bugs.webkit.org/show_bug.cgi?id=133778
-    const Font* fontData = glyphBuffer.fontAt(0);
-    std::unique_ptr<GlyphToPathTranslator> translator;
-    bool isSVG = false;
     FloatPoint origin = FloatPoint(textOrigin.x() + deltaX, textOrigin.y());
-    if (!fontData->isSVGFont())
-        translator = std::make_unique<MacGlyphToPathTranslator>(run, glyphBuffer, origin);
-    else {
-        TextRun::RenderingContext* renderingContext = run.renderingContext();
-        if (!renderingContext)
-            return DashArray();
-        translator = renderingContext->createGlyphToPathTranslator(*fontData, &run, glyphBuffer, 0, glyphBuffer.size(), origin);
-        isSVG = true;
-    }
+    std::unique_ptr<GlyphToPathTranslator> translator = std::make_unique<MacGlyphToPathTranslator>(run, glyphBuffer, origin);
     DashArray result;
     for (int index = 0; translator->containsMorePaths(); ++index, translator->advance()) {
         GlyphIterationState info = GlyphIterationState(CGPointMake(0, 0), CGPointMake(0, 0), lineExtents.y(), lineExtents.y() + lineExtents.height(), lineExtents.x() + lineExtents.width(), lineExtents.x());
         const Font* localFont = glyphBuffer.fontAt(index);
-        if (!localFont || (!isSVG && localFont->isSVGFont()) || (isSVG && localFont != fontData)) {
+        if (!localFont) {
             // The advances will get all messed up if we do anything other than bail here.
             result.clear();
             break;
@@ -550,7 +527,7 @@ DashArray FontCascade::dashesForIntersectionsWithRect(const TextRun& run, const
 bool FontCascade::primaryFontIsSystemFont() const
 {
     const auto& fontData = primaryFont();
-    return !fontData.isSVGFont() && CTFontDescriptorIsSystemUIFont(adoptCF(CTFontCopyFontDescriptor(fontData.platformData().ctFont())).get());
+    return CTFontDescriptorIsSystemUIFont(adoptCF(CTFontCopyFontDescriptor(fontData.platformData().ctFont())).get());
 }
 
 void FontCascade::adjustSelectionRectForComplexText(const TextRun& run, LayoutRect& selectionRect, int from, int to) const
@@ -599,7 +576,7 @@ void FontCascade::drawEmphasisMarksForComplexText(GraphicsContext& context, cons
     if (glyphBuffer.isEmpty())
         return;
 
-    drawEmphasisMarks(context, run, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
+    drawEmphasisMarks(context, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
 }
 
 float FontCascade::floatWidthForComplexText(const TextRun& run, HashSet<const Font*>* fallbackFonts, GlyphOverflow* glyphOverflow) const
index 5b1e72e..52570ec 100644 (file)
@@ -466,8 +466,6 @@ bool HarfBuzzShaper::shapeHarfBuzzRuns(bool shouldSetDirection)
         unsigned runIndex = m_run.rtl() ? m_harfBuzzRuns.size() - i - 1 : i;
         HarfBuzzRun* currentRun = m_harfBuzzRuns[runIndex].get();
         const Font* currentFontData = currentRun->fontData();
-        if (currentFontData->isSVGFont())
-            return false;
 
         hb_buffer_set_script(harfBuzzBuffer.get(), currentRun->script());
         if (shouldSetDirection)
index 94e69c6..e3e92d5 100644 (file)
@@ -51,13 +51,13 @@ class TextLayout {
 public:
     static bool isNeeded(RenderText& text, const FontCascade& font)
     {
-        TextRun run = RenderBlock::constructTextRun(&text, font, &text, text.style());
+        TextRun run = RenderBlock::constructTextRun(&text, text.style());
         return font.codePath(run) == FontCascade::Complex;
     }
 
     TextLayout(RenderText& text, const FontCascade& font, float xPos)
         : m_font(font)
-        , m_run(constructTextRun(text, font, xPos))
+        , m_run(constructTextRun(text, xPos))
         , m_controller(std::make_unique<ComplexTextController>(m_font, m_run, true))
     {
     }
@@ -74,9 +74,9 @@ public:
     }
 
 private:
-    static TextRun constructTextRun(RenderText& text, const FontCascade& font, float xPos)
+    static TextRun constructTextRun(RenderText& text, float xPos)
     {
-        TextRun run = RenderBlock::constructTextRun(&text, font, &text, text.style());
+        TextRun run = RenderBlock::constructTextRun(&text, text.style());
         run.setCharactersLength(text.textLength());
         ASSERT(run.charactersLength() >= run.length());
         run.setXPos(xPos);
index c442b2f..2396a4d 100644 (file)
@@ -99,7 +99,7 @@ void FontCascade::drawEmphasisMarksForComplexText(GraphicsContext& context, cons
     if (glyphBuffer.isEmpty())
         return;
 
-    drawEmphasisMarks(context, run, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
+    drawEmphasisMarks(context, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
 }
 
 float FontCascade::floatWidthForComplexText(const TextRun& run, HashSet<const Font*>* fallbackFonts, GlyphOverflow* glyphOverflow) const
index 3685cbe..173ceb1 100644 (file)
@@ -65,7 +65,7 @@ void EllipsisBox::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset, La
     }
 
     // FIXME: Why is this always LTR? Fix by passing correct text run flags below.
-    context.drawText(font, RenderBlock::constructTextRun(&blockFlow(), font, m_str, lineStyle, AllowTrailingExpansion), LayoutPoint(x() + paintOffset.x(), y() + paintOffset.y() + lineStyle.fontMetrics().ascent()));
+    context.drawText(font, RenderBlock::constructTextRun(m_str, lineStyle, AllowTrailingExpansion), LayoutPoint(x() + paintOffset.x(), y() + paintOffset.y() + lineStyle.fontMetrics().ascent()));
 
     // Restore the regular fill color.
     if (textColor != context.fillColor())
@@ -114,7 +114,7 @@ IntRect EllipsisBox::selectionRect()
     const RootInlineBox& rootBox = root();
     // FIXME: Why is this always LTR? Fix by passing correct text run flags below.
     LayoutRect selectionRect = LayoutRect(x(), y() + rootBox.selectionTopAdjustedForPrecedingBlock(), 0, rootBox.selectionHeightAdjustedForPrecedingBlock());
-    font.adjustSelectionRectForText(RenderBlock::constructTextRun(&blockFlow(), font, m_str, lineStyle, AllowTrailingExpansion), selectionRect);
+    font.adjustSelectionRectForText(RenderBlock::constructTextRun(m_str, lineStyle, AllowTrailingExpansion), selectionRect);
     // FIXME: use directional pixel snapping instead.
     return enclosingIntRect(selectionRect);
 }
@@ -135,7 +135,7 @@ void EllipsisBox::paintSelection(GraphicsContext& context, const LayoutPoint& pa
     GraphicsContextStateSaver stateSaver(context);
     // FIXME: Why is this always LTR? Fix by passing correct text run flags below.
     LayoutRect selectionRect = LayoutRect(x() + paintOffset.x(), y() + paintOffset.y() + rootBox.selectionTop(), 0, rootBox.selectionHeight());
-    TextRun run = RenderBlock::constructTextRun(&blockFlow(), font, m_str, style, AllowTrailingExpansion);
+    TextRun run = RenderBlock::constructTextRun(m_str, style, AllowTrailingExpansion);
     font.adjustSelectionRectForText(run, selectionRect, 0, -1);
     context.fillRect(snapRectToDevicePixelsWithWritingDirection(selectionRect, renderer().document().deviceScaleFactor(), run.ltr()), c);
 }
index 39c527b..27304cf 100644 (file)
@@ -46,7 +46,6 @@
 #include "RenderTheme.h"
 #include "RenderView.h"
 #include "Settings.h"
-#include "SVGTextRunRenderingContext.h"
 #include "Text.h"
 #include "TextDecorationPainter.h"
 #include "TextPaintStyle.h"
@@ -206,7 +205,7 @@ LayoutRect InlineTextBox::localSelectionRect(int startPos, int endPos) const
 
     String hyphenatedStringBuffer;
     bool respectHyphen = ePos == m_len && hasHyphen();
-    TextRun textRun = constructTextRun(lineStyle, font, respectHyphen ? &hyphenatedStringBuffer : 0);
+    TextRun textRun = constructTextRun(lineStyle, respectHyphen ? &hyphenatedStringBuffer : 0);
 
     LayoutRect selectionRect = LayoutRect(LayoutPoint(logicalLeft(), selectionTop), LayoutSize(m_logicalWidth, selectionHeight));
     // Avoid computing the font width when the entire line box is selected as an optimization.
@@ -513,7 +512,7 @@ void InlineTextBox::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset,
     }
 
     String hyphenatedStringBuffer;
-    TextRun textRun = constructTextRun(lineStyle, font, string, maximumLength, hasHyphen() ? &hyphenatedStringBuffer : nullptr);
+    TextRun textRun = constructTextRun(lineStyle, string, maximumLength, hasHyphen() ? &hyphenatedStringBuffer : nullptr);
     if (hasHyphen())
         length = textRun.length();
 
@@ -650,7 +649,7 @@ void InlineTextBox::paintSelection(GraphicsContext& context, const FloatPoint& b
 
     String hyphenatedStringBuffer;
     bool respectHyphen = ePos == length && hasHyphen();
-    TextRun textRun = constructTextRun(style, font, string, renderer().textLength() - m_start, respectHyphen ? &hyphenatedStringBuffer : nullptr);
+    TextRun textRun = constructTextRun(style, string, renderer().textLength() - m_start, respectHyphen ? &hyphenatedStringBuffer : nullptr);
     if (respectHyphen)
         ePos = textRun.length();
 
@@ -688,7 +687,7 @@ void InlineTextBox::paintCompositionBackground(GraphicsContext& context, const F
 
     LayoutUnit deltaY = renderer().style().isFlippedLinesWritingMode() ? selectionBottom() - logicalBottom() : logicalTop() - selectionTop();
     LayoutRect selectionRect = LayoutRect(boxOrigin.x(), boxOrigin.y() - deltaY, 0, selectionHeight());
-    TextRun textRun = constructTextRun(style, font);
+    TextRun textRun = constructTextRun(style);
     font.adjustSelectionRectForText(textRun, selectionRect, sPos, ePos);
     context.fillRect(snapRectToDevicePixelsWithWritingDirection(selectionRect, renderer().document().deviceScaleFactor(), textRun.ltr()), compositionColor);
 }
@@ -781,7 +780,7 @@ void InlineTextBox::paintDocumentMarker(GraphicsContext& context, const FloatPoi
         int deltaY = renderer().style().isFlippedLinesWritingMode() ? selectionBottom() - logicalBottom() : logicalTop() - selectionTop();
         int selHeight = selectionHeight();
         FloatPoint startPoint(boxOrigin.x(), boxOrigin.y() - deltaY);
-        TextRun run = constructTextRun(style, font);
+        TextRun run = constructTextRun(style);
 
         LayoutRect selectionRect = LayoutRect(startPoint, FloatSize(0, selHeight));
         font.adjustSelectionRectForText(run, selectionRect, startPosition, endPosition);
@@ -826,7 +825,7 @@ void InlineTextBox::paintTextMatchMarker(GraphicsContext& context, const FloatPo
 
     int sPos = std::max<int>(marker.startOffset() - m_start, 0);
     int ePos = std::min<int>(marker.endOffset() - m_start, m_len);
-    TextRun run = constructTextRun(style, font);
+    TextRun run = constructTextRun(style);
     font.adjustSelectionRectForText(run, selectionRect, sPos, ePos);
 
     if (selectionRect.isEmpty())
@@ -987,7 +986,7 @@ int InlineTextBox::offsetForPosition(float lineOffset, bool includePartialGlyphs
 
     const RenderStyle& lineStyle = this->lineStyle();
     const FontCascade& font = fontToUse(lineStyle, renderer());
-    return font.offsetForPosition(constructTextRun(lineStyle, font), lineOffset - logicalLeft(), includePartialGlyphs);
+    return font.offsetForPosition(constructTextRun(lineStyle), lineOffset - logicalLeft(), includePartialGlyphs);
 }
 
 float InlineTextBox::positionForOffset(int offset) const
@@ -1004,12 +1003,12 @@ float InlineTextBox::positionForOffset(int offset) const
     int to = !isLeftToRightDirection() ? m_len : offset - m_start;
     // FIXME: Do we need to add rightBearing here?
     LayoutRect selectionRect = LayoutRect(logicalLeft(), 0, 0, 0);
-    TextRun run = constructTextRun(lineStyle, font);
+    TextRun run = constructTextRun(lineStyle);
     font.adjustSelectionRectForText(run, selectionRect, from, to);
     return snapRectToDevicePixelsWithWritingDirection(selectionRect, renderer().document().deviceScaleFactor(), run.ltr()).maxX();
 }
 
-TextRun InlineTextBox::constructTextRun(const RenderStyle& style, const FontCascade& font, String* hyphenatedStringBuffer) const
+TextRun InlineTextBox::constructTextRun(const RenderStyle& style, String* hyphenatedStringBuffer) const
 {
     ASSERT(renderer().text());
 
@@ -1020,10 +1019,10 @@ TextRun InlineTextBox::constructTextRun(const RenderStyle& style, const FontCasc
     if (string.length() != length || startPos)
         string = string.substringSharingImpl(startPos, length);
 
-    return constructTextRun(style, font, string, renderer().textLength() - startPos, hyphenatedStringBuffer);
+    return constructTextRun(style, string, renderer().textLength() - startPos, hyphenatedStringBuffer);
 }
 
-TextRun InlineTextBox::constructTextRun(const RenderStyle& style, const FontCascade& font, String string, unsigned maximumLength, String* hyphenatedStringBuffer) const
+TextRun InlineTextBox::constructTextRun(const RenderStyle& style, String string, unsigned maximumLength, String* hyphenatedStringBuffer) const
 {
     unsigned length = string.length();
 
@@ -1038,8 +1037,6 @@ TextRun InlineTextBox::constructTextRun(const RenderStyle& style, const FontCasc
 
     TextRun run(string, textPos(), expansion(), expansionBehavior(), direction(), dirOverride() || style.rtlOrdering() == VisualOrder, !renderer().canUseSimpleFontCodePath());
     run.setTabSize(!style.collapseWhiteSpace(), style.tabSize());
-    if (font.primaryFont().isSVGFont())
-        run.setRenderingContext(SVGTextRunRenderingContext::create(renderer()));
 
     // Propagate the maximum length of the characters buffer to the TextRun, even when we're only processing a substring.
     run.setCharactersLength(maximumLength);
index a2c4514..0a32862 100644 (file)
@@ -112,8 +112,8 @@ private:
     LayoutUnit selectionBottom() const;
     LayoutUnit selectionHeight() const;
 
-    TextRun constructTextRun(const RenderStyle&, const FontCascade&, String* hyphenatedStringBuffer = nullptr) const;
-    TextRun constructTextRun(const RenderStyle&, const FontCascade&, String, unsigned maximumLength, String* hyphenatedStringBuffer = nullptr) const;
+    TextRun constructTextRun(const RenderStyle&, String* hyphenatedStringBuffer = nullptr) const;
+    TextRun constructTextRun(const RenderStyle&, String, unsigned maximumLength, String* hyphenatedStringBuffer = nullptr) const;
 
 public:
     FloatRect calculateBoundaries() const override { return FloatRect(x(), y(), width(), height()); }
index dd5b048..6fb5e88 100644 (file)
@@ -65,7 +65,6 @@
 #include "RenderTheme.h"
 #include "RenderTreePosition.h"
 #include "RenderView.h"
-#include "SVGTextRunRenderingContext.h"
 #include "Settings.h"
 #include "ShadowRoot.h"
 #include "TextBreakIterator.h"
@@ -3703,7 +3702,7 @@ const char* RenderBlock::renderName() const
     return "RenderBlock";
 }
 
-TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade& font, StringView stringView, const RenderStyle& style, ExpansionBehavior expansion, TextRunFlags flags)
+TextRun RenderBlock::constructTextRun(StringView stringView, const RenderStyle& style, ExpansionBehavior expansion, TextRunFlags flags)
 {
     TextDirection textDirection = LTR;
     bool directionalOverride = style.rtlOrdering() == VisualOrder;
@@ -3713,40 +3712,34 @@ TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade&
         if (flags & RespectDirectionOverride)
             directionalOverride |= isOverride(style.unicodeBidi());
     }
-    TextRun run(stringView, 0, 0, expansion, textDirection, directionalOverride);
-    if (font.primaryFont().isSVGFont()) {
-        ASSERT(context); // FIXME: Thread a RenderObject& to this point so we don't have to dereference anything.
-        run.setRenderingContext(SVGTextRunRenderingContext::create(*context));
-    }
-
-    return run;
+    return TextRun(stringView, 0, 0, expansion, textDirection, directionalOverride);
 }
 
-TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade& font, const String& string, const RenderStyle& style, ExpansionBehavior expansion, TextRunFlags flags)
+TextRun RenderBlock::constructTextRun(const String& string, const RenderStyle& style, ExpansionBehavior expansion, TextRunFlags flags)
 {
-    return constructTextRun(context, font, StringView(string), style, expansion, flags);
+    return constructTextRun(StringView(string), style, expansion, flags);
 }
 
-TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade& font, const RenderText* text, const RenderStyle& style, ExpansionBehavior expansion)
+TextRun RenderBlock::constructTextRun(const RenderText* text, const RenderStyle& style, ExpansionBehavior expansion)
 {
-    return constructTextRun(context, font, text->stringView(), style, expansion);
+    return constructTextRun(text->stringView(), style, expansion);
 }
 
-TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade& font, const RenderText* text, unsigned offset, unsigned length, const RenderStyle& style, ExpansionBehavior expansion)
+TextRun RenderBlock::constructTextRun(const RenderText* text, unsigned offset, unsigned length, const RenderStyle& style, ExpansionBehavior expansion)
 {
     unsigned stop = offset + length;
     ASSERT(stop <= text->textLength());
-    return constructTextRun(context, font, text->stringView(offset, stop), style, expansion);
+    return constructTextRun(text->stringView(offset, stop), style, expansion);
 }
 
-TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade& font, const LChar* characters, int length, const RenderStyle& style, ExpansionBehavior expansion)
+TextRun RenderBlock::constructTextRun(const LChar* characters, int length, const RenderStyle& style, ExpansionBehavior expansion)
 {
-    return constructTextRun(context, font, StringView(characters, length), style, expansion);
+    return constructTextRun(StringView(characters, length), style, expansion);
 }
 
-TextRun RenderBlock::constructTextRun(RenderObject* context, const FontCascade& font, const UChar* characters, int length, const RenderStyle& style, ExpansionBehavior expansion)
+TextRun RenderBlock::constructTextRun(const UChar* characters, int length, const RenderStyle& style, ExpansionBehavior expansion)
 {
-    return constructTextRun(context, font, StringView(characters, length), style, expansion);
+    return constructTextRun(StringView(characters, length), style, expansion);
 }
 
 RenderBlock* RenderBlock::createAnonymousWithParentRendererAndDisplay(const RenderObject* parent, EDisplay display)
index 073466f..f25158b 100644 (file)
@@ -205,17 +205,17 @@ public:
         return obj.isFloating() || (obj.isOutOfFlowPositioned() && !obj.style().isOriginalDisplayInlineType() && !obj.container()->isRenderInline());
     }
 
-    static TextRun constructTextRun(RenderObject* context, const FontCascade&, StringView, const RenderStyle&,
+    static TextRun constructTextRun(StringView, const RenderStyle&,
         ExpansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextRunFlags = DefaultTextRunFlags);
-    static TextRun constructTextRun(RenderObject* context, const FontCascade&, const String&, const RenderStyle&,
+    static TextRun constructTextRun(const String&, const RenderStyle&,
         ExpansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextRunFlags = DefaultTextRunFlags);
-    static TextRun constructTextRun(RenderObject* context, const FontCascade&, const RenderText*, const RenderStyle&,
+    static TextRun constructTextRun(const RenderText*, const RenderStyle&,
         ExpansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion);
-    static TextRun constructTextRun(RenderObject* context, const FontCascade&, const RenderText*, unsigned offset, unsigned length, const RenderStyle&,
+    static TextRun constructTextRun(const RenderText*, unsigned offset, unsigned length, const RenderStyle&,
         ExpansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion);
-    static TextRun constructTextRun(RenderObject* context, const FontCascade&, const LChar* characters, int length, const RenderStyle&,
+    static TextRun constructTextRun(const LChar* characters, int length, const RenderStyle&,
         ExpansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion);
-    static TextRun constructTextRun(RenderObject* context, const FontCascade&, const UChar* characters, int length, const RenderStyle&,
+    static TextRun constructTextRun(const UChar* characters, int length, const RenderStyle&,
         ExpansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion);
     
     LayoutUnit paginationStrut() const;
index 5e96b4d..2dae990 100644 (file)
@@ -4020,7 +4020,7 @@ static inline void stripTrailingSpace(float& inlineMax, float& inlineMin, Render
         RenderText& renderText = downcast<RenderText>(*trailingSpaceChild);
         const UChar space = ' ';
         const FontCascade& font = renderText.style().fontCascade(); // FIXME: This ignores first-line.
-        float spaceWidth = font.width(RenderBlock::constructTextRun(&renderText, font, &space, 1, renderText.style()));
+        float spaceWidth = font.width(RenderBlock::constructTextRun(&space, 1, renderText.style()));
         inlineMax -= spaceWidth + font.wordSpacing();
         if (inlineMin > inlineMax)
             inlineMin = inlineMax;
index 15a1d5d..da0f2e4 100644 (file)
@@ -2079,8 +2079,8 @@ void RenderBlockFlow::checkLinesForTextOverflow()
     const FontCascade& font = style().fontCascade();
     static NeverDestroyed<AtomicString> ellipsisStr(&horizontalEllipsis, 1);
     const FontCascade& firstLineFont = firstLineStyle().fontCascade();
-    float firstLineEllipsisWidth = firstLineFont.width(constructTextRun(this, firstLineFont, &horizontalEllipsis, 1, firstLineStyle()));
-    float ellipsisWidth = (font == firstLineFont) ? firstLineEllipsisWidth : font.width(constructTextRun(this, font, &horizontalEllipsis, 1, style()));
+    float firstLineEllipsisWidth = firstLineFont.width(constructTextRun(&horizontalEllipsis, 1, firstLineStyle()));
+    float ellipsisWidth = (font == firstLineFont) ? firstLineEllipsisWidth : font.width(constructTextRun(&horizontalEllipsis, 1, style()));
 
     // For LTR text truncation, we want to get the right edge of our padding box, and then we want to see
     // if the right edge of a line box exceeds that.  For RTL, we use the left edge of the padding box and
index bb1eb1d..09dea3c 100644 (file)
@@ -996,10 +996,10 @@ void RenderDeprecatedFlexibleBox::applyLineClamp(FlexBoxIterator& iterator, bool
         LayoutUnit totalWidth;
         InlineBox* anchorBox = lastLine->lastChild();
         if (anchorBox && anchorBox->renderer().style().isLink())
-            totalWidth = anchorBox->logicalWidth() + font.width(constructTextRun(this, font, ellipsisAndSpace, 2, style()));
+            totalWidth = anchorBox->logicalWidth() + font.width(constructTextRun(ellipsisAndSpace, 2, style()));
         else {
             anchorBox = nullptr;
-            totalWidth = font.width(constructTextRun(this, font, &horizontalEllipsis, 1, style()));
+            totalWidth = font.width(constructTextRun(&horizontalEllipsis, 1, style()));
         }
 
         // See if this width can be accommodated on the last visible line
index 4f36419..5126e73 100644 (file)
@@ -133,7 +133,7 @@ void RenderFileUploadControl::paintObject(PaintInfo& paintInfo, const LayoutPoin
     if (paintInfo.phase == PaintPhaseForeground) {
         const String& displayedFilename = fileTextValue();
         const FontCascade& font = style().fontCascade();
-        TextRun textRun = constructTextRun(this, font, displayedFilename, style(), AllowTrailingExpansion, RespectDirection | RespectDirectionOverride);
+        TextRun textRun = constructTextRun(displayedFilename, style(), AllowTrailingExpansion, RespectDirection | RespectDirectionOverride);
 
 #if PLATFORM(IOS)
         int iconHeight = nodeHeight(uploadButton());
@@ -202,11 +202,10 @@ void RenderFileUploadControl::computeIntrinsicLogicalWidths(LayoutUnit& minLogic
     const String characterAsString = String(&character, 1);
     const FontCascade& font = style().fontCascade();
     // FIXME: Remove the need for this const_cast by making constructTextRun take a const RenderObject*.
-    RenderFileUploadControl* renderer = const_cast<RenderFileUploadControl*>(this);
-    float minDefaultLabelWidth = defaultWidthNumChars * font.width(constructTextRun(renderer, font, characterAsString, style(), AllowTrailingExpansion));
+    float minDefaultLabelWidth = defaultWidthNumChars * font.width(constructTextRun(characterAsString, style(), AllowTrailingExpansion));
 
     const String label = theme().fileListDefaultLabel(inputElement().multiple());
-    float defaultLabelWidth = font.width(constructTextRun(renderer, font, label, style(), AllowTrailingExpansion));
+    float defaultLabelWidth = font.width(constructTextRun(label, style(), AllowTrailingExpansion));
     if (HTMLInputElement* button = uploadButton())
         if (RenderObject* buttonRenderer = button->renderer())
             defaultLabelWidth += buttonRenderer->maxPreferredLogicalWidth() + afterButtonSpacing;
index bdde971..13860e4 100644 (file)
@@ -193,7 +193,7 @@ ImageSizeChangeType RenderImage::setImageSizeForAltText(CachedImage* newImage /*
     // we have an alt and the user meant it (its not a text we invented)
     if (!m_altText.isEmpty()) {
         const FontCascade& font = style().fontCascade();
-        IntSize paddedTextSize(paddingWidth + std::min(ceilf(font.width(RenderBlock::constructTextRun(this, font, m_altText, style()))), maxAltTextWidth), paddingHeight + std::min(font.fontMetrics().height(), maxAltTextHeight));
+        IntSize paddedTextSize(paddingWidth + std::min(ceilf(font.width(RenderBlock::constructTextRun(m_altText, style()))), maxAltTextWidth), paddingHeight + std::min(font.fontMetrics().height(), maxAltTextHeight));
         imageSize = imageSize.expandedTo(paddedTextSize);
     }
 
@@ -439,7 +439,7 @@ void RenderImage::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOf
 
                 // Only draw the alt text if it'll fit within the content box,
                 // and only if it fits above the error image.
-                TextRun textRun = RenderBlock::constructTextRun(this, font, text, style());
+                TextRun textRun = RenderBlock::constructTextRun(text, style());
                 LayoutUnit textWidth = font.width(textRun);
                 if (errorPictureDrawn) {
                     if (usableWidth >= textWidth && fontMetrics.height() <= imageOffset.height())
index 6d10f30..ced7741 100644 (file)
@@ -129,7 +129,7 @@ void RenderListBox::updateFromElement()
             if (!text.isEmpty()) {
                 applyTextTransform(style(), text, ' ');
                 // FIXME: Why is this always LTR? Can't text direction affect the width?
-                TextRun textRun = constructTextRun(this, itemFont, text, style(), AllowTrailingExpansion);
+                TextRun textRun = constructTextRun(text, style(), AllowTrailingExpansion);
                 float textWidth = itemFont.width(textRun);
                 width = std::max(width, textWidth);
             }
index adec6f2..31f7fe5 100644 (file)
@@ -1314,7 +1314,7 @@ void RenderListMarker::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffse
         return;
 
     const FontCascade& font = style().fontCascade();
-    TextRun textRun = RenderBlock::constructTextRun(this, font, m_text, style());
+    TextRun textRun = RenderBlock::constructTextRun(m_text, style());
 
     GraphicsContextStateSaver stateSaver(context, false);
     if (!style().isHorizontalWritingMode()) {
@@ -1543,7 +1543,7 @@ void RenderListMarker::computePreferredLogicalWidths()
             break;
         case Asterisks:
         case Footnotes: {
-            TextRun run = RenderBlock::constructTextRun(this, font, m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+            TextRun run = RenderBlock::constructTextRun(m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
             logicalWidth = font.width(run); // no suffix for these types
         }
             break;
@@ -1630,10 +1630,10 @@ void RenderListMarker::computePreferredLogicalWidths()
             if (m_text.isEmpty())
                 logicalWidth = 0;
             else {
-                TextRun run = RenderBlock::constructTextRun(this, font, m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+                TextRun run = RenderBlock::constructTextRun(m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
                 LayoutUnit itemWidth = font.width(run);
                 UChar suffixSpace[2] = { listMarkerSuffix(type, m_listItem.value()), ' ' };
-                LayoutUnit suffixSpaceWidth = font.width(RenderBlock::constructTextRun(this, font, suffixSpace, 2, style()));
+                LayoutUnit suffixSpaceWidth = font.width(RenderBlock::constructTextRun(suffixSpace, 2, style()));
                 logicalWidth = itemWidth + suffixSpaceWidth;
             }
             break;
@@ -1763,7 +1763,7 @@ FloatRect RenderListMarker::getRelativeMarkerRect()
         case Asterisks:
         case Footnotes: {
             const FontCascade& font = style().fontCascade();
-            TextRun run = RenderBlock::constructTextRun(this, font, m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+            TextRun run = RenderBlock::constructTextRun(m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
             relativeRect = FloatRect(0, 0, font.width(run), font.fontMetrics().height());
             break;
         }
@@ -1857,10 +1857,10 @@ FloatRect RenderListMarker::getRelativeMarkerRect()
             if (m_text.isEmpty())
                 return FloatRect();
             const FontCascade& font = style().fontCascade();
-            TextRun run = RenderBlock::constructTextRun(this, font, m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+            TextRun run = RenderBlock::constructTextRun(m_text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
             float itemWidth = font.width(run);
             UChar suffixSpace[2] = { listMarkerSuffix(type, m_listItem.value()), ' ' };
-            float suffixSpaceWidth = font.width(RenderBlock::constructTextRun(this, font, suffixSpace, 2, style()));
+            float suffixSpaceWidth = font.width(RenderBlock::constructTextRun(suffixSpace, 2, style()));
             relativeRect = FloatRect(0, 0, itemWidth + suffixSpaceWidth, font.fontMetrics().height());
     }
 
index eb97235..478f304 100644 (file)
@@ -222,13 +222,13 @@ void RenderMenuList::updateOptionsWidth()
                 optionWidth += minimumValueForLength(optionStyle->textIndent(), 0);
             if (!text.isEmpty()) {
                 const FontCascade& font = style().fontCascade();
-                TextRun run = RenderBlock::constructTextRun(this, font, text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+                TextRun run = RenderBlock::constructTextRun(text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
                 optionWidth += font.width(run);
             }
             maxOptionWidth = std::max(maxOptionWidth, optionWidth);
         } else if (!text.isEmpty()) {
             const FontCascade& font = style().fontCascade();
-            TextRun run = RenderBlock::constructTextRun(this, font, text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+            TextRun run = RenderBlock::constructTextRun(text, style(), AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
             maxOptionWidth = std::max(maxOptionWidth, font.width(run));
         }
     }
index 03d2567..ff695bd 100644 (file)
@@ -492,7 +492,7 @@ ALWAYS_INLINE float RenderText::widthFromCache(const FontCascade& f, int start,
         return w;
     }
 
-    TextRun run = RenderBlock::constructTextRun(const_cast<RenderText*>(this), f, this, start, len, style);
+    TextRun run = RenderBlock::constructTextRun(this, start, len, style);
     run.setCharactersLength(textLength() - start);
     ASSERT(run.charactersLength() >= run.length());
 
@@ -627,7 +627,7 @@ void RenderText::trimmedPrefWidths(float leadWidth,
         const FontCascade& font = style.fontCascade(); // FIXME: This ignores first-line.
         if (stripFrontSpaces) {
             const UChar space = ' ';
-            float spaceWidth = font.width(RenderBlock::constructTextRun(this, font, &space, 1, style));
+            float spaceWidth = font.width(RenderBlock::constructTextRun(&space, 1, style));
             maxW -= spaceWidth;
         } else
             maxW += font.wordSpacing();
@@ -720,7 +720,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth)
 static inline float hyphenWidth(RenderText* renderer, const FontCascade& font)
 {
     const RenderStyle& style = renderer->style();
-    return font.width(RenderBlock::constructTextRun(renderer, font, style.hyphenString().string(), style));
+    return font.width(RenderBlock::constructTextRun(style.hyphenString().string(), style));
 }
 
 static float maxWordFragmentWidth(RenderText* renderer, const RenderStyle& style, const FontCascade& font, StringView word, int minimumPrefixLength, unsigned minimumSuffixLength, int& suffixStart, HashSet<const Font*>& fallbackFonts, GlyphOverflow& glyphOverflow)
@@ -747,7 +747,7 @@ static float maxWordFragmentWidth(RenderText* renderer, const RenderStyle& style
         fragmentWithHyphen.append(word.substring(suffixStart, fragmentLength));
         fragmentWithHyphen.append(style.hyphenString());
 
-        TextRun run = RenderBlock::constructTextRun(renderer, font, fragmentWithHyphen.toString(), style);
+        TextRun run = RenderBlock::constructTextRun(fragmentWithHyphen.toString(), style);
         run.setCharactersLength(fragmentWithHyphen.length());
         run.setCharacterScanForCodePath(!renderer->canUseSimpleFontCodePath());
         float fragmentWidth = font.width(run, &fallbackFonts, &glyphOverflow);
@@ -794,7 +794,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Fo
 
     // Non-zero only when kerning is enabled, in which case we measure words with their trailing
     // space, then subtract its width.
-    WordTrailingSpace wordTrailingSpace(*this, style);
+    WordTrailingSpace wordTrailingSpace(style);
     // If automatic hyphenation is allowed, we keep track of the width of the widest word (or word
     // fragment) encountered so far, and only try hyphenating words that are wider.
     float maxWordWidth = std::numeric_limits<float>::max();
@@ -973,7 +973,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Fo
                     m_maxWidth = currMaxWidth;
                 currMaxWidth = 0;
             } else {
-                TextRun run = RenderBlock::constructTextRun(this, font, this, i, 1, style);
+                TextRun run = RenderBlock::constructTextRun(this, i, 1, style);
                 run.setCharactersLength(len - i);
                 ASSERT(run.charactersLength() >= run.length());
                 run.setTabSize(!style.collapseWhiteSpace(), style.tabSize());
@@ -1320,7 +1320,7 @@ float RenderText::width(unsigned from, unsigned len, const FontCascade& f, float
         } else
             w = widthFromCache(f, from, len, xPos, fallbackFonts, glyphOverflow, style);
     } else {
-        TextRun run = RenderBlock::constructTextRun(const_cast<RenderText*>(this), f, this, from, len, style);
+        TextRun run = RenderBlock::constructTextRun(this, from, len, style);
         run.setCharactersLength(textLength() - from);
         ASSERT(run.charactersLength() >= run.length());
 
index 88fd7b9..3cd99dd 100644 (file)
@@ -134,7 +134,7 @@ float RenderTextControl::getAverageCharWidth()
     const UChar ch = '0';
     const String str = String(&ch, 1);
     const FontCascade& font = style().fontCascade();
-    TextRun textRun = constructTextRun(this, font, str, style(), AllowTrailingExpansion);
+    TextRun textRun = constructTextRun(str, style(), AllowTrailingExpansion);
     return font.width(textRun);
 }
 
index 36043d0..de90fae 100644 (file)
@@ -568,20 +568,18 @@ static void adjustSelectListButtonStyle(RenderStyle& style, Element& element)
     
 class RenderThemeMeasureTextClient : public MeasureTextClient {
 public:
-    RenderThemeMeasureTextClient(const FontCascade& font, RenderObject& renderObject, const RenderStyle& style)
+    RenderThemeMeasureTextClient(const FontCascade& font, const RenderStyle& style)
         : m_font(font)
-        , m_renderObject(renderObject)
         , m_style(style)
     {
     }
     float measureText(const String& string) const override
     {
-        TextRun run = RenderBlock::constructTextRun(&m_renderObject, m_font, string, m_style, AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
+        TextRun run = RenderBlock::constructTextRun(string, m_style, AllowTrailingExpansion | ForbidLeadingExpansion, DefaultTextRunFlags);
         return m_font.width(run);
     }
 private:
     const FontCascade& m_font;
-    RenderObject& m_renderObject;
     const RenderStyle& m_style;
 };
 
@@ -602,11 +600,7 @@ static void adjustInputElementButtonStyle(RenderStyle& style, HTMLInputElement&
     // Enforce the width and set the box-sizing to content-box to not conflict with the padding.
     FontCascade font = style.fontCascade();
     
-    RenderObject* renderer = inputElement.renderer();
-    if (font.primaryFont().isSVGFont() && !renderer)
-        return;
-    
-    float maximumWidth = localizedDateCache().maximumWidthForDateType(dateType, font, RenderThemeMeasureTextClient(font, *renderer, style));
+    float maximumWidth = localizedDateCache().maximumWidthForDateType(dateType, font, RenderThemeMeasureTextClient(font, style));
 
     ASSERT(maximumWidth >= 0);
 
index 1b98223..7d6bc8e 100644 (file)
@@ -182,8 +182,6 @@ static AvoidanceReasonFlags canUseForFontAndText(const RenderBlockFlow& flow, In
     auto& primaryFont = style.fontCascade().primaryFont();
     if (primaryFont.isLoading())
         SET_REASON_AND_RETURN_IF_NEEDED(FlowIsMissingPrimaryFont, reasons, includeReasons);
-    if (primaryFont.isSVGFont())
-        SET_REASON_AND_RETURN_IF_NEEDED(FlowHasSVGFont, reasons, includeReasons);
 
     for (const auto& textRenderer : childrenOfType<RenderText>(flow)) {
         if (style.textAlign() == JUSTIFY && !textRenderer.originalText().containsOnlyLatin1())
index 179e936..597f600 100644 (file)
@@ -65,9 +65,8 @@ struct WordMeasurement {
 };
 
 struct WordTrailingSpace {
-    WordTrailingSpace(RenderText& renderer, const RenderStyle& style, TextLayout* textLayout = nullptr)
-        : m_renderer(renderer)
-        , m_style(style)
+    WordTrailingSpace(const RenderStyle& style, TextLayout* textLayout = nullptr)
+        : m_style(style)
         , m_textLayout(textLayout)
     {
     }
@@ -79,7 +78,7 @@ struct WordTrailingSpace {
 
         const FontCascade& font = m_style.fontCascade();
         if (font.enableKerning() && !m_textLayout)
-            m_width = font.width(RenderBlock::constructTextRun(&m_renderer, font, &space, 1, m_style), &fallbackFonts) + font.wordSpacing();
+            m_width = font.width(RenderBlock::constructTextRun(&space, 1, m_style), &fallbackFonts) + font.wordSpacing();
         m_state = WordTrailingSpaceState::Computed;
         return m_width;
     }
@@ -88,7 +87,6 @@ private:
     enum class WordTrailingSpaceState { Uninitialized, Computed };
     WordTrailingSpaceState m_state { WordTrailingSpaceState::Uninitialized };
     WTF::Optional<float> m_width;
-    RenderText& m_renderer;
     const RenderStyle& m_style;
     TextLayout* m_textLayout { nullptr };
 };
@@ -608,7 +606,7 @@ inline void updateCounterIfNeeded(RenderText& renderText)
 inline float measureHyphenWidth(RenderText& renderer, const FontCascade& font, HashSet<const Font*>* fallbackFonts = 0)
 {
     const RenderStyle& style = renderer.style();
-    return font.width(RenderBlock::constructTextRun(&renderer, font, style.hyphenString().string(), style), fallbackFonts);
+    return font.width(RenderBlock::constructTextRun(style.hyphenString().string(), style), fallbackFonts);
 }
 
 ALWAYS_INLINE float textWidth(RenderText& text, unsigned from, unsigned len, const FontCascade& font, float xPos, bool isFixedPitch, bool collapseWhiteSpace, HashSet<const Font*>& fallbackFonts, TextLayout* layout = nullptr)
@@ -622,7 +620,7 @@ ALWAYS_INLINE float textWidth(RenderText& text, unsigned from, unsigned len, con
     if (layout)
         return FontCascade::width(*layout, from, len, &fallbackFonts);
 
-    TextRun run = RenderBlock::constructTextRun(&text, font, &text, from, len, style);
+    TextRun run = RenderBlock::constructTextRun(&text, from, len, style);
     run.setCharactersLength(text.textLength() - from);
     ASSERT(run.charactersLength() >= run.length());
 
@@ -671,7 +669,7 @@ inline void tryHyphenating(RenderText& text, const FontCascade& font, const Atom
         return;
 
     const RenderStyle& style = text.style();
-    TextRun run = RenderBlock::constructTextRun(&text, font, &text, lastSpace, pos - lastSpace, style);
+    TextRun run = RenderBlock::constructTextRun(&text, lastSpace, pos - lastSpace, style);
     run.setCharactersLength(text.textLength() - lastSpace);
     ASSERT(run.charactersLength() >= run.length());
 
@@ -782,7 +780,7 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
     UChar lastCharacterFromPreviousRenderText = m_renderTextInfo.lineBreakIterator.lastCharacter();
     UChar lastCharacter = m_renderTextInfo.lineBreakIterator.lastCharacter();
     UChar secondToLastCharacter = m_renderTextInfo.lineBreakIterator.secondToLastCharacter();
-    WordTrailingSpace wordTrailingSpace(renderText, style, textLayout);
+    WordTrailingSpace wordTrailingSpace(style, textLayout);
     for (; m_current.offset() < renderText.textLength(); m_current.fastIncrementInTextNode()) {
         bool previousCharacterIsSpace = m_currentCharacterIsSpace;
         bool previousCharacterIsWS = m_currentCharacterIsWS;
index 327dd87..3cd5c4a 100644 (file)
@@ -72,7 +72,6 @@
 #include "SVGTextLayoutEngine.cpp"
 #include "SVGTextLayoutEngineBaseline.cpp"
 #include "SVGTextLayoutEngineSpacing.cpp"
-#include "SVGTextRunRenderingContext.cpp"
 #include "SVGTextMetrics.cpp"
 #include "SVGTextMetricsBuilder.cpp"
 #include "SVGTextQuery.cpp"
index 86063ac..f34e331 100644 (file)
@@ -43,7 +43,6 @@
 #include "SVGResourcesCache.h"
 #include "SVGRootInlineBox.h"
 #include "SVGTextElement.h"
-#include "SVGTextRunRenderingContext.h"
 #include "SVGTransformList.h"
 #include "SVGURIReference.h"
 #include "TransformState.h"
index ddf4a8f..b8bc579 100644 (file)
@@ -35,7 +35,6 @@
 #include "SVGRenderingContext.h"
 #include "SVGResourcesCache.h"
 #include "SVGRootInlineBox.h"
-#include "SVGTextRunRenderingContext.h"
 #include "TextPainter.h"
 
 namespace WebCore {
@@ -377,33 +376,14 @@ void SVGInlineTextBox::releasePaintingResource(GraphicsContext*& context, const
     m_paintingResource = nullptr;
 }
 
-bool SVGInlineTextBox::prepareGraphicsContextForTextPainting(GraphicsContext*& context, float scalingFactor, TextRun& textRun, RenderStyle* style)
+bool SVGInlineTextBox::prepareGraphicsContextForTextPainting(GraphicsContext*& context, float scalingFactor, RenderStyle* style)
 {
-    if (!acquirePaintingResource(context, scalingFactor, parent()->renderer(), style))
-        return false;
-
-#if ENABLE(SVG_FONTS)
-    // SVG Fonts need access to the painting resource used to draw the current text chunk.
-    if (auto* renderingContext = textRun.renderingContext())
-        static_cast<SVGTextRunRenderingContext*>(renderingContext)->setActivePaintingResource(m_paintingResource);
-#else
-    UNUSED_PARAM(textRun);
-#endif
-
-    return true;
+    return acquirePaintingResource(context, scalingFactor, parent()->renderer(), style);
 }
 
-void SVGInlineTextBox::restoreGraphicsContextAfterTextPainting(GraphicsContext*& context, TextRun& textRun)
+void SVGInlineTextBox::restoreGraphicsContextAfterTextPainting(GraphicsContext*& context)
 {
     releasePaintingResource(context, /* path */nullptr);
-
-#if ENABLE(SVG_FONTS)
-    TextRun::RenderingContext* renderingContext = textRun.renderingContext();
-    if (renderingContext)
-        static_cast<SVGTextRunRenderingContext*>(renderingContext)->setActivePaintingResource(nullptr);
-#else
-    UNUSED_PARAM(textRun);
-#endif
 }
 
 TextRun SVGInlineTextBox::constructTextRun(RenderStyle* style, const SVGTextFragment& fragment) const
@@ -417,9 +397,6 @@ TextRun SVGInlineTextBox::constructTextRun(RenderStyle* style, const SVGTextFrag
                 , direction()
                 , dirOverride() || style->rtlOrdering() == VisualOrder /* directionalOverride */);
 
-    if (style->fontCascade().primaryFont().isSVGFont())
-        run.setRenderingContext(SVGTextRunRenderingContext::create(renderer()));
-
     // We handle letter & word spacing ourselves.
     run.disableSpacing();
 
@@ -582,7 +559,7 @@ void SVGInlineTextBox::paintTextWithShadows(GraphicsContext& context, RenderStyl
 
     GraphicsContext* usedContext = &context;
     do {
-        if (!prepareGraphicsContextForTextPainting(usedContext, scalingFactor, textRun, style))
+        if (!prepareGraphicsContextForTextPainting(usedContext, scalingFactor, style))
             break;
 
         {
@@ -598,7 +575,7 @@ void SVGInlineTextBox::paintTextWithShadows(GraphicsContext& context, RenderStyl
                 usedContext->restore();
         }
 
-        restoreGraphicsContextAfterTextPainting(usedContext, textRun);
+        restoreGraphicsContextAfterTextPainting(usedContext);
 
         if (!shadow)
             break;
index 5645125..ce3c662 100644 (file)
@@ -74,8 +74,8 @@ private:
     bool acquirePaintingResource(GraphicsContext*&, float scalingFactor, RenderBoxModelObject&, RenderStyle*);
     void releasePaintingResource(GraphicsContext*&, const Path*);
 
-    bool prepareGraphicsContextForTextPainting(GraphicsContext*&, float scalingFactor, TextRun&, RenderStyle*);
-    void restoreGraphicsContextAfterTextPainting(GraphicsContext*&, TextRun&);
+    bool prepareGraphicsContextForTextPainting(GraphicsContext*&, float scalingFactor, RenderStyle*);
+    void restoreGraphicsContextAfterTextPainting(GraphicsContext*&);
 
     void paintDecoration(GraphicsContext&, TextDecoration, const SVGTextFragment&);
     void paintDecorationWithStyle(GraphicsContext&, TextDecoration, const SVGTextFragment&, RenderBoxModelObject& decorationRenderer);
index 0b1a318..8058747 100644 (file)
@@ -483,9 +483,6 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox& textBox, Rend
         // Apply dx/dy value adjustments to current text position, if needed.
         updateRelativePositionAdjustmentsIfNeeded(data.dx, data.dy);
 
-        // Calculate SVG Fonts kerning, if needed.
-        float kerning = spacingLayout.calculateSVGKerning(m_isVerticalText, visualMetrics.glyph());
-
         // Calculate CSS 'kerning', 'letter-spacing' and 'word-spacing' for next character, if needed.
         float spacing = spacingLayout.calculateCSSKerningAndSpacing(&svgStyle, lengthContext, currentCharacter);
 
@@ -497,7 +494,7 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox& textBox, Rend
                 if (y != SVGTextLayoutAttributes::emptyValue())
                     m_textPathCurrentOffset = y + m_textPathStartOffset;
 
-                m_textPathCurrentOffset += m_dy - kerning;
+                m_textPathCurrentOffset += m_dy;
                 m_dy = 0;
 
                 // Apply dx/dy correction and setup translations that move to the glyph midpoint.
@@ -508,7 +505,7 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox& textBox, Rend
                 if (x != SVGTextLayoutAttributes::emptyValue())
                     m_textPathCurrentOffset = x + m_textPathStartOffset;
 
-                m_textPathCurrentOffset += m_dx - kerning;
+                m_textPathCurrentOffset += m_dx;
                 m_dx = 0;
 
                 // Apply dx/dy correction and setup translations that move to the glyph midpoint.
@@ -548,13 +545,10 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox& textBox, Rend
                 angle -= 90;
         } else {
             // Apply all previously calculated shift values.
-            if (m_isVerticalText) {
+            if (m_isVerticalText)
                 x += baselineShift;
-                y -= kerning;
-            } else {
-                x -= kerning;
+            else
                 y -= baselineShift;
-            }
 
             x += m_dx;
             y += m_dy;
@@ -562,7 +556,7 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox& textBox, Rend
 
         // Determine whether we have to start a new fragment.
         bool shouldStartNewFragment = m_dx || m_dy || m_isVerticalText || m_inPathLayout || angle || angle != lastAngle
-            || orientationAngle || kerning || applySpacingToNextCharacter || definesTextLength;
+            || orientationAngle || applySpacingToNextCharacter || definesTextLength;
 
         // If we already started a fragment, close it now.
         if (didStartTextFragment && shouldStartNewFragment) {
index cb5d074..c3bdd4a 100644 (file)
@@ -25,7 +25,6 @@
 #include "SVGRenderStyle.h"
 
 #if ENABLE(SVG_FONTS)
-#include "SVGFontData.h"
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
 #endif
@@ -38,47 +37,6 @@ SVGTextLayoutEngineSpacing::SVGTextLayoutEngineSpacing(const FontCascade& font)
 {
 }
 
-float SVGTextLayoutEngineSpacing::calculateSVGKerning(bool isVerticalText, const SVGTextMetrics::Glyph& currentGlyph)
-{
-#if ENABLE(SVG_FONTS)
-    const Font& font = m_font.primaryFont();
-    if (!font.isSVGFont()) {
-        m_lastGlyph.isValid = false;
-        return 0;
-    }
-
-    ASSERT(font.isCustomFont());
-    ASSERT(font.isSVGFont());
-
-    auto* svgFontData = static_cast<const SVGFontData*>(font.svgData());
-    SVGFontFaceElement* svgFontFace = svgFontData->svgFontFaceElement();
-    ASSERT(svgFontFace);
-
-    SVGFontElement* svgFont = svgFontFace->associatedFontElement();
-    if (!svgFont) {
-        m_lastGlyph.isValid = false;
-        return 0;
-    }
-
-    float kerning = 0;
-    if (m_lastGlyph.isValid) {
-        if (isVerticalText)
-            kerning = svgFont->verticalKerningForPairOfStringsAndGlyphs(m_lastGlyph.unicodeString, m_lastGlyph.name, currentGlyph.unicodeString, currentGlyph.name);
-        else
-            kerning = svgFont->horizontalKerningForPairOfStringsAndGlyphs(m_lastGlyph.unicodeString, m_lastGlyph.name, currentGlyph.unicodeString, currentGlyph.name);
-    }
-
-    m_lastGlyph = currentGlyph;
-    m_lastGlyph.isValid = true;
-    kerning *= m_font.size() / m_font.fontMetrics().unitsPerEm();
-    return kerning;
-#else
-    UNUSED_PARAM(isVerticalText);
-    UNUSED_PARAM(currentGlyph);
-    return false;
-#endif
-}
-
 float SVGTextLayoutEngineSpacing::calculateCSSKerningAndSpacing(const SVGRenderStyle* style, SVGElement* contextElement, const UChar* currentCharacter)
 {
     float kerning = 0;
index d9c1820..8179ae9 100644 (file)
@@ -34,16 +34,11 @@ class SVGTextLayoutEngineSpacing {
 public:
     SVGTextLayoutEngineSpacing(const FontCascade&);
 
-    float calculateSVGKerning(bool isVerticalText, const SVGTextMetrics::Glyph& currentGlyph);
     float calculateCSSKerningAndSpacing(const SVGRenderStyle*, SVGElement* lengthContext, const UChar* currentCharacter);
 
 private:
     const FontCascade& m_font;
     const UChar* m_lastCharacter;
-
-#if ENABLE(SVG_FONTS)
-    SVGTextMetrics::Glyph m_lastGlyph;
-#endif
 };
 
 } // namespace WebCore
index 906dd50..46983e1 100644 (file)
@@ -21,7 +21,6 @@
 #include "SVGTextMetrics.h"
 
 #include "RenderSVGInlineText.h"
-#include "SVGTextRunRenderingContext.h"
 #include "WidthIterator.h"
 
 namespace WebCore {
@@ -49,7 +48,9 @@ SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText& textRenderer, const TextRun&
     int length = 0;
 
     // Calculate width/height using the scaled font, divide this result by the scalingFactor afterwards.
-    m_width = scaledFont.width(run, length, m_glyph.name) / scalingFactor;
+    m_width = scaledFont.width(run) / scalingFactor;
+    length = run.length();
+    m_glyph.name = "";
     m_height = scaledFont.fontMetrics().floatHeight() / scalingFactor;
 
     m_glyph.unicodeString = run.is8Bit() ? String(run.characters8(), length) : String(run.characters16(), length);
@@ -70,9 +71,6 @@ TextRun SVGTextMetrics::constructTextRun(RenderSVGInlineText& text, unsigned pos
                 , style.direction()
                 , isOverride(style.unicodeBidi()) /* directionalOverride */);
 
-    if (style.fontCascade().primaryFont().isSVGFont())
-        run.setRenderingContext(SVGTextRunRenderingContext::create(text));
-
     // We handle letter & word spacing ourselves.
     run.disableSpacing();
 
@@ -87,19 +85,13 @@ SVGTextMetrics SVGTextMetrics::measureCharacterRange(RenderSVGInlineText& text,
     return SVGTextMetrics(text, constructTextRun(text, position, length));
 }
 
-SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText& text, unsigned position, unsigned length, float width, const String& glyphName)
+SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText& text, unsigned length, float width)
 {
-    bool needsContext = text.style().fontCascade().primaryFont().isSVGFont();
     float scalingFactor = text.scalingFactor();
     ASSERT(scalingFactor);
 
     m_width = width / scalingFactor;
     m_height = text.scaledFont().fontMetrics().floatHeight() / scalingFactor;
-    if (needsContext) {
-        m_glyph.isValid = true;
-        m_glyph.unicodeString = text.text()->substring(position, length);
-        m_glyph.name = glyphName;
-    }
 
     m_length = length;
 }
index 61641a2..d4e0648 100644 (file)
@@ -34,7 +34,7 @@ public:
 
     SVGTextMetrics();
     explicit SVGTextMetrics(MetricsType);
-    SVGTextMetrics(RenderSVGInlineText&, unsigned position, unsigned length, float width, const String& glyphName);
+    SVGTextMetrics(RenderSVGInlineText&, unsigned length, float width);
 
     static SVGTextMetrics measureCharacterRange(RenderSVGInlineText&, unsigned position, unsigned length);
     static TextRun constructTextRun(RenderSVGInlineText&, unsigned position = 0, unsigned length = std::numeric_limits<unsigned>::max());
index 1447596..bf3eea6 100644 (file)
@@ -23,7 +23,6 @@
 #include "RenderSVGInline.h"
 #include "RenderSVGInlineText.h"
 #include "RenderSVGText.h"
-#include "SVGTextRunRenderingContext.h"
 
 namespace WebCore {
 
@@ -67,11 +66,7 @@ void SVGTextMetricsBuilder::advanceSimpleText()
     float currentWidth = m_simpleWidthIterator->runWidthSoFar() - m_totalWidth;
     m_totalWidth = m_simpleWidthIterator->runWidthSoFar();
 
-#if ENABLE(SVG_FONTS)
-    m_currentMetrics = SVGTextMetrics(*m_text, m_textPosition, metricsLength, currentWidth, m_simpleWidthIterator->lastGlyphName());
-#else
-    m_currentMetrics = SVGTextMetrics(*m_text, m_textPosition, metricsLength, currentWidth, emptyString());
-#endif
+    m_currentMetrics = SVGTextMetrics(*m_text, metricsLength, currentWidth);
 }
 
 void SVGTextMetricsBuilder::advanceComplexText()
diff --git a/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp b/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp
deleted file mode 100644 (file)
index e121536..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
- * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#if ENABLE(SVG_FONTS)
-#include "SVGTextRunRenderingContext.h"
-
-#include "GlyphBuffer.h"
-#include "GraphicsContext.h"
-#include "RenderObject.h"
-#include "RenderSVGInlineText.h"
-#include "RenderSVGResourceSolidColor.h"
-#include "SVGFontData.h"
-#include "SVGFontElement.h"
-#include "SVGFontFaceElement.h"
-#include "SVGGlyphElement.h"
-#include "SVGNames.h"
-#include "WidthIterator.h"
-
-namespace WebCore {
-
-static inline const SVGFontData* svgFontAndFontFaceElementForFontData(const Font* font, SVGFontFaceElement*& svgFontFaceElement, SVGFontElement*& svgFontElement)
-{
-    ASSERT(font);
-    ASSERT(font->isCustomFont());
-    ASSERT(font->isSVGFont());
-
-    auto* svgFontData = static_cast<const SVGFontData*>(font->svgData());
-
-    svgFontFaceElement = svgFontData->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
-
-    svgFontElement = svgFontFaceElement->associatedFontElement();
-    return svgFontData;
-}
-
-float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const FontCascade& font, const TextRun& run, int& charsConsumed, String& glyphName) const
-{
-    WidthIterator it(&font, run);
-    GlyphBuffer glyphBuffer;
-    charsConsumed += it.advance(run.length(), &glyphBuffer);
-    glyphName = it.lastGlyphName();
-    return it.runWidthSoFar();
-}
-
-bool SVGTextRunRenderingContext::applySVGKerning(const Font* font, WidthIterator& iterator, GlyphBuffer* glyphBuffer, int from) const
-{
-    ASSERT(glyphBuffer);
-    ASSERT(glyphBuffer->size() > 1);
-    SVGFontElement* fontElement = 0;
-    SVGFontFaceElement* fontFaceElement = 0;
-
-    svgFontAndFontFaceElementForFontData(font, fontFaceElement, fontElement);
-    if (!fontElement || !fontFaceElement)
-        return false;
-
-    if (fontElement->horizontalKerningMapIsEmpty())
-        return true;
-
-    float scale = scaleEmToUnits(font->platformData().size(), fontFaceElement->unitsPerEm());
-
-    String lastGlyphName;
-    String lastUnicodeString;
-    int characterOffset = iterator.m_currentCharacter;
-    String text = iterator.run().string();
-    const int glyphCount = glyphBuffer->size() - from;
-    GlyphBufferAdvance* advances = glyphBuffer->advances(from);
-
-    for (int i = 0; i < glyphCount; ++i) {
-        Glyph glyph = glyphBuffer->glyphAt(from + i);
-        if (!glyph)
-            continue;
-        float kerning = 0;
-        SVGGlyph svgGlyph = fontElement->svgGlyphForGlyph(glyph);
-        String unicodeString = text.substring(characterOffset, svgGlyph.unicodeStringLength);
-        if (i >= 1) {
-            // FIXME: Support vertical text.
-            kerning = fontElement->horizontalKerningForPairOfStringsAndGlyphs(lastUnicodeString, lastGlyphName, unicodeString, svgGlyph.glyphName);
-            advances[i - 1].setWidth(advances[i - 1].width() - kerning * scale);
-        }
-        lastGlyphName = svgGlyph.glyphName;
-        lastUnicodeString = unicodeString;
-        characterOffset += svgGlyph.unicodeStringLength;
-    }
-
-    return true;
-}
-
-class SVGGlyphToPathTranslator final : public GlyphToPathTranslator {
-public:
-    SVGGlyphToPathTranslator(const TextRun* const, const GlyphBuffer&, const FloatPoint&, const SVGFontData&, SVGFontElement&, const int from, const int numGlyphs, float scale, bool isVerticalText);
-private:
-    bool containsMorePaths() override
-    {
-        return m_index != m_stoppingPoint;
-    }
-
-    Path path() override;
-    std::pair<float, float> extents() override;
-    GlyphUnderlineType underlineType() override;
-    void advance() override;
-    void moveToNextValidGlyph();
-    AffineTransform transform();
-
-    const TextRun* const m_textRun;
-    const GlyphBuffer& m_glyphBuffer;
-    const SVGFontData& m_svgFontData;
-    FloatPoint m_currentPoint;
-    FloatPoint m_glyphOrigin;
-    SVGGlyph m_svgGlyph;
-    int m_index;
-    Glyph m_glyph;
-    SVGFontElement& m_fontElement;
-    const float m_stoppingPoint;
-    const float m_scale;
-    const bool m_isVerticalText;
-};
-
-SVGGlyphToPathTranslator::SVGGlyphToPathTranslator(const TextRun* const textRun, const GlyphBuffer& glyphBuffer, const FloatPoint& point, const SVGFontData& svgFontData, SVGFontElement& fontElement, const int from, const int numGlyphs, float scale, bool isVerticalText)
-    : m_textRun(textRun)
-    , m_glyphBuffer(glyphBuffer)
-    , m_svgFontData(svgFontData)
-    , m_currentPoint(point)
-    , m_glyphOrigin(m_svgFontData.horizontalOriginX() * scale, m_svgFontData.horizontalOriginY() * scale)
-    , m_index(from)
-    , m_glyph(glyphBuffer.glyphAt(m_index))
-    , m_fontElement(fontElement)
-    , m_stoppingPoint(numGlyphs + from)
-    , m_scale(scale)
-    , m_isVerticalText(isVerticalText)
-{
-    ASSERT(glyphBuffer.size() > m_index);
-    if (m_glyph) {
-        m_svgGlyph = m_fontElement.svgGlyphForGlyph(m_glyph);
-        ASSERT(!m_svgGlyph.isPartOfLigature);
-        ASSERT(m_svgGlyph.tableEntry == m_glyph);
-        SVGGlyphElement::inheritUnspecifiedAttributes(m_svgGlyph, &m_svgFontData);
-    }
-    moveToNextValidGlyph();
-}
-
-AffineTransform SVGGlyphToPathTranslator::transform()
-{
-    AffineTransform glyphPathTransform;
-    glyphPathTransform.translate(m_currentPoint.x() + m_glyphOrigin.x(), m_currentPoint.y() + m_glyphOrigin.y());
-    glyphPathTransform.scale(m_scale, -m_scale);
-    return glyphPathTransform;
-}
-
-Path SVGGlyphToPathTranslator::path()
-{
-    Path glyphPath = m_svgGlyph.pathData;
-    glyphPath.transform(transform());
-    return glyphPath;
-}
-
-std::pair<float, float> SVGGlyphToPathTranslator::extents()
-{
-    AffineTransform glyphPathTransform = transform();
-    FloatPoint beginning = glyphPathTransform.mapPoint(m_currentPoint);
-    float width = narrowPrecisionToFloat(m_glyphBuffer.advanceAt(m_index).width() * glyphPathTransform.xScale());
-    return std::make_pair(beginning.x(), beginning.x() + width);
-}
-
-auto SVGGlyphToPathTranslator::underlineType() -> GlyphUnderlineType
-{
-    ASSERT(m_textRun);
-    return computeUnderlineType(*m_textRun, m_glyphBuffer, m_index);
-}
-
-void SVGGlyphToPathTranslator::moveToNextValidGlyph()
-{
-    if (m_glyph && !m_svgGlyph.pathData.isEmpty())
-        return;
-    advance();
-}
-
-void SVGGlyphToPathTranslator::advance()
-{
-    do {
-        if (m_glyph) {
-            float advance = m_glyphBuffer.advanceAt(m_index).width();
-            if (m_isVerticalText)
-                m_currentPoint.move(0, advance);
-            else
-                m_currentPoint.move(advance, 0);
-        }
-
-        ++m_index;
-        if (m_index >= m_stoppingPoint || !m_glyphBuffer.fontAt(m_index)->isSVGFont())
-            break;
-        m_glyph = m_glyphBuffer.glyphAt(m_index);
-        if (!m_glyph)
-            continue;
-        m_svgGlyph = m_fontElement.svgGlyphForGlyph(m_glyph);
-        ASSERT(!m_svgGlyph.isPartOfLigature);
-        ASSERT(m_svgGlyph.tableEntry == m_glyph);
-        SVGGlyphElement::inheritUnspecifiedAttributes(m_svgGlyph, &m_svgFontData);
-    } while ((!m_glyph || m_svgGlyph.pathData.isEmpty()) && m_index < m_stoppingPoint);
-
-    if (containsMorePaths() && m_isVerticalText) {
-        m_glyphOrigin.setX(m_svgGlyph.verticalOriginX * m_scale);
-        m_glyphOrigin.setY(m_svgGlyph.verticalOriginY * m_scale);
-    }
-}
-
-class DummyGlyphToPathTranslator final : public GlyphToPathTranslator {
-    bool containsMorePaths() override
-    {
-        return false;
-    }
-    Path path() override
-    {
-        return Path();
-    }
-    std::pair<float, float> extents() override
-    {
-        return std::make_pair(0.f, 0.f);
-    }
-    GlyphUnderlineType underlineType() override
-    {
-        return GlyphUnderlineType::DrawOverGlyph;
-    }
-    void advance() override
-    {
-    }
-};
-
-std::unique_ptr<GlyphToPathTranslator> SVGTextRunRenderingContext::createGlyphToPathTranslator(const Font& font, const TextRun* textRun, const GlyphBuffer& glyphBuffer, int from, int numGlyphs, const FloatPoint& point) const
-{
-    SVGFontElement* fontElement = nullptr;
-    SVGFontFaceElement* fontFaceElement = nullptr;
-
-    const SVGFontData* svgFontData = svgFontAndFontFaceElementForFontData(&font, fontFaceElement, fontElement);
-    if (!fontElement || !fontFaceElement)
-        return std::make_unique<DummyGlyphToPathTranslator>();
-
-    auto& elementRenderer = is<RenderElement>(renderer()) ? downcast<RenderElement>(renderer()) : *renderer().parent();
-    RenderStyle& style = elementRenderer.style();
-    bool isVerticalText = style.svgStyle().isVerticalWritingMode();
-
-    float scale = scaleEmToUnits(font.platformData().size(), fontFaceElement->unitsPerEm());
-
-    return std::make_unique<SVGGlyphToPathTranslator>(textRun, glyphBuffer, point, *svgFontData, *fontElement, from, numGlyphs, scale, isVerticalText);
-}
-
-void SVGTextRunRenderingContext::drawSVGGlyphs(GraphicsContext& context, const Font& font, const GlyphBuffer& glyphBuffer, int from, int numGlyphs, const FloatPoint& point) const
-{
-    auto activePaintingResource = this->activePaintingResource();
-    if (!activePaintingResource) {
-        // TODO: We're only supporting simple filled HTML text so far.
-        RenderSVGResourceSolidColor* solidPaintingResource = RenderSVGResource::sharedSolidPaintingResource();
-        solidPaintingResource->setColor(context.fillColor());
-        activePaintingResource = solidPaintingResource;
-    }
-
-    auto& elementRenderer = is<RenderElement>(renderer()) ? downcast<RenderElement>(renderer()) : *renderer().parent();
-    RenderStyle& style = elementRenderer.style();
-
-    ASSERT(activePaintingResource);
-
-    GraphicsContext* usedContext = &context;
-    RenderSVGResourceMode resourceMode = context.textDrawingMode() == TextModeStroke ? ApplyToStrokeMode : ApplyToFillMode;
-    for (auto translator = createGlyphToPathTranslator(font, nullptr, glyphBuffer, from, numGlyphs, point); translator->containsMorePaths(); translator->advance()) {
-        Path glyphPath = translator->path();
-        if (activePaintingResource->applyResource(elementRenderer, style, usedContext, resourceMode)) {
-            float strokeThickness = context.strokeThickness();
-            if (is<RenderSVGInlineText>(renderer()))
-                usedContext->setStrokeThickness(strokeThickness * downcast<RenderSVGInlineText>(renderer()).scalingFactor());
-            activePaintingResource->postApplyResource(elementRenderer, usedContext, resourceMode, &glyphPath, nullptr);
-            usedContext->setStrokeThickness(strokeThickness);
-        }
-    }
-}
-
-static GlyphData missingGlyphForFont(const FontCascade& font)
-{
-    const Font& primaryFont = font.primaryFont();
-    if (!primaryFont.isSVGFont())
-        return GlyphData();
-    SVGFontElement* fontElement;
-    SVGFontFaceElement* fontFaceElement;
-    svgFontAndFontFaceElementForFontData(&primaryFont, fontFaceElement, fontElement);
-    return GlyphData(fontElement->missingGlyph(), &primaryFont);
-}
-
-GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const FontCascade& font, WidthIterator& iterator, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache)
-{
-    GlyphData glyphData = font.glyphDataForCharacter(character, mirror, AutoVariant);
-    if (!glyphData.glyph)
-        return missingGlyphForFont(font);
-
-    ASSERT(glyphData.font);
-
-    // Characters enclosed by an <altGlyph> element, may not be registered in the GlyphPage.
-    if (!glyphData.font->isSVGFont()) {
-        auto& elementRenderer = is<RenderElement>(renderer()) ? downcast<RenderElement>(renderer()) : *renderer().parent();
-        if (Element* parentRendererElement = elementRenderer.element()) {
-            if (is<SVGAltGlyphElement>(*parentRendererElement))
-                glyphData.font = &font.primaryFont();
-        }
-    }
-
-    if (!glyphData.font->isSVGFont())
-        return glyphData;
-
-    SVGFontElement* fontElement = nullptr;
-    SVGFontFaceElement* fontFaceElement = nullptr;
-    const SVGFontData* svgFontData = svgFontAndFontFaceElementForFontData(glyphData.font, fontFaceElement, fontElement);
-    if (!svgFontData)
-        return glyphData;
-
-    // If we got here, we're dealing with a glyph defined in a SVG Font.
-    // The returned glyph by glyphDataForCharacter() is a glyph stored in the SVG Font glyph table.
-    // This doesn't necessarily mean the glyph is suitable for rendering/measuring in this context, its
-    // arabic-form/orientation/... may not match, we have to apply SVG Glyph selection to discover that.
-    if (svgFontData->applySVGGlyphSelection(iterator, glyphData, mirror, currentCharacter, advanceLength, normalizedSpacesStringCache))
-        return glyphData;
-
-    GlyphData missingGlyphData = missingGlyphForFont(font);
-    if (missingGlyphData.glyph)
-        return missingGlyphData;
-
-    // SVG font context sensitive selection failed and there is no defined missing glyph. Drop down to a default font.
-    // The behavior does not seem to be specified. For simplicity we don't try to resolve font fallbacks context-sensitively.
-    auto fallbackDescription = font.fontDescription();
-    fallbackDescription.setFamilies(Vector<AtomicString> { sansSerifFamily });
-    FontCascade fallbackFont(fallbackDescription, font.letterSpacing(), font.wordSpacing());
-    fallbackFont.update(font.fontSelector());
-
-    return fallbackFont.glyphDataForCharacter(character, mirror, AutoVariant);
-}
-
-}
-
-#endif
diff --git a/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.h b/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.h
deleted file mode 100644 (file)
index 65811e4..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2011. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef SVGTextRunRenderingContext_h
-#define SVGTextRunRenderingContext_h
-
-#include "FontCascade.h"
-#include "TextRun.h"
-
-namespace WebCore {
-
-class RenderObject;
-class RenderSVGResource;
-
-class SVGTextRunRenderingContext final : public TextRun::RenderingContext {
-public:
-    static Ref<SVGTextRunRenderingContext> create(RenderObject& renderer)
-    {
-        return adoptRef(*new SVGTextRunRenderingContext(renderer));
-    }
-
-    RenderObject& renderer() const { return m_renderer; }
-
-#if ENABLE(SVG_FONTS)
-    RenderSVGResource* activePaintingResource() const { return m_activePaintingResource; }
-    void setActivePaintingResource(RenderSVGResource* object) { m_activePaintingResource = object; }
-
-    GlyphData glyphDataForCharacter(const FontCascade&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) override;
-    void drawSVGGlyphs(GraphicsContext&, const Font&, const GlyphBuffer&, int from, int to, const FloatPoint&) const override;
-    float floatWidthUsingSVGFont(const FontCascade&, const TextRun&, int& charsConsumed, String& glyphName) const override;
-    bool applySVGKerning(const Font*, WidthIterator&, GlyphBuffer*, int from) const override;
-#endif
-
-private:
-    SVGTextRunRenderingContext(RenderObject& renderer)
-        : m_renderer(renderer)
-#if ENABLE(SVG_FONTS)
-        , m_activePaintingResource(0)
-#endif
-    {
-    }
-
-    virtual ~SVGTextRunRenderingContext() { }
-
-#if ENABLE(SVG_FONTS)
-    std::unique_ptr<GlyphToPathTranslator> createGlyphToPathTranslator(const Font&, const TextRun*, const GlyphBuffer&, int from, int numGlyphs, const FloatPoint&) const override;
-#endif
-
-    RenderObject& m_renderer;
-
-#if ENABLE(SVG_FONTS)
-    RenderSVGResource* m_activePaintingResource;
-#endif
-};
-
-} // namespace WebCore
-
-#endif // SVGTextRunRenderingContext_h
index 2f26c36..1c1fa08 100644 (file)
@@ -97,7 +97,6 @@
 #include "SVGFilterElement.cpp"
 #include "SVGFilterPrimitiveStandardAttributes.cpp"
 #include "SVGFitToViewBox.cpp"
-#include "SVGFontData.cpp"
 #include "SVGFontElement.cpp"
 #include "SVGFontFaceElement.cpp"
 #include "SVGFontFaceFormatElement.cpp"
diff --git a/Source/WebCore/svg/SVGFontData.cpp b/Source/WebCore/svg/SVGFontData.cpp
deleted file mode 100644 (file)
index 8df508d..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#if ENABLE(SVG_FONTS)
-#include "SVGFontData.h"
-
-#include "GlyphPage.h"
-#include "RenderElement.h"
-#include "SVGAltGlyphElement.h"
-#include "SVGFontElement.h"
-#include "SVGFontFaceElement.h"
-#include "SVGGlyph.h"
-#include "SVGGlyphElement.h"
-#include "SVGNames.h"
-#include "SVGTextRunRenderingContext.h"
-#include "TextRun.h"
-#include "WidthIterator.h"
-#include "XMLNames.h"
-#include <wtf/text/StringBuilder.h>
-#include <wtf/unicode/CharacterNames.h>
-
-using namespace WTF;
-using namespace Unicode;
-
-namespace WebCore {
-
-static String createStringWithMirroredCharacters(StringView);
-static void computeNormalizedSpaces(const TextRun&, bool mirror, String& normalizedSpacesStringCache);
-
-SVGFontData::SVGFontData(SVGFontFaceElement* fontFaceElement)
-    : m_svgFontFaceElement(fontFaceElement)
-    , m_horizontalOriginX(fontFaceElement->horizontalOriginX())
-    , m_horizontalOriginY(fontFaceElement->horizontalOriginY())
-    , m_horizontalAdvanceX(fontFaceElement->horizontalAdvanceX())
-    , m_verticalOriginX(fontFaceElement->verticalOriginX())
-    , m_verticalOriginY(fontFaceElement->verticalOriginY())
-    , m_verticalAdvanceY(fontFaceElement->verticalAdvanceY())
-{
-    ASSERT_ARG(fontFaceElement, fontFaceElement);
-}
-
-void SVGFontData::initializeFont(Font* font, float fontSize)
-{
-    ASSERT(font);
-
-    SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
-
-    font->setZeroWidthSpaceGlyph(0);
-    font->determinePitch();
-
-    unsigned unitsPerEm = svgFontFaceElement->unitsPerEm();
-    float scale = scaleEmToUnits(fontSize, unitsPerEm);
-    float xHeight = svgFontFaceElement->xHeight() * scale;
-    float ascent = svgFontFaceElement->ascent() * scale;
-    float descent = svgFontFaceElement->descent() * scale;
-    float lineGap = 0.1f * fontSize;
-
-    const GlyphPage* glyphPageZero = font->glyphPage(0);
-
-    if (!xHeight && glyphPageZero) {
-        // Fallback if x_heightAttr is not specified for the font element.
-        Glyph letterXGlyph = glyphPageZero->glyphDataForCharacter('x').glyph;
-        xHeight = letterXGlyph ? font->widthForGlyph(letterXGlyph) : 2 * ascent / 3;
-    }
-
-    FontMetrics& fontMetrics = font->fontMetrics();
-    fontMetrics.setUnitsPerEm(unitsPerEm);
-    fontMetrics.setAscent(ascent);
-    fontMetrics.setDescent(descent);
-    fontMetrics.setLineGap(lineGap);
-    fontMetrics.setLineSpacing(roundf(ascent) + roundf(descent) + roundf(lineGap));
-    fontMetrics.setXHeight(xHeight);
-
-    if (!glyphPageZero) {
-        font->setSpaceGlyph(0);
-        font->setSpaceWidths(0);
-        font->setAvgCharWidth(0);
-        font->setMaxCharWidth(ascent);
-        return;
-    }
-
-    // Calculate space width.
-    Glyph spaceGlyph = glyphPageZero->glyphDataForCharacter(' ').glyph;
-    font->setSpaceGlyph(spaceGlyph);
-    font->setSpaceWidths(font->widthForGlyph(spaceGlyph));
-
-    // Estimate average character width.
-    Glyph numeralZeroGlyph = glyphPageZero->glyphDataForCharacter('0').glyph;
-    font->setAvgCharWidth(numeralZeroGlyph ? font->widthForGlyph(numeralZeroGlyph) : font->spaceWidth());
-
-    // Estimate maximum character width.
-    Glyph letterWGlyph = glyphPageZero->glyphDataForCharacter('W').glyph;
-    font->setMaxCharWidth(letterWGlyph ? font->widthForGlyph(letterWGlyph) : ascent);
-}
-
-float SVGFontData::widthForSVGGlyph(Glyph glyph, float fontSize) const
-{
-    SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
-
-    SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement();
-    ASSERT(associatedFontElement);
-
-    SVGGlyph svgGlyph = associatedFontElement->svgGlyphForGlyph(glyph);
-    SVGGlyphElement::inheritUnspecifiedAttributes(svgGlyph, this);
-    return svgGlyph.horizontalAdvanceX * scaleEmToUnits(fontSize, svgFontFaceElement->unitsPerEm());
-}
-
-bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& glyphData, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) const
-{
-    const TextRun& run = iterator.run();
-    Vector<SVGGlyph::ArabicForm>& arabicForms = iterator.arabicForms();
-    ASSERT(run.charactersLength() >= static_cast<unsigned>(currentCharacter));
-
-    SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
-
-    SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement();
-    ASSERT(associatedFontElement);
-
-    RenderObject* renderObject = nullptr;
-    if (TextRun::RenderingContext* renderingContext = run.renderingContext())
-        renderObject = &static_cast<SVGTextRunRenderingContext*>(renderingContext)->renderer();
-
-    String language;
-    bool isVerticalText = false;
-    Vector<String> altGlyphNames;
-
-    if (renderObject) {
-        RenderElement& parentRenderer = is<RenderElement>(*renderObject) ? downcast<RenderElement>(*renderObject) : *renderObject->parent();
-
-        isVerticalText = parentRenderer.style().svgStyle().isVerticalWritingMode();
-        if (Element* parentRendererElement = parentRenderer.element()) {
-            language = parentRendererElement->getAttribute(XMLNames::langAttr);
-
-            if (is<SVGAltGlyphElement>(*parentRendererElement)) {
-                SVGAltGlyphElement& altGlyph = downcast<SVGAltGlyphElement>(*parentRendererElement);
-                if (!altGlyph.hasValidGlyphElements(altGlyphNames))
-                    altGlyphNames.clear();
-            }
-        }
-    }
-
-    Vector<SVGGlyph> glyphs;
-    if (!altGlyphNames.isEmpty()) {
-        for (auto& name : altGlyphNames)
-            associatedFontElement->collectGlyphsForGlyphName(name, glyphs);
-
-        // Assign the unicodeStringLength now that its known.
-        for (auto& glyph : glyphs)
-            glyph.unicodeStringLength = run.length();
-
-        // Do not check alt glyphs for compatibility. Just return the first one.
-        // Later code will fail if we do not do this and the glyph is incompatible.
-        if (!glyphs.isEmpty()) {
-            SVGGlyph& svgGlyph = glyphs[0];
-            iterator.setLastGlyphName(svgGlyph.glyphName);
-            glyphData.glyph = svgGlyph.tableEntry;
-            advanceLength = svgGlyph.unicodeStringLength;
-            return true;
-        }
-    } else {
-        // Associate text with arabic forms, if needed.
-        computeNormalizedSpaces(run, mirror, normalizedSpacesStringCache);
-        auto remainingTextInRun = normalizedSpacesStringCache.substring(currentCharacter);
-
-        if (!currentCharacter && arabicForms.isEmpty())
-            arabicForms = charactersWithArabicForm(remainingTextInRun, mirror);
-
-        associatedFontElement->collectGlyphsForString(remainingTextInRun, glyphs);
-    }
-
-    for (auto& glyph : glyphs) {
-        if (glyph.isPartOfLigature)
-            continue;
-        if (!isCompatibleGlyph(glyph, isVerticalText, language, arabicForms, currentCharacter, currentCharacter + glyph.unicodeStringLength))
-            continue;
-        iterator.setLastGlyphName(glyph.glyphName);
-        glyphData.glyph = glyph.tableEntry;
-        advanceLength = glyph.unicodeStringLength;
-        return true;
-    }
-
-    iterator.setLastGlyphName(String());
-    return false;
-}
-
-bool SVGFontData::fillSVGGlyphPage(GlyphPage* pageToFill, UChar* buffer, unsigned bufferLength) const
-{
-    SVGFontFaceElement* fontFaceElement = this->svgFontFaceElement();
-    ASSERT(fontFaceElement);
-
-    SVGFontElement* fontElement = fontFaceElement->associatedFontElement();
-    ASSERT(fontElement);
-
-    if (bufferLength == GlyphPage::size)
-        return fillBMPGlyphs(fontElement, pageToFill, buffer);
-
-    ASSERT(bufferLength == 2 * GlyphPage::size);
-    return fillNonBMPGlyphs(fontElement, pageToFill, buffer);
-}
-
-bool SVGFontData::fillBMPGlyphs(SVGFontElement* fontElement, GlyphPage* pageToFill, UChar* buffer) const
-{
-    bool haveGlyphs = false;
-    Vector<SVGGlyph> glyphs;
-    for (unsigned i = 0; i < GlyphPage::size; ++i) {
-        String lookupString(buffer + i, 1);
-        fontElement->collectGlyphsForString(lookupString, glyphs);
-        if (glyphs.isEmpty()) {
-            pageToFill->setGlyphForIndex(i, 0);
-            continue;
-        }
-
-        // Associate entry in glyph page with first valid SVGGlyph.
-        // If there are multiple valid ones, just take the first one. WidthIterator will take
-        // care of matching to the correct glyph, if multiple ones are available, as that's
-        // only possible within the context of a string (eg. arabic form matching).
-        haveGlyphs = true;
-        pageToFill->setGlyphForIndex(i, glyphs.first().tableEntry);
-        glyphs.clear();
-    }
-
-    return haveGlyphs;
-}
-
-bool SVGFontData::fillNonBMPGlyphs(SVGFontElement* fontElement, GlyphPage* pageToFill, UChar* buffer) const
-{
-    bool haveGlyphs = false;
-    Vector<SVGGlyph> glyphs;
-    for (unsigned i = 0; i < GlyphPage::size; ++i) {
-        // Each character here consists of a surrogate pair
-        String lookupString(buffer + i * 2, 2);
-        fontElement->collectGlyphsForString(lookupString, glyphs);
-        if (glyphs.isEmpty()) {
-            pageToFill->setGlyphForIndex(i, 0);
-            continue;
-        }
-
-        // Associate entry in glyph page with first valid SVGGlyph.
-        // If there are multiple valid ones, just take the first one. WidthIterator will take
-        // care of matching to the correct glyph, if multiple ones are available, as that's
-        // only possible within the context of a string (eg. arabic form matching).
-        haveGlyphs = true;
-        pageToFill->setGlyphForIndex(i, glyphs.first().tableEntry);
-        glyphs.clear();
-    }
-
-    return haveGlyphs;
-}
-
-void computeNormalizedSpaces(const TextRun& run, bool mirror, String& normalizedSpacesStringCache)
-{
-    if (normalizedSpacesStringCache.length() == static_cast<unsigned>(run.charactersLength()))
-        return;
-    if (run.is8Bit())
-        normalizedSpacesStringCache = FontCascade::normalizeSpaces(run.characters8(), run.charactersLength());
-    else
-        normalizedSpacesStringCache = FontCascade::normalizeSpaces(run.characters16(), run.charactersLength());
-    if (mirror)
-        normalizedSpacesStringCache = createStringWithMirroredCharacters(normalizedSpacesStringCache);
-}
-
-String createStringWithMirroredCharacters(StringView string)
-{
-    unsigned length = string.length();
-    StringBuilder mirroredCharacters;
-    mirroredCharacters.reserveCapacity(length);
-    for (unsigned i = 0; i < length; ) {
-        UChar32 character;
-        U16_NEXT(string, i, length, character);
-        mirroredCharacters.append(u_charMirror(character));
-    }
-    return mirroredCharacters.toString();
-}
-
-} // namespace WebCore
-
-#endif
diff --git a/Source/WebCore/svg/SVGFontData.h b/Source/WebCore/svg/SVGFontData.h
deleted file mode 100644 (file)
index ae92bd8..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef SVGFontData_h
-#define SVGFontData_h
-
-#if ENABLE(SVG_FONTS)
-#include "Font.h"
-
-namespace WebCore {
-
-class SVGFontElement;
-class SVGFontFaceElement;
-
-class SVGFontData : public Font::SVGData {
-public:
-    explicit SVGFontData(SVGFontFaceElement*);
-    virtual ~SVGFontData() { }
-
-    void initializeFont(Font*, float fontSize) override;
-    float widthForSVGGlyph(Glyph, float fontSize) const override;
-    bool fillSVGGlyphPage(GlyphPage*, UChar* buffer, unsigned bufferLength) const override;
-
-    bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) const;
-
-    SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement; }
-
-    float horizontalOriginX() const { return m_horizontalOriginX; }
-    float horizontalOriginY() const { return m_horizontalOriginY; }
-    float horizontalAdvanceX() const { return m_horizontalAdvanceX; }
-
-    float verticalOriginX() const { return m_verticalOriginX; }
-    float verticalOriginY() const { return m_verticalOriginY; }
-    float verticalAdvanceY() const { return m_verticalAdvanceY; }
-
-private:
-    bool fillBMPGlyphs(SVGFontElement*, GlyphPage*, UChar* buffer) const;
-    bool fillNonBMPGlyphs(SVGFontElement*, GlyphPage*, UChar* buffer) const;
-
-    bool applyTransforms(GlyphBufferGlyph*, GlyphBufferAdvance*, size_t, bool enableKerning, bool requiresShaping) const = delete;
-
-    // Ths SVGFontFaceElement is kept alive --
-    // 1) in the external font case: by the CSSFontFaceSource, which holds a reference to the external SVG document
-    //    containing the element;
-    // 2) in the in-document font case: by virtue of being in the document tree and making sure that when it is removed
-    //    from the document, it removes the @font-face rule it owns from the document's mapped element sheet and forces
-    //    a style update.
-    SVGFontFaceElement* m_svgFontFaceElement;
-
-    float m_horizontalOriginX;
-    float m_horizontalOriginY;
-    float m_horizontalAdvanceX;
-
-    float m_verticalOriginX;
-    float m_verticalOriginY;
-    float m_verticalAdvanceY;
-};
-
-} // namespace WebCore
-
-#endif
-#endif // SVGFontData_h
index 48fc29e..6427281 100644 (file)
@@ -46,8 +46,6 @@ END_REGISTER_ANIMATED_PROPERTIES
 
 inline SVGFontElement::SVGFontElement(const QualifiedName& tagName, Document& document)
     : SVGElement(tagName, document)
-    , m_missingGlyph(0)
-    , m_isGlyphCacheValid(false)
 {
     ASSERT(hasTagName(SVGNames::fontTag));
     registerAnimatedPropertiesForSVGFontElement();
@@ -58,264 +56,6 @@ Ref<SVGFontElement> SVGFontElement::create(const QualifiedName& tagName, Documen
     return adoptRef(*new SVGFontElement(tagName, document));
 }
 
-void SVGFontElement::invalidateGlyphCache()
-{
-    if (m_isGlyphCacheValid) {
-        m_glyphMap.clear();
-        m_horizontalKerningMap.clear();
-        m_verticalKerningMap.clear();
-    }
-    m_isGlyphCacheValid = false;
-}
-
-const SVGMissingGlyphElement* SVGFontElement::firstMissingGlyphElement() const
-{
-    return childrenOfType<SVGMissingGlyphElement>(*this).first();
-}
-
-void SVGFontElement::registerLigaturesInGlyphCache(Vector<String>& ligatures)
-{
-    ASSERT(!ligatures.isEmpty());
-
-    // Register each character of a ligature in the map, if not present.
-    // Eg. If only a "fi" ligature is present, but not "f" and "i", the
-    // GlyphPage will not contain any entries for "f" and "i", so the
-    // SVGFont is not used to render the text "fi1234". Register an
-    // empty SVGGlyph with the character, so the SVG Font will be used
-    // to render the text. If someone tries to render "f2" the SVG Font
-    // will not be able to find a glyph for "f", but handles the fallback
-    // character substitution properly through glyphDataForCharacter().
-    Vector<SVGGlyph> glyphs;
-    for (auto& unicode : ligatures) {
-        unsigned unicodeLength = unicode.length();
-        ASSERT(unicodeLength > 1);
-
-        for (unsigned i = 0; i < unicodeLength; ++i) {
-            UChar character = unicode[i];
-            String lookupString(&character, 1);
-            m_glyphMap.collectGlyphsForString(lookupString, glyphs);
-            if (!glyphs.isEmpty()) {
-                glyphs.clear();
-                continue;
-            }
-
-            // This glyph is never meant to be used for rendering, only as identifier as a part of a ligature.
-            SVGGlyph newGlyphPart;
-            newGlyphPart.isPartOfLigature = true;
-            m_glyphMap.addGlyph(String(), lookupString, newGlyphPart);
-        }
-    }
-}
-
-void SVGFontElement::ensureGlyphCache()
-{
-    if (m_isGlyphCacheValid)
-        return;
-
-    const SVGMissingGlyphElement* firstMissingGlyphElement = nullptr;
-    Vector<String> ligatures;
-    for (auto& child : childrenOfType<SVGElement>(*this)) {
-        if (is<SVGGlyphElement>(child)) {
-            SVGGlyphElement& glyph = downcast<SVGGlyphElement>(child);
-            AtomicString unicode = glyph.fastGetAttribute(SVGNames::unicodeAttr);
-            AtomicString glyphId = glyph.getIdAttribute();
-            if (glyphId.isEmpty() && unicode.isEmpty())
-                continue;
-
-            m_glyphMap.addGlyph(glyphId, unicode, glyph.buildGlyphIdentifier());
-
-            // Register ligatures, if needed, don't mix up with surrogate pairs though!
-            if (unicode.length() > 1 && !U16_IS_SURROGATE(unicode[0]))
-                ligatures.append(unicode.string());
-        } else if (is<SVGHKernElement>(child)) {
-            SVGHKernElement& hkern = downcast<SVGHKernElement>(child);
-            SVGKerningPair kerningPair;
-            if (hkern.buildHorizontalKerningPair(kerningPair))
-                m_horizontalKerningMap.insert(kerningPair);
-        } else if (is<SVGVKernElement>(child)) {
-            SVGVKernElement& vkern = downcast<SVGVKernElement>(child);
-            SVGKerningPair kerningPair;
-            if (vkern.buildVerticalKerningPair(kerningPair))
-                m_verticalKerningMap.insert(kerningPair);
-        } else if (is<SVGMissingGlyphElement>(child) && !firstMissingGlyphElement)
-            firstMissingGlyphElement = &downcast<SVGMissingGlyphElement>(child);
-    }
-
-    // Register each character of each ligature, if needed.
-    if (!ligatures.isEmpty())
-        registerLigaturesInGlyphCache(ligatures);
-
-    // Register missing-glyph element, if present.
-    if (firstMissingGlyphElement) {
-        SVGGlyph svgGlyph = SVGGlyphElement::buildGenericGlyphIdentifier(firstMissingGlyphElement);
-        m_glyphMap.appendToGlyphTable(svgGlyph);
-        m_missingGlyph = svgGlyph.tableEntry;
-        ASSERT(m_missingGlyph > 0);
-    }
-
-    m_isGlyphCacheValid = true;
-}
-
-void SVGKerningMap::clear()
-{
-    unicodeMap.clear();
-    glyphMap.clear();
-    kerningUnicodeRangeMap.clear();
-}
-
-void SVGKerningMap::insert(const SVGKerningPair& kerningPair)
-{
-    SVGKerning svgKerning;
-    svgKerning.kerning = kerningPair.kerning;
-    svgKerning.unicodeRange2 = kerningPair.unicodeRange2;
-    svgKerning.unicodeName2 = kerningPair.unicodeName2;
-    svgKerning.glyphName2 = kerningPair.glyphName2;
-
-    for (auto& name : kerningPair.unicodeName1) {
-        if (unicodeMap.contains(name))
-            unicodeMap.get(name)->append(svgKerning);
-        else {
-            auto newVector = std::make_unique<SVGKerningVector>();
-            newVector->append(svgKerning);
-            unicodeMap.add(name, WTFMove(newVector));
-        }
-    }
-
-    for (auto& name : kerningPair.glyphName1) {
-        if (glyphMap.contains(name))
-            glyphMap.get(name)->append(svgKerning);
-        else {
-            auto newVector = std::make_unique<SVGKerningVector>();
-            newVector->append(svgKerning);
-            glyphMap.add(name, WTFMove(newVector));
-        }
-    }
-
-    if (!kerningPair.unicodeRange1.isEmpty())
-        kerningUnicodeRangeMap.append(kerningPair);
-}
-
-static inline bool stringMatchesUnicodeRange(const String& unicodeString, const UnicodeRanges& ranges)
-{
-    if (unicodeString.isEmpty())
-        return false;
-
-    if (!ranges.isEmpty()) {
-        UChar firstChar = unicodeString[0];
-        for (auto& range : ranges) {
-            if (firstChar >= range.first && firstChar <= range.second)
-                return true;
-        }
-    }
-
-    return false;
-}
-
-static inline bool stringMatchesGlyphName(const String& glyphName, const HashSet<String>& glyphValues)
-{
-    if (glyphName.isEmpty())
-        return false;
-
-    return glyphValues.contains(glyphName);
-}
-
-static inline bool stringMatchesUnicodeName(const String& unicodeName, const HashSet<String>& unicodeValues)
-{
-    if (unicodeName.isEmpty())
-        return false;
-
-    return unicodeValues.contains(unicodeName);
-}
-
-static inline bool matches(const String& u2, const String& g2, const SVGKerning& svgKerning)
-{
-    return stringMatchesGlyphName(g2, svgKerning.glyphName2)
-        || stringMatchesUnicodeName(u2, svgKerning.unicodeName2)
-        || stringMatchesUnicodeRange(u2, svgKerning.unicodeRange2);
-}
-
-static inline bool matches(const String& u1, const String& u2, const String& g2, const SVGKerningPair& svgKerningPair)
-{
-    return stringMatchesUnicodeRange(u1, svgKerningPair.unicodeRange1) && matches(u2, g2, svgKerningPair);
-}
-
-static inline float kerningForPairOfStringsAndGlyphs(const SVGKerningMap& kerningMap, const String& u1, const String& g1, const String& u2, const String& g2)
-{
-    if (!g1.isEmpty() && kerningMap.glyphMap.contains(g1)) {
-        SVGKerningVector* kerningVector = kerningMap.glyphMap.get(g1);
-        SVGKerningVector::const_iterator it = kerningVector->end() - 1;
-        const SVGKerningVector::const_iterator begin = kerningVector->begin() - 1;
-        for (; it != begin; --it) {
-            if (matches(u2, g2, *it))
-                return it->kerning;
-        }
-    }
-
-    if (!u1.isEmpty()) {
-        if (kerningMap.unicodeMap.contains(u1)) {
-            SVGKerningVector* kerningVector = kerningMap.unicodeMap.get(u1);
-            SVGKerningVector::const_iterator it = kerningVector->end() - 1;
-            const SVGKerningVector::const_iterator begin = kerningVector->begin() - 1;
-            for (; it != begin; --it) {
-                if (matches(u2, g2, *it))
-                    return it->kerning;
-            }
-        }
-
-        if (!kerningMap.kerningUnicodeRangeMap.isEmpty()) {
-            Vector<SVGKerningPair>::const_iterator it = kerningMap.kerningUnicodeRangeMap.end() - 1;
-            const Vector<SVGKerningPair>::const_iterator begin = kerningMap.kerningUnicodeRangeMap.begin() - 1;
-            for (; it != begin; --it) {
-                if (matches(u1, u2, g2, *it))
-                    return it->kerning;
-            }
-        }
-    }
-
-    return 0;
-}
-
-float SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const
-{
-    if (m_horizontalKerningMap.isEmpty())
-        return 0;
-
-    return kerningForPairOfStringsAndGlyphs(m_horizontalKerningMap, u1, g1, u2, g2);
-}
-
-float SVGFontElement::verticalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const
-{
-    if (m_verticalKerningMap.isEmpty())
-        return 0;
-
-    return kerningForPairOfStringsAndGlyphs(m_verticalKerningMap, u1, g1, u2, g2);
-}
-
-void SVGFontElement::collectGlyphsForString(const String& string, Vector<SVGGlyph>& glyphs)
-{
-    ensureGlyphCache();
-    m_glyphMap.collectGlyphsForString(string, glyphs);
-}
-
-void SVGFontElement::collectGlyphsForGlyphName(const String& glyphName, Vector<SVGGlyph>& glyphs)
-{
-    ensureGlyphCache();
-    // FIXME: We only support glyphName -> single glyph mapping so far.
-    glyphs.append(m_glyphMap.glyphIdentifierForGlyphName(glyphName));
-}
-
-SVGGlyph SVGFontElement::svgGlyphForGlyph(Glyph glyph)
-{
-    ensureGlyphCache();
-    return m_glyphMap.svgGlyphForGlyph(glyph);
-}
-
-Glyph SVGFontElement::missingGlyph()
-{
-    ensureGlyphCache();
-    return m_missingGlyph;
-}
-
 }
 
 #endif // ENABLE(SVG_FONTS)
index b70de78..8f41174 100644 (file)
 #include "SVGAnimatedBoolean.h"
 #include "SVGElement.h"
 #include "SVGExternalResourcesRequired.h"
-#include "SVGGlyphMap.h"
 #include "SVGParserUtilities.h"
 
 namespace WebCore {
 
-// Describe an SVG <hkern>/<vkern> element already matched on the first symbol.
-struct SVGKerning {
-    float kerning;
-    UnicodeRanges unicodeRange2;
-    HashSet<String> unicodeName2;
-    HashSet<String> glyphName2;
-
-    SVGKerning()
-        : kerning(0)
-    { }
-};
-
 // Describe an SVG <hkern>/<vkern> element
-struct SVGKerningPair : public SVGKerning {
+struct SVGKerningPair {
     UnicodeRanges unicodeRange1;
     HashSet<String> unicodeName1;
     HashSet<String> glyphName1;
-};
-
-typedef Vector<SVGKerning> SVGKerningVector;
 
-struct SVGKerningMap {
-    HashMap<String, std::unique_ptr<SVGKerningVector>> unicodeMap;
-    HashMap<String, std::unique_ptr<SVGKerningVector>> glyphMap;
-    Vector<SVGKerningPair> kerningUnicodeRangeMap;
-
-    bool isEmpty() const { return unicodeMap.isEmpty() && glyphMap.isEmpty() && kerningUnicodeRangeMap.isEmpty(); }
-    void clear();
-    void insert(const SVGKerningPair&);
+    UnicodeRanges unicodeRange2;
+    HashSet<String> unicodeName2;
+    HashSet<String> glyphName2;
+    float kerning { 0 };
 };
 
-class SVGMissingGlyphElement;
-
 class SVGFontElement final : public SVGElement
                            , public SVGExternalResourcesRequired {
 public:
     static Ref<SVGFontElement> create(const QualifiedName&, Document&);
 
-    void invalidateGlyphCache();
-    void collectGlyphsForString(const String&, Vector<SVGGlyph>&);
-    void collectGlyphsForGlyphName(const String&, Vector<SVGGlyph>&);
-
-    float horizontalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const;
-    float verticalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const;
-
-    // Used by Font/WidthIterator.
-    SVGGlyph svgGlyphForGlyph(Glyph);
-    Glyph missingGlyph();
-
-    const SVGMissingGlyphElement* firstMissingGlyphElement() const;
-    bool horizontalKerningMapIsEmpty() const { return m_horizontalKerningMap.isEmpty(); }
-
 private:
     SVGFontElement(const QualifiedName&, Document&);
 
     bool rendererIsNeeded(const RenderStyle&) override { return false; }
 
-    void ensureGlyphCache();
-    void registerLigaturesInGlyphCache(Vector<String>&);
-
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGFontElement)
         DECLARE_ANIMATED_BOOLEAN_OVERRIDE(ExternalResourcesRequired, externalResourcesRequired)
     END_DECLARE_ANIMATED_PROPERTIES
-
-    SVGKerningMap m_horizontalKerningMap;
-    SVGKerningMap m_verticalKerningMap;
-    SVGGlyphMap m_glyphMap;
-    Glyph m_missingGlyph;
-    bool m_isGlyphCacheValid;
 };
 
 } // namespace WebCore
index 7848cab..7f66952 100644 (file)
@@ -24,7 +24,6 @@
 #if ENABLE(SVG_FONTS)
 #include "SVGGlyphElement.h"
 
-#include "SVGFontData.h"
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
 #include "SVGNames.h"
@@ -43,125 +42,6 @@ Ref<SVGGlyphElement> SVGGlyphElement::create(const QualifiedName& tagName, Docum
     return adoptRef(*new SVGGlyphElement(tagName, document));
 }
 
-void SVGGlyphElement::invalidateGlyphCache()
-{
-    ContainerNode* fontNode = parentNode();
-    if (is<SVGFontElement>(fontNode))
-        downcast<SVGFontElement>(*fontNode).invalidateGlyphCache();
-}
-
-void SVGGlyphElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
-{
-    if (name == SVGNames::dAttr)
-        invalidateGlyphCache();
-    else
-        SVGElement::parseAttribute(name, value);
-}
-
-Node::InsertionNotificationRequest SVGGlyphElement::insertedInto(ContainerNode& rootParent)
-{
-    invalidateGlyphCache();
-    return SVGElement::insertedInto(rootParent);
-}
-
-void SVGGlyphElement::removedFrom(ContainerNode& rootParent)
-{
-    if (rootParent.inDocument())
-        invalidateGlyphCache();
-    SVGElement::removedFrom(rootParent);
-}
-
-static inline SVGGlyph::ArabicForm parseArabicForm(const AtomicString& value)
-{
-    if (value == "medial")
-        return SVGGlyph::Medial;
-    if (value == "terminal")
-        return SVGGlyph::Terminal;
-    if (value == "isolated")
-        return SVGGlyph::Isolated;
-    if (value == "initial")
-        return SVGGlyph::Initial;
-
-    return SVGGlyph::None;
-}
-
-static inline SVGGlyph::Orientation parseOrientation(const AtomicString& value)
-{
-    if (value == "h")
-        return SVGGlyph::Horizontal;
-    if (value == "v")
-        return SVGGlyph::Vertical;
-
-    return SVGGlyph::Both;
-}
-
-void SVGGlyphElement::inheritUnspecifiedAttributes(SVGGlyph& identifier, const SVGFontData* svgFontData)
-{
-    if (identifier.horizontalAdvanceX == SVGGlyph::inheritedValue())
-        identifier.horizontalAdvanceX = svgFontData->horizontalAdvanceX();
-
-    if (identifier.verticalOriginX == SVGGlyph::inheritedValue())
-        identifier.verticalOriginX = svgFontData->verticalOriginX();
-
-    if (identifier.verticalOriginY == SVGGlyph::inheritedValue())
-        identifier.verticalOriginY = svgFontData->verticalOriginY();
-
-    if (identifier.verticalAdvanceY == SVGGlyph::inheritedValue())
-        identifier.verticalAdvanceY = svgFontData->verticalAdvanceY();
-}
-
-static inline float parseSVGGlyphAttribute(const SVGElement* element, const WebCore::QualifiedName& name)
-{
-    AtomicString value(element->fastGetAttribute(name));
-    if (value.isEmpty())
-        return SVGGlyph::inheritedValue();
-
-    return value.toFloat();
-}
-
-SVGGlyph SVGGlyphElement::buildGenericGlyphIdentifier(const SVGElement* element)
-{
-    SVGGlyph identifier;
-    buildPathFromString(element->fastGetAttribute(SVGNames::dAttr), identifier.pathData);
-    // Spec: The horizontal advance after rendering the glyph in horizontal orientation.
-    // If the attribute is not specified, the effect is as if the attribute were set to the
-    // value of the font's horiz-adv-x attribute. Glyph widths are required to be non-negative,
-    // even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts.
-    identifier.horizontalAdvanceX = parseSVGGlyphAttribute(element, SVGNames::horiz_adv_xAttr);
-
-    // Spec: The X-coordinate in the font coordinate system of the origin of the glyph to be
-    // used when drawing vertically oriented text. If the attribute is not specified, the effect
-    // is as if the attribute were set to the value of the font's vert-origin-x attribute.
-    identifier.verticalOriginX = parseSVGGlyphAttribute(element, SVGNames::vert_origin_xAttr);
-
-    // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be
-    // used when drawing vertically oriented text. If the attribute is not specified, the effect
-    // is as if the attribute were set to the value of the font's vert-origin-y attribute.
-    identifier.verticalOriginY = parseSVGGlyphAttribute(element, SVGNames::vert_origin_yAttr);
-
-    // Spec: The vertical advance after rendering a glyph in vertical orientation.
-    // If the attribute is not specified, the effect is as if the attribute were set to the
-    // value of the font's vert-adv-y attribute.
-    identifier.verticalAdvanceY = parseSVGGlyphAttribute(element, SVGNames::vert_adv_yAttr);
-
-    return identifier;
-}
-
-SVGGlyph SVGGlyphElement::buildGlyphIdentifier() const
-{
-    SVGGlyph identifier(buildGenericGlyphIdentifier(this));
-    identifier.glyphName = fastGetAttribute(SVGNames::glyph_nameAttr);
-    identifier.orientation = parseOrientation(fastGetAttribute(SVGNames::orientationAttr));
-    identifier.arabicForm = parseArabicForm(fastGetAttribute(SVGNames::arabic_formAttr));
-
-    String language = fastGetAttribute(SVGNames::langAttr);
-    if (!language.isEmpty())
-        identifier.languages = parseDelimitedString(language, ',');
-
-    return identifier;
-}
-
 }
 
 #endif // ENABLE(SVG_FONTS)
index 0eabc4b..ce3f0ee 100644 (file)
 
 #if ENABLE(SVG_FONTS)
 #include "SVGElement.h"
-#include "SVGGlyph.h"
 
 namespace WebCore {
 
-class SVGFontData;
-
 class SVGGlyphElement final : public SVGElement {
 public:
     static Ref<SVGGlyphElement> create(const QualifiedName&, Document&);
 
-    SVGGlyph buildGlyphIdentifier() const;
-
     // Helper function used by SVGFont
-    static void inheritUnspecifiedAttributes(SVGGlyph&, const SVGFontData*);
     static String querySVGFontLanguage(const SVGElement*);
 
-    // Helper function shared between SVGGlyphElement & SVGMissingGlyphElement
-    static SVGGlyph buildGenericGlyphIdentifier(const SVGElement*);
-
 private:
     SVGGlyphElement(const QualifiedName&, Document&);
 
-    // FIXME: svgAttributeChanged missing.
-    void parseAttribute(const QualifiedName&, const AtomicString&) override;
-
-    InsertionNotificationRequest insertedInto(ContainerNode&) override;
-    void removedFrom(ContainerNode&) override;
-
     bool rendererIsNeeded(const RenderStyle&) override { return false; }
-
-    void invalidateGlyphCache();
 };
 
 } // namespace WebCore
diff --git a/Source/WebCore/svg/SVGGlyphMap.h b/Source/WebCore/svg/SVGGlyphMap.h
deleted file mode 100644 (file)
index ce0b65b..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef SVGGlyphMap_h
-#define SVGGlyphMap_h
-
-#if ENABLE(SVG_FONTS)
-
-#include "SurrogatePairAwareTextIterator.h"
-#include "SVGGlyph.h"
-#include <wtf/HashMap.h>
-#include <wtf/Vector.h>
-#include <wtf/text/StringView.h>
-
-namespace WebCore {
-
-struct GlyphMapNode;
-class SVGFontData;
-
-typedef HashMap<UChar32, RefPtr<GlyphMapNode>> GlyphMapLayer;
-
-struct GlyphMapNode : public RefCounted<GlyphMapNode> {
-private:
-    GlyphMapNode() { }
-public:
-    static Ref<GlyphMapNode> create() { return adoptRef(*new GlyphMapNode); }
-
-    Vector<SVGGlyph> glyphs;
-
-    GlyphMapLayer children;
-};
-
-class SVGGlyphMap {
-public:
-    SVGGlyphMap() : m_currentPriority(0) { }
-
-    void addGlyph(const String& glyphName, const String& unicodeString, SVGGlyph glyph)
-    {
-        ASSERT(!glyphName.isEmpty() || !unicodeString.isEmpty());
-
-        bool hasGlyphName = !glyphName.isEmpty();
-        if (unicodeString.isEmpty()) {
-            // Register named glyph in the named glyph map and in the glyph table.
-            ASSERT(hasGlyphName);
-            appendToGlyphTable(glyph);
-            m_namedGlyphs.add(glyphName, glyph.tableEntry);
-            return;
-        }
-    
-        GlyphMapLayer* currentLayer = &m_rootLayer;
-        RefPtr<GlyphMapNode> node;
-        size_t length = unicodeString.length();
-
-        UChar32 character = 0;
-        unsigned clusterLength = 0;
-        auto upconvertedCharacters = StringView(unicodeString).upconvertedCharacters();
-        SurrogatePairAwareTextIterator textIterator(upconvertedCharacters, 0, length, length);
-        while (textIterator.consume(character, clusterLength)) {
-            node = currentLayer->get(character);
-            if (!node) {
-                node = GlyphMapNode::create();
-                currentLayer->set(character, node);
-            }
-            currentLayer = &node->children;
-            textIterator.advance(clusterLength);
-        }
-
-        if (!node)
-            return;
-
-        // Register glyph associated with an unicode string into the glyph map.
-        node->glyphs.append(glyph);
-        SVGGlyph& lastGlyph = node->glyphs.last();
-        lastGlyph.priority = m_currentPriority++;
-        lastGlyph.unicodeStringLength = length;
-    
-        // If the glyph is named, also add it to the named glyph name, and to the glyph table in both cases.
-        appendToGlyphTable(lastGlyph);
-        if (hasGlyphName)  
-            m_namedGlyphs.add(glyphName, lastGlyph.tableEntry);
-    }
-
-    void appendToGlyphTable(SVGGlyph& glyph)
-    {
-        size_t tableEntry = m_glyphTable.size();
-        ASSERT(tableEntry < std::numeric_limits<unsigned short>::max());
-
-        // The first table entry starts with 1. 0 denotes an unknown glyph.
-        glyph.tableEntry = tableEntry + 1;
-        m_glyphTable.append(glyph);
-    }
-
-    static inline bool compareGlyphPriority(const SVGGlyph& first, const SVGGlyph& second)
-    {
-        return first.priority < second.priority;
-    }
-
-    void collectGlyphsForString(const String& string, Vector<SVGGlyph>& glyphs)
-    {
-        GlyphMapLayer* currentLayer = &m_rootLayer;
-
-        auto upconvertedCharacters = StringView(string).upconvertedCharacters();
-        size_t length = string.length();
-
-        UChar32 character = 0;
-        unsigned clusterLength = 0;
-        SurrogatePairAwareTextIterator textIterator(upconvertedCharacters, 0, length, length);
-        while (textIterator.consume(character, clusterLength)) {
-            RefPtr<GlyphMapNode> node = currentLayer->get(character);
-            if (!node)
-                break;
-            glyphs.appendVector(node->glyphs);
-            currentLayer = &node->children;
-            textIterator.advance(clusterLength);
-        }
-
-        std::sort(glyphs.begin(), glyphs.end(), compareGlyphPriority);
-    }
-    
-    void clear() 
-    { 
-        m_rootLayer.clear();
-        m_glyphTable.clear();
-        m_currentPriority = 0;
-    }
-
-    const SVGGlyph& svgGlyphForGlyph(Glyph glyph) const
-    {
-        if (!glyph || glyph > m_glyphTable.size()) {
-            static NeverDestroyed<SVGGlyph> defaultGlyph;
-            return defaultGlyph;
-        }
-        return m_glyphTable[glyph - 1];
-    }
-
-    const SVGGlyph& glyphIdentifierForGlyphName(const String& glyphName) const
-    {
-        return svgGlyphForGlyph(m_namedGlyphs.get(glyphName));
-    }
-
-private:
-    GlyphMapLayer m_rootLayer;
-    Vector<SVGGlyph, 256> m_glyphTable;
-    HashMap<String, Glyph> m_namedGlyphs;
-    int m_currentPriority;
-};
-
-}
-
-#endif // ENABLE(SVG_FONTS)
-#endif // SVGGlyphMap_h
index fd0c0e9..2233c52 100644 (file)
@@ -41,24 +41,6 @@ Ref<SVGHKernElement> SVGHKernElement::create(const QualifiedName& tagName, Docum
     return adoptRef(*new SVGHKernElement(tagName, document));
 }
 
-Node::InsertionNotificationRequest SVGHKernElement::insertedInto(ContainerNode& rootParent)
-{
-    ContainerNode* fontNode = parentNode();
-    if (is<SVGFontElement>(fontNode))
-        downcast<SVGFontElement>(*fontNode).invalidateGlyphCache();
-
-    return SVGElement::insertedInto(rootParent);
-}
-
-void SVGHKernElement::removedFrom(ContainerNode& rootParent)
-{
-    ContainerNode* fontNode = parentNode();
-    if (is<SVGFontElement>(fontNode))
-        downcast<SVGFontElement>(*fontNode).invalidateGlyphCache();
-
-    SVGElement::removedFrom(rootParent);
-}
-
 bool SVGHKernElement::buildHorizontalKerningPair(SVGKerningPair& kerningPair) const
 {
     String u1 = fastGetAttribute(SVGNames::u1Attr);
index 0d98e60..d4a7728 100644 (file)
@@ -36,9 +36,6 @@ public:
 private:
     SVGHKernElement(const QualifiedName&, Document&);
 
-    InsertionNotificationRequest insertedInto(ContainerNode&) override;
-    void removedFrom(ContainerNode&) override;
-
     bool rendererIsNeeded(const RenderStyle&) override { return false; }
 };
 
index a642e23..00fa655 100644 (file)
@@ -26,8 +26,6 @@
 #include "config.h"
 #include "SVGToOTFFontConversion.h"
 
-#if ENABLE(SVG_OTF_CONVERTER)
-
 #include "CSSStyleDeclaration.h"
 #include "ElementChildIterator.h"
 #include "SVGFontElement.h"
@@ -1594,5 +1592,3 @@ Optional<Vector<char>> convertSVGToOTFFont(const SVGFontElement& element)
 }
 
 }
-
-#endif // ENABLE(SVG_OTF_CONVERTER)
index 64d7213..30a4311 100644 (file)
@@ -26,8 +26,6 @@
 #ifndef SVGToOTFFontConversion_h
 #define SVGToOTFFontConversion_h
 
-#if ENABLE(SVG_OTF_CONVERTER)
-
 #include <wtf/Optional.h>
 #include <wtf/Vector.h>
 
@@ -39,5 +37,4 @@ Optional<Vector<char>> convertSVGToOTFFont(const SVGFontElement&);
 
 }
 
-#endif // ENABLE(SVG_OTF_CONVERTER)
 #endif
index 9b47b7e..437d9d7 100644 (file)
@@ -40,26 +40,6 @@ Ref<SVGVKernElement> SVGVKernElement::create(const QualifiedName& tagName, Docum
     return adoptRef(*new SVGVKernElement(tagName, document));
 }
 
-Node::InsertionNotificationRequest SVGVKernElement::insertedInto(ContainerNode& rootParent)
-{
-    if (rootParent.inDocument()) {
-        ContainerNode* fontNode = parentNode();
-        if (is<SVGFontElement>(fontNode))
-            downcast<SVGFontElement>(*fontNode).invalidateGlyphCache();
-    }
-
-    return SVGElement::insertedInto(rootParent);
-}
-
-void SVGVKernElement::removedFrom(ContainerNode& rootParent)
-{
-    ContainerNode* fontNode = parentNode();
-    if (is<SVGFontElement>(fontNode))
-        downcast<SVGFontElement>(*fontNode).invalidateGlyphCache();
-
-    SVGElement::removedFrom(rootParent);
-}
-
 bool SVGVKernElement::buildVerticalKerningPair(SVGKerningPair& kerningPair) const
 {
     String u1 = fastGetAttribute(SVGNames::u1Attr);
index 289ed3a..18d493f 100644 (file)
@@ -35,9 +35,6 @@ public:
 private:
     SVGVKernElement(const QualifiedName&, Document&);
 
-    InsertionNotificationRequest insertedInto(ContainerNode&) override;
-    void removedFrom(ContainerNode&) override;
-
     bool rendererIsNeeded(const RenderStyle&) override { return false; }
 };
 
index c3022a4..003dc3b 100644 (file)
@@ -1,3 +1,12 @@
+2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Delete dead SVG Font code
+        https://bugs.webkit.org/show_bug.cgi?id=154718
+
+        Reviewed by Antti Koivisto.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2016-03-11  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [ES6] Implement Reflect.set without receiver support
index a4e4633..dca0128 100644 (file)
@@ -151,7 +151,6 @@ ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
 ENABLE_STREAMS_API = ENABLE_STREAMS_API;
 ENABLE_SUBTLE_CRYPTO = ENABLE_SUBTLE_CRYPTO;
 ENABLE_SVG_FONTS = ENABLE_SVG_FONTS;
-ENABLE_SVG_OTF_CONVERTER = ENABLE_SVG_OTF_CONVERTER;
 
 ENABLE_TELEPHONE_NUMBER_DETECTION = ENABLE_TELEPHONE_NUMBER_DETECTION;
 
@@ -197,4 +196,4 @@ ENABLE_CUSTOM_ELEMENTS = ENABLE_CUSTOM_ELEMENTS;
 ENABLE_SEPARATED_WX_HEAP[sdk=iphone*] = ENABLE_SEPARATED_WX_HEAP;
 ENABLE_SEPARATED_WX_HEAP[sdk=macosx*] = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_OTF_CONVERTER) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
index cc56509..3354e90 100644 (file)
@@ -1,3 +1,12 @@
+2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Delete dead SVG Font code
+        https://bugs.webkit.org/show_bug.cgi?id=154718
+
+        Reviewed by Antti Koivisto.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2016-03-12  Beth Dakin  <bdakin@apple.com>
 
         Make preview inline navigation work API
index a4e4633..dca0128 100644 (file)
@@ -151,7 +151,6 @@ ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
 ENABLE_STREAMS_API = ENABLE_STREAMS_API;
 ENABLE_SUBTLE_CRYPTO = ENABLE_SUBTLE_CRYPTO;
 ENABLE_SVG_FONTS = ENABLE_SVG_FONTS;
-ENABLE_SVG_OTF_CONVERTER = ENABLE_SVG_OTF_CONVERTER;
 
 ENABLE_TELEPHONE_NUMBER_DETECTION = ENABLE_TELEPHONE_NUMBER_DETECTION;
 
@@ -197,4 +196,4 @@ ENABLE_CUSTOM_ELEMENTS = ENABLE_CUSTOM_ELEMENTS;
 ENABLE_SEPARATED_WX_HEAP[sdk=iphone*] = ENABLE_SEPARATED_WX_HEAP;
 ENABLE_SEPARATED_WX_HEAP[sdk=macosx*] = ;
 
-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_OTF_CONVERTER) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_ES6_ARROWFUNCTION_SYNTAX) $(ENABLE_ES6_CLASS_SYNTAX) $(ENABLE_ES6_GENERATORS) $(ENABLE_ES6_MODULES) $(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FETCH_API) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEB_ANIMATIONS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_JIT) $(ENABLE_SHADOW_DOM) $(ENABLE_CUSTOM_ELEMENTS) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_SEPARATED_WX_HEAP);
index 8df4799..58b2cf3 100644 (file)
@@ -127,7 +127,6 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHADOW_DOM PRIVATE OFF)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPEECH_SYNTHESIS PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPELLCHECK PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SUBTLE_CRYPTO PUBLIC OFF)
-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SVG_OTF_CONVERTER PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEMPLATE_ELEMENT PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_SLIDER PUBLIC ON)
index ed4b4fd..e981469 100644 (file)
@@ -62,7 +62,6 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REQUEST_ANIMATION_FRAME PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHADOW_DOM PUBLIC OFF)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_STREAMS_API PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SVG_FONTS PUBLIC ON)
-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SVG_OTF_CONVERTER PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEMPLATE_ELEMENT PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEXT_AUTOSIZING PUBLIC OFF)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO PUBLIC ON)
index 54398c0..e60344c 100644 (file)
@@ -181,7 +181,6 @@ macro(WEBKIT_OPTION_BEGIN)
     WEBKIT_OPTION_DEFINE(ENABLE_STREAMS_API "Toggle Streams API support" PRIVATE ON)
     WEBKIT_OPTION_DEFINE(ENABLE_SUBTLE_CRYPTO "Toggle subtle crypto support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_SVG_FONTS "Toggle SVG fonts support (imples SVG support)" PRIVATE ON)
-    WEBKIT_OPTION_DEFINE(ENABLE_SVG_OTF_CONVERTER "Toggle whether to use the SVG to OTF font converter" PRIVATE ON)
     WEBKIT_OPTION_DEFINE(ENABLE_TELEPHONE_NUMBER_DETECTION "Toggle telephone number detection support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_TEMPLATE_ELEMENT "Toggle Template support" PRIVATE ON)
     WEBKIT_OPTION_DEFINE(ENABLE_TEXT_AUTOSIZING "Toggle Text auto sizing support" PRIVATE OFF)
index b3df25c..19a4b01 100644 (file)
@@ -77,7 +77,6 @@
     <ENABLE_SUBPIXEL_LAYOUT>ENABLE_SUBPIXEL_LAYOUT</ENABLE_SUBPIXEL_LAYOUT>
     <ENABLE_SVG_DOM_OBJC_BINDINGS />
     <ENABLE_SVG_FONTS>ENABLE_SVG_FONTS</ENABLE_SVG_FONTS>
-    <ENABLE_SVG_OTF_CONVERTER />
     <ENABLE_TEMPLATE_ELEMENT>ENABLE_TEMPLATE_ELEMENT</ENABLE_TEMPLATE_ELEMENT>
     <ENABLE_TEXT_AUTOSIZING />
     <ENABLE_VIDEO>ENABLE_VIDEO</ENABLE_VIDEO>
@@ -97,7 +96,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>$(ENABLE_CSP_NEXT);$(ENABLE_PROMISES);$(ENABLE_REQUEST_ANIMATION_FRAME);$(ENABLE_3D_TRANSFORMS);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_ACCELERATED_OVERFLOW_SCROLLING);$(ENABLE_ATTACHMENT_ELEMENT);$(ENABLE_CANVAS_PATH);$(ENABLE_CANVAS_PROXY);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CSS3_CONDITIONAL_RULES);$(ENABLE_CSS_IMAGE_SET);$(ENABLE_CSS3_TEXT);$(ENABLE_CSS_BOX_DECORATION_BREAK);$(ENABLE_CSS_GRID_LAYOUT);$(ENABLE_CSS_SHADERS);$(ENABLE_CSS_COMPOSITING);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_SELECTORS_LEVEL4);$(ENABLE_CSS_SHAPES);$(ENABLE_CSS_SHAPE_INSIDE);$(ENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED);$(ENABLE_CURSOR_VISIBILITY);$(ENABLE_CUSTOM_SCHEME_HANDLER);$(ENABLE_DATAGRID);$(ENABLE_DATALIST_ELEMENT);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS_ELEMENT);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM4_EVENTS_CONSTRUCTOR);$(ENABLE_ENCRYPTED_MEDIA_V2);$(ENABLE_ES6_GENERATORS);$(ENABLE_ES6_MODULES);$(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX);$(ENABLE_FETCH_API);$(ENABLE_FILE_SYSTEM);$(ENABLE_FULLSCREEN_API);$(ENABLE_GAMEPAD);$(ENABLE_GEOLOCATION);$(ENABLE_HIGH_DPI_CANVAS);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_TYPE_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_INPUT_TYPE_DATE);$(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE);$(ENABLE_INPUT_TYPE_DATETIMELOCAL);$(ENABLE_INPUT_TYPE_MONTH);$(ENABLE_INPUT_TYPE_TIME);$(ENABLE_INPUT_TYPE_WEEK);$(ENABLE_INTL);$(ENABLE_LEGACY_CSS_VENDOR_PREFIXES);$(ENABLE_LEGACY_NOTIFICATIONS);$(ENABLE_LINK_PREFETCH);$(ENABLE_LINK_PRERENDER);$(ENABLE_MATHML);$(ENABLE_METER_ELEMENT);$(ENABLE_MICRODATA);$(ENABLE_MOUSE_CURSOR_SCALE);$(ENABLE_NOTIFICATIONS);$(ENABLE_PROXIMITY_EVENTS);$(ENABLE_QUOTA);$(ENABLE_NAVIGATOR_CONTENT_UTILS);$(ENABLE_SCRIPTED_SPEECH);$(ENABLE_SHADOW_DOM);$(ENABLE_SHARED_WORKERS);$(ENABLE_MEDIA_CONTROLS_SCRIPT);$(ENABLE_MEDIA_SOURCE);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_SQL_DATABASE);$(ENABLE_STREAMS_API);$(ENABLE_STYLE_SCOPED);$(ENABLE_SUBPIXEL_LAYOUT);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_SVG_OTF_CONVERTER);$(ENABLE_TEMPLATE_ELEMENT);$(ENABLE_TEXT_AUTOSIZING);$(ENABLE_VIDEO);$(ENABLE_VIDEO_TRACK);$(ENABLE_VIEW_MODE_CSS_MEDIA);$(ENABLE_WEB_ANIMATIONS);$(ENABLE_WEB_AUDIO);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WEBGL);$(ENABLE_WEBVTT_REGIONS);$(ENABLE_XHR_TIMEOUT);$(ENABLE_XSLT);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>$(ENABLE_CSP_NEXT);$(ENABLE_PROMISES);$(ENABLE_REQUEST_ANIMATION_FRAME);$(ENABLE_3D_TRANSFORMS);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_ACCELERATED_OVERFLOW_SCROLLING);$(ENABLE_ATTACHMENT_ELEMENT);$(ENABLE_CANVAS_PATH);$(ENABLE_CANVAS_PROXY);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CSS3_CONDITIONAL_RULES);$(ENABLE_CSS_IMAGE_SET);$(ENABLE_CSS3_TEXT);$(ENABLE_CSS_BOX_DECORATION_BREAK);$(ENABLE_CSS_GRID_LAYOUT);$(ENABLE_CSS_SHADERS);$(ENABLE_CSS_COMPOSITING);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_SELECTORS_LEVEL4);$(ENABLE_CSS_SHAPES);$(ENABLE_CSS_SHAPE_INSIDE);$(ENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED);$(ENABLE_CURSOR_VISIBILITY);$(ENABLE_CUSTOM_SCHEME_HANDLER);$(ENABLE_DATAGRID);$(ENABLE_DATALIST_ELEMENT);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS_ELEMENT);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM4_EVENTS_CONSTRUCTOR);$(ENABLE_ENCRYPTED_MEDIA_V2);$(ENABLE_ES6_GENERATORS);$(ENABLE_ES6_MODULES);$(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX);$(ENABLE_FETCH_API);$(ENABLE_FILE_SYSTEM);$(ENABLE_FULLSCREEN_API);$(ENABLE_GAMEPAD);$(ENABLE_GEOLOCATION);$(ENABLE_HIGH_DPI_CANVAS);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_TYPE_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_INPUT_TYPE_DATE);$(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE);$(ENABLE_INPUT_TYPE_DATETIMELOCAL);$(ENABLE_INPUT_TYPE_MONTH);$(ENABLE_INPUT_TYPE_TIME);$(ENABLE_INPUT_TYPE_WEEK);$(ENABLE_INTL);$(ENABLE_LEGACY_CSS_VENDOR_PREFIXES);$(ENABLE_LEGACY_NOTIFICATIONS);$(ENABLE_LINK_PREFETCH);$(ENABLE_LINK_PRERENDER);$(ENABLE_MATHML);$(ENABLE_METER_ELEMENT);$(ENABLE_MICRODATA);$(ENABLE_MOUSE_CURSOR_SCALE);$(ENABLE_NOTIFICATIONS);$(ENABLE_PROXIMITY_EVENTS);$(ENABLE_QUOTA);$(ENABLE_NAVIGATOR_CONTENT_UTILS);$(ENABLE_SCRIPTED_SPEECH);$(ENABLE_SHADOW_DOM);$(ENABLE_SHARED_WORKERS);$(ENABLE_MEDIA_CONTROLS_SCRIPT);$(ENABLE_MEDIA_SOURCE);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_SQL_DATABASE);$(ENABLE_STREAMS_API);$(ENABLE_STYLE_SCOPED);$(ENABLE_SUBPIXEL_LAYOUT);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_TEMPLATE_ELEMENT);$(ENABLE_TEXT_AUTOSIZING);$(ENABLE_VIDEO);$(ENABLE_VIDEO_TRACK);$(ENABLE_VIEW_MODE_CSS_MEDIA);$(ENABLE_WEB_ANIMATIONS);$(ENABLE_WEB_AUDIO);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WEBGL);$(ENABLE_WEBVTT_REGIONS);$(ENABLE_XHR_TIMEOUT);$(ENABLE_XSLT);%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
   </ItemDefinitionGroup>
   <ItemGroup>
       <Value>$(ENABLE_SVG_FONTS)</Value>
       <EnvironmentVariable>true</EnvironmentVariable>
     </BuildMacro>
-    <BuildMacro Include="ENABLE_SVG_OTF_CONVERTER">
-      <Value>$(ENABLE_SVG_OTF_CONVERTER)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
     <BuildMacro Include="ENABLE_TEMPLATE_ELEMENT">
       <Value>$(ENABLE_TEMPLATE_ELEMENT)</Value>
       <EnvironmentVariable>true</EnvironmentVariable>
index 69e622c..73c7398 100644 (file)
@@ -76,7 +76,6 @@
     <ENABLE_SUBPIXEL_LAYOUT>ENABLE_SUBPIXEL_LAYOUT</ENABLE_SUBPIXEL_LAYOUT>
     <ENABLE_SVG_DOM_OBJC_BINDINGS />
     <ENABLE_SVG_FONTS>ENABLE_SVG_FONTS</ENABLE_SVG_FONTS>
-    <ENABLE_SVG_OTF_CONVERTER />
     <ENABLE_TEMPLATE_ELEMENT>ENABLE_TEMPLATE_ELEMENT</ENABLE_TEMPLATE_ELEMENT>
     <ENABLE_TEXT_AUTOSIZING />
     <ENABLE_VIDEO>ENABLE_VIDEO</ENABLE_VIDEO>
@@ -96,7 +95,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>$(ENABLE_CSP_NEXT);$(ENABLE_PROMISES);$(ENABLE_REQUEST_ANIMATION_FRAME);$(ENABLE_3D_TRANSFORMS);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_ACCELERATED_OVERFLOW_SCROLLING);$(ENABLE_ATTACHMENT_ELEMENT);$(ENABLE_CANVAS_PATH);$(ENABLE_CANVAS_PROXY);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CSS3_CONDITIONAL_RULES);$(ENABLE_CSS_IMAGE_SET);$(ENABLE_CSS3_TEXT);$(ENABLE_CSS_BOX_DECORATION_BREAK);$(ENABLE_CSS_GRID_LAYOUT);$(ENABLE_CSS_SHADERS);$(ENABLE_CSS_COMPOSITING);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_SELECTORS_LEVEL4);$(ENABLE_CSS_SHAPES);$(ENABLE_CSS_SHAPE_INSIDE);$(ENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED);$(ENABLE_CURSOR_VISIBILITY);$(ENABLE_CUSTOM_SCHEME_HANDLER);$(ENABLE_DATAGRID);$(ENABLE_DATALIST_ELEMENT);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS_ELEMENT);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM4_EVENTS_CONSTRUCTOR);$(ENABLE_ENCRYPTED_MEDIA_V2);$(ENABLE_ES6_GENERATORS);$(ENABLE_ES6_MODULES);$(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX);$(ENABLE_FETCH_API);$(ENABLE_FILE_SYSTEM);$(ENABLE_FULLSCREEN_API);$(ENABLE_GAMEPAD);$(ENABLE_GEOLOCATION);$(ENABLE_HIGH_DPI_CANVAS);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_TYPE_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_INPUT_TYPE_DATE);$(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE);$(ENABLE_INPUT_TYPE_DATETIMELOCAL);$(ENABLE_INPUT_TYPE_MONTH);$(ENABLE_INPUT_TYPE_TIME);$(ENABLE_INPUT_TYPE_WEEK);$(ENABLE_INTL);$(ENABLE_LEGACY_CSS_VENDOR_PREFIXES);$(ENABLE_LEGACY_NOTIFICATIONS);$(ENABLE_LINK_PREFETCH);$(ENABLE_LINK_PRERENDER);$(ENABLE_MATHML);$(ENABLE_METER_ELEMENT);$(ENABLE_MICRODATA);$(ENABLE_MOUSE_CURSOR_SCALE);$(ENABLE_NOTIFICATIONS);$(ENABLE_PROXIMITY_EVENTS);$(ENABLE_QUOTA);$(ENABLE_NAVIGATOR_CONTENT_UTILS);$(ENABLE_SCRIPTED_SPEECH);$(ENABLE_SHADOW_DOM);$(ENABLE_SHARED_WORKERS);$(ENABLE_MEDIA_CONTROLS_SCRIPT);$(ENABLE_MEDIA_SOURCE);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_SQL_DATABASE);$(ENABLE_STYLE_SCOPED);$(ENABLE_SUBPIXEL_LAYOUT);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_SVG_OTF_CONVERTER);$(ENABLE_TEMPLATE_ELEMENT);$(ENABLE_TEXT_AUTOSIZING);$(ENABLE_VIDEO);$(ENABLE_VIDEO_TRACK);$(ENABLE_VIEW_MODE_CSS_MEDIA);$(ENABLE_WEB_ANIMATIONS);$(ENABLE_WEB_AUDIO);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WEBGL);$(ENABLE_WEBVTT_REGIONS);$(ENABLE_XHR_TIMEOUT);$(ENABLE_XSLT);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>$(ENABLE_CSP_NEXT);$(ENABLE_PROMISES);$(ENABLE_REQUEST_ANIMATION_FRAME);$(ENABLE_3D_TRANSFORMS);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_ACCELERATED_OVERFLOW_SCROLLING);$(ENABLE_ATTACHMENT_ELEMENT);$(ENABLE_CANVAS_PATH);$(ENABLE_CANVAS_PROXY);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CSS3_CONDITIONAL_RULES);$(ENABLE_CSS_IMAGE_SET);$(ENABLE_CSS3_TEXT);$(ENABLE_CSS_BOX_DECORATION_BREAK);$(ENABLE_CSS_GRID_LAYOUT);$(ENABLE_CSS_SHADERS);$(ENABLE_CSS_COMPOSITING);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_SELECTORS_LEVEL4);$(ENABLE_CSS_SHAPES);$(ENABLE_CSS_SHAPE_INSIDE);$(ENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED);$(ENABLE_CURSOR_VISIBILITY);$(ENABLE_CUSTOM_SCHEME_HANDLER);$(ENABLE_DATAGRID);$(ENABLE_DATALIST_ELEMENT);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS_ELEMENT);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM4_EVENTS_CONSTRUCTOR);$(ENABLE_ENCRYPTED_MEDIA_V2);$(ENABLE_ES6_GENERATORS);$(ENABLE_ES6_MODULES);$(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX);$(ENABLE_FETCH_API);$(ENABLE_FILE_SYSTEM);$(ENABLE_FULLSCREEN_API);$(ENABLE_GAMEPAD);$(ENABLE_GEOLOCATION);$(ENABLE_HIGH_DPI_CANVAS);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_TYPE_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_INPUT_TYPE_DATE);$(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE);$(ENABLE_INPUT_TYPE_DATETIMELOCAL);$(ENABLE_INPUT_TYPE_MONTH);$(ENABLE_INPUT_TYPE_TIME);$(ENABLE_INPUT_TYPE_WEEK);$(ENABLE_INTL);$(ENABLE_LEGACY_CSS_VENDOR_PREFIXES);$(ENABLE_LEGACY_NOTIFICATIONS);$(ENABLE_LINK_PREFETCH);$(ENABLE_LINK_PRERENDER);$(ENABLE_MATHML);$(ENABLE_METER_ELEMENT);$(ENABLE_MICRODATA);$(ENABLE_MOUSE_CURSOR_SCALE);$(ENABLE_NOTIFICATIONS);$(ENABLE_PROXIMITY_EVENTS);$(ENABLE_QUOTA);$(ENABLE_NAVIGATOR_CONTENT_UTILS);$(ENABLE_SCRIPTED_SPEECH);$(ENABLE_SHADOW_DOM);$(ENABLE_SHARED_WORKERS);$(ENABLE_MEDIA_CONTROLS_SCRIPT);$(ENABLE_MEDIA_SOURCE);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_SQL_DATABASE);$(ENABLE_STYLE_SCOPED);$(ENABLE_SUBPIXEL_LAYOUT);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_TEMPLATE_ELEMENT);$(ENABLE_TEXT_AUTOSIZING);$(ENABLE_VIDEO);$(ENABLE_VIDEO_TRACK);$(ENABLE_VIEW_MODE_CSS_MEDIA);$(ENABLE_WEB_ANIMATIONS);$(ENABLE_WEB_AUDIO);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WEBGL);$(ENABLE_WEBVTT_REGIONS);$(ENABLE_XHR_TIMEOUT);$(ENABLE_XSLT);%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
   </ItemDefinitionGroup>
   <ItemGroup>
       <Value>$(ENABLE_SVG_FONTS)</Value>
       <EnvironmentVariable>true</EnvironmentVariable>
     </BuildMacro>
-    <BuildMacro Include="ENABLE_SVG_OTF_CONVERTER">
-      <Value>$(ENABLE_SVG_OTF_CONVERTER)</Value>
-      <EnvironmentVariable>true</EnvironmentVariable>
-    </BuildMacro>
     <BuildMacro Include="ENABLE_TEMPLATE_ELEMENT">
       <Value>$(ENABLE_TEMPLATE_ELEMENT)</Value>
       <EnvironmentVariable>true</EnvironmentVariable>