(рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдБ)
рдирдорд╕реНрддреЗ,
рдореИрдВ рдПрд╕рд╡реАрдЬреА рдЯреИрдЧ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рднрдпрд╛рдирдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдЬрдм рдореИрдВ рдПрд╕рд╡реАрдЬреА рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдЯреИрдЧ рдХреЛ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреБрдЫ рдЯреЗрдХреНрд╕реНрдЯ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рд╣реЛрддрд╛ рд╣реИ
рдЯреЗрдХреНрд╕реНрдЯ рдЯреИрдЧ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдб рдФрд░ рдПрд╕рд╡реАрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЖрдк рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣рд╛рдВ рдирдореВрдирд╛ рдХреЛрдб рд╣реИ (html2canvas 0.5.0-alpha2 рдХреЗ рд╕рд╛рде)
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/html2canvas.js"></script>
</head>
<body>
<svg width="100" height="100">
<g transform="translate(20,20)">
<text dy=".45em" y="10" x="0" dx="-.8em" transform="translate(0,0) rotate(-70)" style="font-size:12px;">Text</text>
</g>
</svg>
<script>
$(document).ready(function() {
html2canvas(document.body, {
onrendered: function(canvas) {
document.body.appendChild(canvas);
}
});
})
</script>
</body>
</html
рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░рд╛ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ
NodeParser.prototype.getChildren = function(parentContainer) {
return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {
var container = [node.nodeType === Node.TEXT_NODE && node.parentElement.tagName !== "text" ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);
return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== "TEXTAREA" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;
}, this));
};
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА
рдзрдиреНрдпрд╡рд╛рдж#рд╣реНрдпреЛрдЬрд┐рдиред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░реА рдмрд╣реБрдд рдорджрдж рдХрд░реЛ!
рдЖрдкрдХреЗ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЖрдк tspan рдЯреИрдЧрдирд╛рдо рдкрд░ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
node.nodeType === Node.TEXT_NODE && node.parentElement.tagName !== "text" && node.parentElement.tagName !== "tspan"
@ncoquelet рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!
@рд╣реНрдпреЛрдЬрд┐рди
рдЖрдИрдИ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХрд╛ рдлрд┐рдХреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ parentElement
рд╕рдВрдкрддреНрддрд┐ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдкрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп parentNode
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ! рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо NodeParser
рдФрд░ рдпрд╣ рдиреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдпрдерд╛, рдЯреИрдЧ рдирд╛рдо рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ parentNode
рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ TextContainer
рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдкреИрд░реЗрдВрдЯ рдиреЛрдб SVGElement
.
рдпрд╣ рдХреНрд░реЛрдо рдФрд░ рдпрд╛рдиреА 11 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрд░ рдореИрдВ рд░рд┐рдХреНрдд рдХреИрдирд╡рд╛рд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛!
рдореЗрд░рд╛ рдХреЛрдб
NodeParser.prototype.getChildren = function(parentContainer) {
return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {
var container = [node.nodeType === Node.TEXT_NODE && !(node.parentNode instanceof SVGElement) ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);
return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== "TEXTAREA" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;
}, this));
};
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред
рдореЗрд░реА рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рдПрдлрдПрдл рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :-)
рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ!
рдореИрдВрдиреЗ рдпрд╣ рднреА рдЬрд╛рдВрдЪрд╛ рдХрд┐ рдпрд╣ ff рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЖрдкрдХрд╛ рдлрд┐рдХреНрд╕ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж :)
@hyojin @ncoquelet рдЗрд╕ рдФрд░ рдлрд┐рдХреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рджреВрд╕рд░реЗ рджрд┐рди рдареАрдХ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рдерд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рдХрд╣рд╛рдВ рднреНрд░рдорд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкрд╡рд╛рдж рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "рдЕрдирдХреЙрдЯ рд░реЗрдлрд░реЗрдВрд╕ рдПрд░рд░: рдиреЛрдбрдкрд╛рд░реНрд╕рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ"
@ рд╕реБрдЪреЗрддрдирд╛10 рдЖрдкрдХреЛ рдЕрдкрд╡рд╛рдж рдХрдм рдорд┐рд▓рд╛? рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ?
@hyojin рдзрдиреНрдпрд╡рд╛рдж .. рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛
@ рд╣реНрдпреЛрдЬрд┐рди рдзрдиреНрдпрд╡рд╛рдж! рдореЗрд░реЗ рд▓рд┐рдП рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
Happyvishwasvadavi ugnugen рдореБрдЭреЗ рдпрд╣ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ! :)
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрднреА рднреА рдЯреЗрдХреНрд╕реНрдЯ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдкреАрдЖрд░ рднреЗрдЬреВрдВрдЧрд╛ред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдкреЗрдЬ рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ ..
рдХреНрдпрд╛ рдпрд╣ рдмрд┐рд▓реНрдб рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИ? рдореИрдВ рдЕрднреА рднреА рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдпрд╣ рдлрд┐рдХреНрд╕ рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╛ рд╣рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдмрдирд╛рдирд╛ рд╣реИ?
рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА v1.0.0 рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ jsfiddle рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рдХрд░ рджреА рдЧрдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рд▓реЗрдЦрдХ рдХреА рдУрд░ рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдХреЗрд╡рд▓ рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдпрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрддреНрддрд░ рдЦреЛрдЬреЗрдВ рддрд╛рдХрд┐ рд╣рдо рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗрдВред
рдкреНрд░рд┐рдп @niklasvh ,
рдЗрд╕ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг - v1.0.0-rc.3 рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреЛрдбрдкреЗрди (рдХреЗрд╡рд▓ рдХреНрд░реЛрдо) рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреБрдЫ рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдбреНрд╕ (рдЧреНрд░рд╛рдл рд╢реАрд░реНрд╖рдХ рдореЗрдВ) рдбреБрдкреНрд▓реАрдХреЗрдЯ рд╣реИрдВред
рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг -
рд░реЗрдЦрд╛#193 . рдкрд░ рдЧреНрд░рд╛рдлрд╝ рд╢реАрд░реНрд╖рдХ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ
@hyojin , рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВрдЧреЗ?
рд╕рд╛рджрд░,
рдХрд░рдг
рдирдорд╕реНрддреЗ @karannagupta
рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рд╢рд╛рдЦрд╛ рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрддрд╛ рд╣реИ?
рдирдорд╕реНрддреЗ @hyojin
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЖрдкрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде (v0.5.0-alpha2) рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдореЗрд░реА рдкреЗрди рдкрд░ рдЕрдкрдиреА рд╣реИрдВ
рд╕рд╛рде рд╣реА, рдореИрдВ html2canvas рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореБрдЭреЗ рддрдм html2canvas.svg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рд╛рджрд░,
рдХрд░рдг
рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдпреВрдирд┐рдХреЛрдб рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@рд╣реНрдпреЛрдЬрд┐рди
рдЖрдИрдИ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХрд╛ рдлрд┐рдХреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐
parentElement
рд╕рдВрдкрддреНрддрд┐ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдкрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдпparentNode
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ! рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдоNodeParser
рдФрд░ рдпрд╣ рдиреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИредрдЕрдиреНрдпрдерд╛, рдЯреИрдЧ рдирд╛рдо рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ
parentNode
рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓TextContainer
рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдкреИрд░реЗрдВрдЯ рдиреЛрдбSVGElement
.рдпрд╣ рдХреНрд░реЛрдо рдФрд░ рдпрд╛рдиреА 11 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрд░ рдореИрдВ рд░рд┐рдХреНрдд рдХреИрдирд╡рд╛рд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛!
рдореЗрд░рд╛ рдХреЛрдб
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред