Laying out a TextRun using an SVG font is O(n^2)
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 6 Sep 2014 04:14:15 +0000 (04:14 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 6 Sep 2014 04:14:15 +0000 (04:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=136584

Reviewed by Andreas Kling.

PerformanceTests:

Time how long it takes to lay out and render some text using an SVG font.

* SVG/SVG-Text.html: Added.
* SVG/resources/graffiti.svg: Added.

Source/WebCore:

Caching the version of the run with normalized spaces leads to a 5x speedup on the
performance test this patch adds.

Note that SVGFontData::applySVGGlyphSelection() is still unnecesarrily O(n), so more
work can be done here. In particular, the call to collectGlyphsForString() can likely
be sped up.

No new correctness tests because there is no behavior change.
Performance Test: SVG/SVG-Text.html

* platform/graphics/Font.h:
(WebCore::Font::treatAsSpace): Make inline.
(WebCore::Font::treatAsZeroWidthSpace): Ditto.
(WebCore::Font::treatAsZeroWidthSpaceInComplexScript): Ditto.
* platform/graphics/SimpleFontData.h: Add String cache argument.
* platform/graphics/TextRun.h: Move member variables around for better packing.
(WebCore::TextRun::TextRun): Ditto.
* platform/graphics/WidthIterator.cpp: Add String cache argument.
(WebCore::WidthIterator::glyphDataForCharacter): Ditto.
(WebCore::WidthIterator::advanceInternal): Create String cache and pass it to
glyphDataForCharacter.
* platform/graphics/WidthIterator.h: Add String cache argument.
* rendering/svg/SVGTextRunRenderingContext.cpp: Ditto.
(WebCore::SVGTextRunRenderingContext::glyphDataForCharacter): Ditto.
* rendering/svg/SVGTextRunRenderingContext.h: Ditto.
* svg/SVGFontData.cpp:
(WebCore::SVGFontData::applySVGGlyphSelection): Call computeNormalizedSpaces
to consult with the cache.
(WebCore::computeNormalizedSpaces): Compute cached String value.
* svg/SVGFontData.h: Add String cache argument.

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

13 files changed:
PerformanceTests/ChangeLog
PerformanceTests/SVG/SVG-Text.html [new file with mode: 0644]
PerformanceTests/SVG/resources/graffiti.svg [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/Font.h
Source/WebCore/platform/graphics/SimpleFontData.h
Source/WebCore/platform/graphics/TextRun.h
Source/WebCore/platform/graphics/WidthIterator.cpp
Source/WebCore/platform/graphics/WidthIterator.h
Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp
Source/WebCore/rendering/svg/SVGTextRunRenderingContext.h
Source/WebCore/svg/SVGFontData.cpp
Source/WebCore/svg/SVGFontData.h

index 30e24f7..d85d5ae 100644 (file)
@@ -1,3 +1,15 @@
+2014-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Laying out a TextRun using an SVG font is O(n^2)
+        https://bugs.webkit.org/show_bug.cgi?id=136584
+
+        Reviewed by Andreas Kling.
+
+        Time how long it takes to lay out and render some text using an SVG font.
+
+        * SVG/SVG-Text.html: Added.
+        * SVG/resources/graffiti.svg: Added.
+
 2014-09-02  Geoffrey Garen  <ggaren@apple.com>
 
         MallocBench should have a stress test for correctness
diff --git a/PerformanceTests/SVG/SVG-Text.html b/PerformanceTests/SVG/SVG-Text.html
new file mode 100644 (file)
index 0000000..0403220
--- /dev/null
@@ -0,0 +1,518 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../resources/runner.js"></script>
+<style>
+@font-face {
+    font-family: 'SVGraffiti';
+    src: url("resources/graffiti.svg#SVGraffiti") format(svg)
+}
+#content {
+    font-family: 'SVGraffiti';
+}
+</style>
+</head>
+<body>
+<div id="content">
+<span id="end">This string marks the end of the rendered text</span>
+</div>
+<script>
+PerfTestRunner.prepareToMeasureValuesAsync({done: onCompletedRun, unit: 'ms'});
+var now;
+var dummy;
+var finished = false;
+
+var textToRender = "\
+Shakespeare homepage | Hamlet | Entire play\
+ACT I\
+\
+SCENE I. Elsinore. A platform before the castle.\
+\
+FRANCISCO at his post. Enter to him BERNARDO\
+BERNARDO\
+Who's there?\
+FRANCISCO\
+Nay, answer me: stand, and unfold yourself.\
+BERNARDO\
+Long live the king!\
+FRANCISCO\
+Bernardo?\
+BERNARDO\
+He.\
+FRANCISCO\
+You come most carefully upon your hour.\
+BERNARDO\
+'Tis now struck twelve; get thee to bed, Francisco.\
+FRANCISCO\
+For this relief much thanks: 'tis bitter cold,\
+And I am sick at heart.\
+BERNARDO\
+Have you had quiet guard?\
+FRANCISCO\
+Not a mouse stirring.\
+BERNARDO\
+Well, good night.\
+If you do meet Horatio and Marcellus,\
+The rivals of my watch, bid them make haste.\
+FRANCISCO\
+I think I hear them. Stand, ho! Who's there?\
+Enter HORATIO and MARCELLUS\
+\
+HORATIO\
+Friends to this ground.\
+MARCELLUS\
+And liegemen to the Dane.\
+FRANCISCO\
+Give you good night.\
+MARCELLUS\
+O, farewell, honest soldier:\
+Who hath relieved you?\
+FRANCISCO\
+Bernardo has my place.\
+Give you good night.\
+Exit\
+\
+MARCELLUS\
+Holla! Bernardo!\
+BERNARDO\
+Say,\
+What, is Horatio there?\
+HORATIO\
+A piece of him.\
+BERNARDO\
+Welcome, Horatio: welcome, good Marcellus.\
+MARCELLUS\
+What, has this thing appear'd again to-night?\
+BERNARDO\
+I have seen nothing.\
+MARCELLUS\
+Horatio says 'tis but our fantasy,\
+And will not let belief take hold of him\
+Touching this dreaded sight, twice seen of us:\
+Therefore I have entreated him along\
+With us to watch the minutes of this night;\
+That if again this apparition come,\
+He may approve our eyes and speak to it.\
+HORATIO\
+Tush, tush, 'twill not appear.\
+BERNARDO\
+Sit down awhile;\
+And let us once again assail your ears,\
+That are so fortified against our story\
+What we have two nights seen.\
+HORATIO\
+Well, sit we down,\
+And let us hear Bernardo speak of this.\
+BERNARDO\
+Last night of all,\
+When yond same star that's westward from the pole\
+Had made his course to illume that part of heaven\
+Where now it burns, Marcellus and myself,\
+The bell then beating one,--\
+Enter Ghost\
+\
+MARCELLUS\
+Peace, break thee off; look, where it comes again!\
+BERNARDO\
+In the same figure, like the king that's dead.\
+MARCELLUS\
+Thou art a scholar; speak to it, Horatio.\
+BERNARDO\
+Looks it not like the king? mark it, Horatio.\
+HORATIO\
+Most like: it harrows me with fear and wonder.\
+BERNARDO\
+It would be spoke to.\
+MARCELLUS\
+Question it, Horatio.\
+HORATIO\
+What art thou that usurp'st this time of night,\
+Together with that fair and warlike form\
+In which the majesty of buried Denmark\
+Did sometimes march? by heaven I charge thee, speak!\
+MARCELLUS\
+It is offended.\
+BERNARDO\
+See, it stalks away!\
+HORATIO\
+Stay! speak, speak! I charge thee, speak!\
+Exit Ghost\
+\
+MARCELLUS\
+'Tis gone, and will not answer.\
+BERNARDO\
+How now, Horatio! you tremble and look pale:\
+Is not this something more than fantasy?\
+What think you on't?\
+HORATIO\
+Before my God, I might not this believe\
+Without the sensible and true avouch\
+Of mine own eyes.\
+MARCELLUS\
+Is it not like the king?\
+HORATIO\
+As thou art to thyself:\
+Such was the very armour he had on\
+When he the ambitious Norway combated;\
+So frown'd he once, when, in an angry parle,\
+He smote the sledded Polacks on the ice.\
+'Tis strange.\
+MARCELLUS\
+Thus twice before, and jump at this dead hour,\
+With martial stalk hath he gone by our watch.\
+HORATIO\
+In what particular thought to work I know not;\
+But in the gross and scope of my opinion,\
+This bodes some strange eruption to our state.\
+MARCELLUS\
+Good now, sit down, and tell me, he that knows,\
+Why this same strict and most observant watch\
+So nightly toils the subject of the land,\
+And why such daily cast of brazen cannon,\
+And foreign mart for implements of war;\
+Why such impress of shipwrights, whose sore task\
+Does not divide the Sunday from the week;\
+What might be toward, that this sweaty haste\
+Doth make the night joint-labourer with the day:\
+Who is't that can inform me?\
+HORATIO\
+That can I;\
+At least, the whisper goes so. Our last king,\
+Whose image even but now appear'd to us,\
+Was, as you know, by Fortinbras of Norway,\
+Thereto prick'd on by a most emulate pride,\
+Dared to the combat; in which our valiant Hamlet--\
+For so this side of our known world esteem'd him--\
+Did slay this Fortinbras; who by a seal'd compact,\
+Well ratified by law and heraldry,\
+Did forfeit, with his life, all those his lands\
+Which he stood seized of, to the conqueror:\
+Against the which, a moiety competent\
+Was gaged by our king; which had return'd\
+To the inheritance of Fortinbras,\
+Had he been vanquisher; as, by the same covenant,\
+And carriage of the article design'd,\
+His fell to Hamlet. Now, sir, young Fortinbras,\
+Of unimproved mettle hot and full,\
+Hath in the skirts of Norway here and there\
+Shark'd up a list of lawless resolutes,\
+For food and diet, to some enterprise\
+That hath a stomach in't; which is no other--\
+As it doth well appear unto our state--\
+But to recover of us, by strong hand\
+And terms compulsatory, those foresaid lands\
+So by his father lost: and this, I take it,\
+Is the main motive of our preparations,\
+The source of this our watch and the chief head\
+Of this post-haste and romage in the land.\
+BERNARDO\
+I think it be no other but e'en so:\
+Well may it sort that this portentous figure\
+Comes armed through our watch; so like the king\
+That was and is the question of these wars.\
+HORATIO\
+A mote it is to trouble the mind's eye.\
+In the most high and palmy state of Rome,\
+A little ere the mightiest Julius fell,\
+The graves stood tenantless and the sheeted dead\
+Did squeak and gibber in the Roman streets:\
+As stars with trains of fire and dews of blood,\
+Disasters in the sun; and the moist star\
+Upon whose influence Neptune's empire stands\
+Was sick almost to doomsday with eclipse:\
+And even the like precurse of fierce events,\
+As harbingers preceding still the fates\
+And prologue to the omen coming on,\
+Have heaven and earth together demonstrated\
+Unto our climatures and countrymen.--\
+But soft, behold! lo, where it comes again!\
+Re-enter Ghost\
+\
+I'll cross it, though it blast me. Stay, illusion!\
+If thou hast any sound, or use of voice,\
+Speak to me:\
+If there be any good thing to be done,\
+That may to thee do ease and grace to me,\
+Speak to me:\
+Cock crows\
+\
+If thou art privy to thy country's fate,\
+Which, happily, foreknowing may avoid, O, speak!\
+Or if thou hast uphoarded in thy life\
+Extorted treasure in the womb of earth,\
+For which, they say, you spirits oft walk in death,\
+Speak of it: stay, and speak! Stop it, Marcellus.\
+MARCELLUS\
+Shall I strike at it with my partisan?\
+HORATIO\
+Do, if it will not stand.\
+BERNARDO\
+'Tis here!\
+HORATIO\
+'Tis here!\
+MARCELLUS\
+'Tis gone!\
+Exit Ghost\
+\
+We do it wrong, being so majestical,\
+To offer it the show of violence;\
+For it is, as the air, invulnerable,\
+And our vain blows malicious mockery.\
+BERNARDO\
+It was about to speak, when the cock crew.\
+HORATIO\
+And then it started like a guilty thing\
+Upon a fearful summons. I have heard,\
+The cock, that is the trumpet to the morn,\
+Doth with his lofty and shrill-sounding throat\
+Awake the god of day; and, at his warning,\
+Whether in sea or fire, in earth or air,\
+The extravagant and erring spirit hies\
+To his confine: and of the truth herein\
+This present object made probation.\
+MARCELLUS\
+It faded on the crowing of the cock.\
+Some say that ever 'gainst that season comes\
+Wherein our Saviour's birth is celebrated,\
+The bird of dawning singeth all night long:\
+And then, they say, no spirit dares stir abroad;\
+The nights are wholesome; then no planets strike,\
+No fairy takes, nor witch hath power to charm,\
+So hallow'd and so gracious is the time.\
+HORATIO\
+So have I heard and do in part believe it.\
+But, look, the morn, in russet mantle clad,\
+Walks o'er the dew of yon high eastward hill:\
+Break we our watch up; and by my advice,\
+Let us impart what we have seen to-night\
+Unto young Hamlet; for, upon my life,\
+This spirit, dumb to us, will speak to him.\
+Do you consent we shall acquaint him with it,\
+As needful in our loves, fitting our duty?\
+MARCELLUS\
+Let's do't, I pray; and I this morning know\
+Where we shall find him most conveniently.\
+Exeunt\
+\
+SCENE II. A room of state in the castle.\
+\
+Enter KING CLAUDIUS, QUEEN GERTRUDE, HAMLET, POLONIUS, LAERTES, VOLTIMAND, CORNELIUS, Lords, and Attendants\
+KING CLAUDIUS\
+Though yet of Hamlet our dear brother's death\
+The memory be green, and that it us befitted\
+To bear our hearts in grief and our whole kingdom\
+To be contracted in one brow of woe,\
+Yet so far hath discretion fought with nature\
+That we with wisest sorrow think on him,\
+Together with remembrance of ourselves.\
+Therefore our sometime sister, now our queen,\
+The imperial jointress to this warlike state,\
+Have we, as 'twere with a defeated joy,--\
+With an auspicious and a dropping eye,\
+With mirth in funeral and with dirge in marriage,\
+In equal scale weighing delight and dole,--\
+Taken to wife: nor have we herein barr'd\
+Your better wisdoms, which have freely gone\
+With this affair along. For all, our thanks.\
+Now follows, that you know, young Fortinbras,\
+Holding a weak supposal of our worth,\
+Or thinking by our late dear brother's death\
+Our state to be disjoint and out of frame,\
+Colleagued with the dream of his advantage,\
+He hath not fail'd to pester us with message,\
+Importing the surrender of those lands\
+Lost by his father, with all bonds of law,\
+To our most valiant brother. So much for him.\
+Now for ourself and for this time of meeting:\
+Thus much the business is: we have here writ\
+To Norway, uncle of young Fortinbras,--\
+Who, impotent and bed-rid, scarcely hears\
+Of this his nephew's purpose,--to suppress\
+His further gait herein; in that the levies,\
+The lists and full proportions, are all made\
+Out of his subject: and we here dispatch\
+You, good Cornelius, and you, Voltimand,\
+For bearers of this greeting to old Norway;\
+Giving to you no further personal power\
+To business with the king, more than the scope\
+Of these delated articles allow.\
+Farewell, and let your haste commend your duty.\
+CORNELIUS VOLTIMAND\
+In that and all things will we show our duty.\
+KING CLAUDIUS\
+We doubt it nothing: heartily farewell.\
+Exeunt VOLTIMAND and CORNELIUS\
+\
+And now, Laertes, what's the news with you?\
+You told us of some suit; what is't, Laertes?\
+You cannot speak of reason to the Dane,\
+And loose your voice: what wouldst thou beg, Laertes,\
+That shall not be my offer, not thy asking?\
+The head is not more native to the heart,\
+The hand more instrumental to the mouth,\
+Than is the throne of Denmark to thy father.\
+What wouldst thou have, Laertes?\
+LAERTES\
+My dread lord,\
+Your leave and favour to return to France;\
+From whence though willingly I came to Denmark,\
+To show my duty in your coronation,\
+Yet now, I must confess, that duty done,\
+My thoughts and wishes bend again toward France\
+And bow them to your gracious leave and pardon.\
+KING CLAUDIUS\
+Have you your father's leave? What says Polonius?\
+LORD POLONIUS\
+He hath, my lord, wrung from me my slow leave\
+By laboursome petition, and at last\
+Upon his will I seal'd my hard consent:\
+I do beseech you, give him leave to go.\
+KING CLAUDIUS\
+Take thy fair hour, Laertes; time be thine,\
+And thy best graces spend it at thy will!\
+But now, my cousin Hamlet, and my son,--\
+HAMLET\
+[Aside] A little more than kin, and less than kind.\
+KING CLAUDIUS\
+How is it that the clouds still hang on you?\
+HAMLET\
+Not so, my lord; I am too much i' the sun.\
+QUEEN GERTRUDE\
+Good Hamlet, cast thy nighted colour off,\
+And let thine eye look like a friend on Denmark.\
+Do not for ever with thy vailed lids\
+Seek for thy noble father in the dust:\
+Thou know'st 'tis common; all that lives must die,\
+Passing through nature to eternity.\
+HAMLET\
+Ay, madam, it is common.\
+QUEEN GERTRUDE\
+If it be,\
+Why seems it so particular with thee?\
+HAMLET\
+Seems, madam! nay it is; I know not 'seems.'\
+'Tis not alone my inky cloak, good mother,\
+Nor customary suits of solemn black,\
+Nor windy suspiration of forced breath,\
+No, nor the fruitful river in the eye,\
+Nor the dejected 'havior of the visage,\
+Together with all forms, moods, shapes of grief,\
+That can denote me truly: these indeed seem,\
+For they are actions that a man might play:\
+But I have that within which passeth show;\
+These but the trappings and the suits of woe.\
+KING CLAUDIUS\
+'Tis sweet and commendable in your nature, Hamlet,\
+To give these mourning duties to your father:\
+But, you must know, your father lost a father;\
+That father lost, lost his, and the survivor bound\
+In filial obligation for some term\
+To do obsequious sorrow: but to persever\
+In obstinate condolement is a course\
+Of impious stubbornness; 'tis unmanly grief;\
+It shows a will most incorrect to heaven,\
+A heart unfortified, a mind impatient,\
+An understanding simple and unschool'd:\
+For what we know must be and is as common\
+As any the most vulgar thing to sense,\
+Why should we in our peevish opposition\
+Take it to heart? Fie! 'tis a fault to heaven,\
+A fault against the dead, a fault to nature,\
+To reason most absurd: whose common theme\
+Is death of fathers, and who still hath cried,\
+From the first corse till he that died to-day,\
+'This must be so.' We pray you, throw to earth\
+This unprevailing woe, and think of us\
+As of a father: for let the world take note,\
+You are the most immediate to our throne;\
+And with no less nobility of love\
+Than that which dearest father bears his son,\
+Do I impart toward you. For your intent\
+In going back to school in Wittenberg,\
+It is most retrograde to our desire:\
+And we beseech you, bend you to remain\
+Here, in the cheer and comfort of our eye,\
+Our chiefest courtier, cousin, and our son.\
+QUEEN GERTRUDE\
+Let not thy mother lose her prayers, Hamlet:\
+I pray thee, stay with us; go not to Wittenberg.\
+HAMLET\
+I shall in all my best obey you, madam.\
+KING CLAUDIUS\
+Why, 'tis a loving and a fair reply:\
+Be as ourself in Denmark. Madam, come;\
+This gentle and unforced accord of Hamlet\
+Sits smiling to my heart: in grace whereof,\
+No jocund health that Denmark drinks to-day,\
+But the great cannon to the clouds shall tell,\
+And the king's rouse the heavens all bruit again,\
+Re-speaking earthly thunder. Come away.\
+Exeunt all but HAMLET\
+\
+HAMLET\
+O, that this too too solid flesh would melt\
+Thaw and resolve itself into a dew!\
+Or that the Everlasting had not fix'd\
+His canon 'gainst self-slaughter! O God! God!\
+How weary, stale, flat and unprofitable,\
+Seem to me all the uses of this world!\
+Fie on't! ah fie! 'tis an unweeded garden,\
+That grows to seed; things rank and gross in nature\
+Possess it merely. That it should come to this!\
+But two months dead: nay, not so much, not two:\
+So excellent a king; that was, to this,\
+Hyperion to a satyr; so loving to my mother\
+That he might not beteem the winds of heaven\
+Visit her face too roughly. Heaven and earth!\
+Must I remember? why, she would hang on him,\
+As if increase of appetite had grown\
+By what it fed on: and yet, within a month--\
+Let me not think on't--Frailty, thy name is woman!--\
+A little month, or ere those shoes were old\
+With which she follow'd my poor father's body,\
+Like Niobe, all tears:--why she, even she--\
+O, God! a beast, that wants discourse of reason,\
+Would have mourn'd longer--married with my uncle,\
+My father's brother, but no more like my father\
+Than I to Hercules: within a month:\
+Ere yet the salt of most unrighteous tears\
+Had left the flushing in her galled eyes,\
+She married. O, most wicked speed, to post\
+With such dexterity to incestuous sheets!\
+It is not nor it cannot come to good:\
+But break, my heart; for I must hold my tongue.\
+Enter HORATIO, MARCELLUS, and BERNARDO";
+
+function onCompletedRun() {
+    finished = true;
+}
+function startRun() {
+    if (finished)
+        return;
+    var text = document.createTextNode(textToRender);
+    var content = document.getElementById("content");
+    content.insertBefore(text, content.firstChild);
+    requestAnimationFrame(finishRun);
+    now = PerfTestRunner.now();
+}
+var rafcount = 0;
+function finishRun() {
+    // Letting the text actually sit on screen for a couple frames is the only way I can get the test
+    // to be robust. Given that this test takes multiple seconds to run, adding a small constant to
+    // each iteration shouldn't be a dealbreaker.
+    if (rafcount < 6) {
+        ++rafcount;
+        requestAnimationFrame(finishRun);
+        return;
+    } else
+        rafcount = 0;
+    dummy = document.getElementById("end").getBoundingClientRect().left;
+    PerfTestRunner.measureValueAsync(PerfTestRunner.now() - now);
+    var content = document.getElementById("content");
+    content.removeChild(content.firstChild);
+    requestAnimationFrame(startRun);
+}
+startRun();
+</script>
+</body>
+</html>
diff --git a/PerformanceTests/SVG/resources/graffiti.svg b/PerformanceTests/SVG/resources/graffiti.svg
new file mode 100644 (file)
index 0000000..e41c0b3
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" standalone="yes"?>\r
+<svg  version="1.1" viewBox="0 0 160 160" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink">\r
+  <defs>\r
+    <font id="SVGraffiti" horiz-adv-x="1000" horiz-origin-x="0">\r
+      <font-face font-family="SVGraffiti" font-weight="bold" font-style="normal" units-per-em="1000" cap-height="600" x-height="400" ascent="1000" descent="0" alphabetic="0" mathematical="500" ideographic="400" hanging="500">\r
+        <font-face-src>\r
+          <font-face-name name="SVGraffiti"/>\r
+        </font-face-src>\r
+      </font-face>\r
+    <missing-glyph   horiz-adv-x="1000" d="M0 0h100v100h-100z"/>\r
+    \r
+  <glyph unicode=" " horiz-adv-x="350" d="M0 0"/>  \r
+    <glyph unicode="A" horiz-adv-x="400" d="M 225.51611,974.91385 C 204.97311,967.28971 185.36411,957.57168 166.07811,947.42582 C 152.07111,911.20717 150.75011,872.0223 141.06911,834.71583 C 127.94011,779.33001 106.37211,725.96797 88.516105,671.74681 C 80.045105,647.44538 71.548105,623.15054 62.922105,598.89688 C 18.313105,618.80867 -26.482895,642.35325 -57.358895,679.31094 C -78.303895,669.39865 -99.180895,659.36263 -120.10889,649.41941 C -82.919895,605.16219 -28.086895,578.48722 25.657105,555.47892 C 32.393105,552.66089 38.990105,549.64223 45.797105,547.02587 C 25.847105,482.7003 13.250105,416.42131 4.9841053,349.91822 C 26.999105,360.29555 48.903105,370.87644 70.891105,381.30353 C 74.310105,431.10778 84.325105,480.30711 96.641105,528.76838 C 122.33111,520.51031 148.64911,514.0716 175.29711,509.25143 C 206.09411,427.60328 245.79611,348.9035 294.04111,275.09141 C 302.84211,262.18392 311.56311,248.9191 322.17211,237.3554 C 330.06711,232.9385 336.99911,241.4047 343.46911,244.3906 C 357.20711,252.4639 370.91911,260.57559 384.67211,268.62452 C 351.93711,299.05808 330.42511,338.55237 307.49111,375.90103 C 284.58811,416.33779 264.98011,458.46261 247.42211,501.22124 C 276.86411,500.11749 306.98511,499.4873 335.73411,506.05738 C 358.48511,522.34084 381.89411,537.85446 403.35911,555.6421 C 346.59411,543.93399 287.46911,540.3311 229.89111,548.60885 C 210.09411,617.30818 200.49211,688.10064 195.48411,758.99159 C 194.65011,805.51174 203.23511,851.49166 213.51011,896.81518 C 216.12311,914.67034 220.15211,932.26671 226.62011,949.14569 C 227.13311,956.88328 230.39511,964.48017 230.48411,972.0715 C 229.77611,973.9677 227.65911,975.21299 225.51611,974.91385 z M 142.10911,663.92492 C 146.68311,630.20442 152.32011,595.95795 159.79711,563.08522 C 143.47711,567.59028 127.42511,572.73869 111.60911,578.61757 C 121.13311,607.68659 131.59311,636.4772 141.92211,665.30244 L 142.04911,664.37218 L 142.10911,663.92492 z "/>\r
+    <glyph unicode="B" horiz-adv-x="450" d="M 119.35911,946.28265 C 95.430109,946.71311 71.963109,937.27908 55.172109,921.66613 C 44.917109,914.26245 32.055109,908.31318 26.266109,896.93238 C 25.569109,888.82906 37.046109,885.91257 43.172109,889.81097 C 70.548109,899.86572 101.15011,899.15956 129.57811,893.47479 C 107.91011,884.74883 86.277109,875.94408 64.609109,867.21719 C 61.787109,805.74805 80.442109,745.8093 86.573109,685.14857 C 87.320109,679.35502 88.057109,673.55957 88.797109,667.76412 C 67.451109,659.50046 43.335109,652.26932 28.984109,634.32693 C 27.499109,631.20969 28.520109,627.15945 25.109109,625.03728 C 20.668109,619.34314 25.466109,609.44211 33.547109,610.97069 C 37.679109,611.47432 41.672109,615.41766 45.739109,612.4552 C 61.803109,608.86355 78.578109,609.96825 94.984109,610.062 C 99.313109,561.83333 96.297109,513.30632 90.203109,465.35151 C 89.587109,443.99646 93.131109,422.80846 94.297109,401.52474 C 49.795109,404.13834 3.6201092,401.44594 -38.921891,415.53229 C -49.401891,419.38559 -59.905891,424.80218 -66.421891,433.67258 C -63.984891,438.15229 -63.583891,445.3647 -69.827891,447.21216 C -77.685891,449.80041 -83.662891,442.57108 -90.743891,440.82218 C -104.42889,434.22209 -118.96089,428.44538 -132.07789,421.36427 C -137.21889,411.71836 -132.78789,400.30095 -124.92189,393.20205 C -105.09289,371.40628 -72.699891,365.7356 -43.827891,362.16733 C 3.5291092,357.04247 51.792109,361.71166 98.703109,352.99498 C 123.83911,351.65682 149.05211,352.86463 174.19811,353.43391 C 239.85511,356.31663 307.08711,366.44271 364.72011,397.48954 C 397.31311,415.63446 427.42111,440.86712 442.10911,474.20214 C 459.92411,524.34676 444.22811,585.31794 398.82711,617.97215 C 361.35211,646.03778 312.24811,653.94509 265.65211,658.76431 C 231.65411,662.49102 197.48811,664.95451 163.26611,665.80039 C 207.75811,687.4817 254.08211,708.8358 289.94811,742.47552 C 318.38411,771.24267 337.60911,811.3615 330.89111,851.24505 C 324.43611,879.95677 298.02011,900.33833 270.14111,910.73542 C 237.37211,923.65048 202.59111,931.22765 168.56811,940.46755 C 152.46611,943.96639 135.98111,946.6474 119.35911,946.28265 z M 136.76611,891.97998 C 157.24711,886.82315 177.51911,880.84957 197.90611,875.34113 C 220.73511,868.43908 244.91911,858.91133 259.17211,840.25616 C 271.53511,821.979 267.12411,798.3368 259.32611,779.09465 C 246.25211,746.85023 217.76311,721.71236 184.59911,707.56509 C 173.25911,702.20195 161.61611,697.15296 149.98411,692.20528 C 144.59811,739.03864 136.06211,785.64782 130.47911,832.42859 C 128.88611,852.44822 130.00811,872.93005 136.07811,892.12631 L 136.76611,891.97998 z M 198.82811,614.8972 C 232.22111,614.26416 265.55611,608.90102 297.43311,599.94812 C 329.57911,589.86897 361.03611,570.42231 374.51711,540.24955 C 388.16311,510.14509 387.96311,473.01212 369.49711,444.64075 C 353.83311,423.19574 325.69511,414.5711 300.07811,408.35271 C 252.33111,398.42445 202.99511,396.09974 154.04711,396.60706 C 140.41411,396.60894 126.88611,397.57865 113.48411,399.88368 C 129.21311,407.83877 144.86411,415.95051 160.64111,423.82594 C 155.93311,456.89743 153.48611,490.69758 159.32811,523.72781 C 161.60611,553.45143 160.94911,583.31959 158.64111,613.02163 C 172.02111,613.88909 185.41011,614.82399 198.82811,614.8972 z "/>\r
+    <glyph unicode="C" horiz-adv-x="400" d="M 194.82811,943.36576 C 150.00511,944.88217 108.48011,923.72972 75.305108,897.16639 C 52.422108,877.38031 36.717108,851.28021 23.516108,825.03008 C 4.1581084,783.58899 5.7401084,736.63 11.331108,692.5772 C 17.194108,653.3773 22.619108,613.64765 38.021108,576.57937 C 52.102108,541.787 68.468108,507.13254 93.727108,478.19663 C 130.34211,435.59457 177.05611,400.30338 229.51601,376.2476 C 260.491,362.82342 295.956,353.35376 330.108,360.65897 C 375.365,371.78095 418.557,393.20817 450.766,425.0409 C 454.774,432.29826 443.743,440.16527 437.016,435.41549 C 415.757,427.08429 392.895,421.43329 373.932,409.08751 C 371.286,407.01216 368.008,403.67934 364.609,406.37354 C 357.62,407.82711 350.711,404.6987 343.673,406.09315 C 294.342,407.90496 250.955,434.15792 213.29711,461.84848 C 171.12711,493.08942 135.66111,533.71376 116.00911,581.16881 C 100.08111,614.09774 88.872108,649.21458 84.516108,685.21467 C 76.001108,733.16021 69.911108,784.24446 87.952108,830.88371 C 97.235108,851.97323 110.65411,871.44136 125.70311,889.29757 C 132.23211,892.73728 140.36411,892.20839 147.48411,893.92731 C 167.00311,895.97258 186.76711,893.82136 206.14511,891.71886 C 211.94811,889.85172 218.66501,889.99153 223.25701,894.2846 C 243.283,905.66352 263.288,917.07439 283.297,928.47865 C 256.965,943.70991 224.83301,943.58143 194.82811,943.36576 z "/>\r
+    <glyph unicode="D" horiz-adv-x="450" d="M 67.702997,980.46599 C 43.527997,967.90923 19.356997,955.34397 -4.7970025,942.75059 C -6.8480025,940.7016 -1.8370025,936.60537 -6.0780025,936.83051 C -15.916003,934.43161 -24.869003,929.32548 -34.797003,927.36459 C -43.510003,921.62353 -54.045003,919.56228 -63.859003,915.90688 C -78.124003,911.23107 -93.850003,901.64052 -95.484003,886.30794 C -95.550003,881.38836 -99.260003,875.55914 -94.609003,871.36265 C -88.714003,864.97077 -79.625003,869.83218 -72.953003,872.03598 C -61.482003,873.32165 -50.865003,879.54373 -39.700003,882.75754 C -26.647003,887.67798 -12.446003,889.29378 1.6089975,888.30072 C 7.8029975,889.4879 5.8409975,881.79068 7.6699975,878.22903 C 18.103997,835.01549 28.983997,791.89107 35.409997,747.93201 C 52.013997,656.72052 66.977997,565.24635 80.358997,473.57058 C 75.963997,478.2304 72.046997,483.27561 67.983997,488.19425 C 44.914997,474.33956 21.907997,460.39491 -1.1090025,446.46332 C 19.504997,414.05486 56.105997,395.3557 90.171997,377.2735 C 93.508997,375.94092 99.280997,374.95257 98.203997,370.33494 C 101.631,344.54522 101.916,318.37767 98.733997,292.55134 C 124.151,305.58643 149.678,318.38987 175.266,331.02909 C 175.364,338.96082 175.257,347.3989 175.453,355.03048 C 230.052,347.90064 287.295,359.73816 333.061,388.6037 C 378.642,415.33588 417.48,454.42502 435.261,502.58624 C 447.648,533.66873 450.187,567.34232 448.645,600.31627 C 447.459,645.35939 440.984,690.89669 423.197,732.8048 C 394.989,782.96438 344.535,817.38915 293.321,845.69675 C 237.585,876.81112 181.078,907.65911 120.067,928.65773 C 104.947,933.48351 89.484997,937.3997 73.733997,939.90727 C 71.800997,953.79377 70.759997,967.90356 70.608997,981.96073 C 69.640997,981.46281 68.671997,980.96489 67.702997,980.46599 z M 90.327997,869.42798 C 150.083,846.77705 206.033,815.92621 260.218,783.42109 C 297.761,759.50512 333.934,730.7305 353.891,691.80823 C 367.224,661.18519 371.568,627.84836 374.953,595.10032 C 378.279,551.06445 376.872,504.45433 353.54,465.06778 C 344.224,448.72899 332.32,433.64777 318.391,420.4983 C 275.086,407.05255 227.271,402.89069 183.266,415.51685 C 178.154,417.38863 171.285,417.9616 167.597,421.27664 C 153.304,498.49665 139.294,575.76348 126.732,653.24979 C 114.839,722.29051 104.04,791.59847 90.421997,860.31379 C 90.317997,863.02114 87.056997,869.1945 88.980997,869.91286 L 89.913997,869.57715 L 90.327997,869.42798 z "/>\r
+    <glyph unicode="E" horiz-adv-x="450" d="M 513.234,995.8811 C 436.782,991.78587 363.147,965.01621 299.787,925.44116 C 247.255,895.06019 181.777,884.43797 121.297,897.06327 C 122.264,911.18889 124.375,925.1411 127.328,939.02858 C 110.751,929.95 94.120997,920.96609 77.483997,912.09664 C 54.065997,923.95761 31.670997,940.58717 20.421997,963.61608 C 17.810997,970.50593 17.627997,977.92465 17.765997,985.21391 C -3.6860034,973.42706 -25.279003,962.09781 -46.734003,950.37004 C -42.595003,922.28278 -20.179003,900.78432 2.2969966,883.70001 C 18.722997,871.04094 37.925997,862.1378 57.921997,855.68405 C 57.944997,759.90365 44.005997,663.34303 60.890997,568.16844 C 69.408997,513.0959 81.253997,457.31059 109.016,407.72116 C 122.155,386.35684 140.202,365.79612 164.922,356.17367 C 178.514,353.89673 192.032,358.43557 205.422,360.12913 C 235.226,366.18434 266.393,373.93509 296.707,366.94206 C 307.902,365.23062 319.128,363.31948 330.359,362.1219 C 352.222,379.30752 374.315,396.23252 396.266,413.31871 C 355.548,406.55734 315.004,424.34695 274.453,415.75126 C 252.169,412.75605 230.467,406.75713 208.141,404.00002 C 178.77,417.56685 162.961,446.90602 152.455,474.60027 C 132.407,526.40382 120.138,580.92684 116.078,635.98167 C 160.806,624.35048 207.727,620.44175 254.078,622.50112 C 272.553,623.68745 291.282,625.90621 308.734,631.58531 C 331.087,649.63468 353.849,667.49269 374.016,687.76358 C 323.515,672.31474 269.552,663.61783 216.687,671.58323 C 185.239,675.38686 152.61,681.41861 125.797,698.22631 C 121.512,700.18248 118.891,705.71069 114.328,706.02106 C 112.616,708.79878 114.31,715.59479 113.926,719.88039 C 115.097,761.46781 118,802.98675 119.859,844.54798 C 182.648,840.0485 246.016,858.01159 297.124,891.82953 C 352.297,923.28058 415.271,945.51053 480.484,947.31388 C 488.802,947.61488 497.367,943.75492 505.391,946.50168 C 513.399,950.64575 519.325,957.42586 527.135,961.93086 C 538.929,970.51901 550.777,979.0396 562.578,987.61652 C 546.574,992.23029 530.123,996.184 513.234,995.8811 z "/>\r
+    <glyph unicode="F" horiz-adv-x="300" d="M 534.641,1003.0098 C 515.353,1001.0902 494.286,1001.0094 478.109,989.79373 C 437.705,968.65916 404.544,937.00275 366.333,912.75759 C 321.009,887.89254 269.961,868.20021 216.582,870.33743 C 194.526,872.01879 173.251,878.06369 152.234,884.35237 C 159.915,902.49832 165.592,921.52195 172.524,940.02426 C 179.98,961.18509 187.448,982.34308 194.891,1003.5087 C 171.988,987.14548 144.456,976.84126 122.922,958.99355 C 115.018,941.27706 109.482,922.77857 103.359,904.45638 C 68.855996,921.9955 33.864996,941.37177 9.5049957,970.85909 C 4.2709957,978.29939 0.7409957,986.70565 -1.3910043,995.33226 C -22.188004,983.35601 -42.934004,971.40963 -63.672004,959.34522 C -51.772004,924.95231 -19.685004,901.72935 11.601996,882.86606 C 34.623996,868.91764 58.630996,856.42087 83.671996,846.04999 C 75.621996,816.98183 72.798996,786.95532 67.452996,757.40141 C 58.873996,757.70242 53.076996,750.61847 45.245996,748.45221 C 33.226996,742.74218 21.042996,737.33864 9.0469957,731.58358 C 1.9649957,711.49178 13.812996,691.01931 27.265996,675.99144 C 35.854996,666.81719 45.908996,658.78048 56.952996,652.28265 C 55.981996,605.99983 65.098996,559.943 81.424996,516.37973 C 93.101996,482.69206 104.559,448.50557 122.891,417.42961 C 138.243,392.75497 157.519,370.40222 173.016,345.7782 C 192.417,359.39744 211.87,372.71292 231.359,386.21959 C 203.167,424.48546 171.414,462.15583 157.18,507.34521 C 141.522,547.706 125.482,588.75423 121.203,631.62259 C 153.426,632.566 182.082,648.7032 207.922,665.3534 C 212.116,668.65804 215.34,674.20972 213.391,679.27365 C 221.066,685.47142 227.197,693.88132 227.922,703.56762 C 213.374,706.36408 202.584,695.07608 189.859,691.08306 C 177.541,687.90028 165.936,680.8501 153.141,680.44588 C 148.26,685.57642 139.927,683.53588 133.906,686.76456 C 129.016,688.23505 124.233,690.0234 119.609,692.10896 C 121.916,737.80472 131.614,783.05511 137.953,828.11507 C 172.564,817.85401 210.555,817.90368 245.423,826.93631 C 308.584,841.87602 363.465,876.52858 416.31,910.96452 C 432.955,922.1812 448.157,935.70111 464.916,946.49956 C 474.486,948.66952 483.2,953.31814 489.547,960.45832 C 506.456,974.92534 523.929,988.93848 540.672,1003.5959 C 538.662,1003.4008 536.651,1003.2058 534.641,1003.0098 z "/>\r
+    <glyph unicode="G" horiz-adv-x="500" d="M 458.703,944.47896 C 405.09,942.54712 351.004,939.86499 299.108,926.26169 C 220.101,907.07773 144.287,871.39264 86.198995,817.18747 C 57.744995,790.07084 36.378995,756.89152 21.358995,721.64063 C 4.2259951,684.87336 -8.6710049,643.81861 0.34699509,603.55998 C 10.958995,556.40319 44.716995,517.19486 82.525995,486.10962 C 128.206,449.57204 177.959,417.6062 228.609,387.38368 C 267.825,364.90994 310.819,345.11356 357.391,342.10709 C 392.154,339.75608 425.872,352.83045 453.797,371.148 C 499.128,400.99545 524.573,456.37465 512.797,507.74118 C 502.557,555.64642 493.658,603.86761 485.441,652.12162 C 484.893,660.35813 483.21,669.50986 487.109,677.06736 C 501.166,685.692 514.217,695.59492 527.859,704.81978 C 514.01,707.18393 499.437,703.90078 485.891,706.63623 C 478.408,711.9759 470.118,704.07899 461.984,705.78665 C 426.165,706.02579 390.458,702.60575 354.678,701.64635 C 315.925,699.2541 277.012,701.52915 238.266,700.15996 C 226.137,695.53305 217.46,685.7305 206.252,679.61523 C 193.653,671.02899 181.047,662.45118 168.453,653.85746 C 229.756,655.95155 291.173,653.46083 352.422,657.19501 C 374.16,657.73043 395.809,660.43504 417.578,660.04114 C 414.413,630.28744 425.659,601.45843 429.328,572.27117 C 435.345,537.77431 443.573,503.5953 448.634,468.97083 C 450.348,445.06604 442.893,420.95689 428.706,401.18483 C 422.947,395.04059 416.414,387.39399 406.641,388.40959 C 364.7,387.92571 325.005,404.01411 289.435,423.42227 C 229.922,458.3468 170.172,494.58328 120.023,540.91397 C 89.911995,570.26904 63.948995,607.46955 63.390995,649.34493 C 63.258995,690.48218 82.734995,728.57635 101.672,764.69099 C 124.898,804.71322 159.642,838.83879 202.16,860.82111 C 245.791,880.81822 294.312,889.12313 342.186,894.25934 C 373.565,897.01069 405.099,899.75369 436.64,899.13475 C 455.866,898.14356 475.964,895.25336 492.391,885.51645 C 493.54,880.50218 491.71,875.08181 490.609,870.13129 C 485.454,853.78967 471.761,841.5977 461.797,827.81434 C 459.066,822.00669 465.445,814.60111 472.109,817.23533 C 481.409,820.15458 490.2,824.88847 499.669,827.76742 C 510.344,832.12992 522.243,835.29493 531.345,841.94941 C 547.69,861.33781 562.81,884.98756 558.953,910.74911 C 557.937,920.56756 549.448,928.07538 539.859,931.14562 C 515.004,943.04504 486.25,944.7696 458.703,944.47896 z "/>\r
+    <glyph unicode="H" horiz-adv-x="500" d="M 378.04699,968.19492 C 355.39099,966.41315 336.18899,952.70853 320.14099,938.50882 C 295.15099,913.37086 288.55599,877.3632 288.26599,843.99914 C 287.83199,804.51421 289.68899,765.0133 287.49199,725.54899 C 286.87299,705.80417 286.09999,686.06406 285.45299,666.32019 C 248.28199,668.89349 211.31799,674.19846 175.01599,681.96974 C 175.95699,715.79619 170.94999,749.36563 165.35699,782.65468 C 161.85499,827.17355 160.85699,871.84814 156.77799,916.32483 C 156.31299,932.71896 156.86899,949.1197 157.60899,965.49883 C 133.28899,954.676 108.96799,943.85404 84.765994,932.79397 C 84.125994,882.54529 93.149994,832.71956 93.265994,782.48686 C 94.157994,755.33457 100.56799,728.76178 102.64099,701.7211 C 48.881994,720.39311 -6.0830061,737.75222 -54.086006,767.69624 C -58.232006,769.46207 -62.203006,776.12686 -66.401006,771.17256 C -87.402006,757.76248 -108.38201,744.32231 -129.35901,730.88025 C -60.363006,694.27986 14.676994,668.73872 89.991994,646.20028 C 94.528994,645.02151 98.980994,643.68799 103.60899,642.64147 C 102.93499,599.21878 105.72999,555.71738 103.14499,512.34539 C 98.343994,474.66659 92.437994,436.8669 84.546994,399.67007 C 80.511994,383.82829 70.443994,369.77855 65.171994,354.36443 C 64.717994,350.89937 68.228994,350.4173 70.865994,352.57326 C 94.421994,362.03356 117.93599,371.58382 141.48399,381.06191 C 155.04299,404.00354 159.15299,430.32868 162.79699,456.02466 C 168.83199,495.07445 177.25199,534.09424 175.68199,573.74423 C 175.50499,591.84508 174.71299,609.94506 175.14099,628.04779 C 211.02199,622.13145 247.41299,618.93267 283.85899,618.08395 C 281.02399,507.67157 278.51099,396.05781 300.63199,287.09985 C 301.89999,281.63918 303.17599,276.28729 304.45299,270.8145 C 326.98099,281.42917 349.48999,292.08035 372.01599,302.6988 C 350.46399,376.79504 347.76899,454.21096 346.19899,530.6357 C 346.02599,560.18025 346.59999,589.7248 347.51599,619.25619 C 386.31299,622.31989 425.25399,627.05566 462.60899,637.68906 C 479.90999,649.79759 498.30599,660.64762 514.51599,673.99868 C 517.11299,682.05602 506.23499,688.29408 498.98399,684.72401 C 450.24099,672.24693 399.90599,664.97824 349.29699,664.50374 C 353.39399,738.39557 352.55099,812.69435 361.19899,886.25706 C 364.33399,905.59579 368.17199,925.61249 378.76599,942.43614 C 382.93699,946.60745 384.93799,952.77414 383.29699,958.26112 C 386.06599,962.17067 383.88799,968.81674 378.04699,968.19492 z "/>\r
+    <glyph unicode="I" horiz-adv-x="200" d="M 157.39099,961.33798 C 138.13199,954.45662 119.84699,944.91286 100.92199,937.07303 C 104.79899,881.12833 94.179993,825.44811 79.890993,771.43895 C 67.549993,718.89641 59.385993,665.57656 52.317993,612.2623 C 46.189993,581.00348 39.600993,548.02299 49.265993,516.86266 C 54.896993,494.43015 55.597993,471.34975 58.499993,448.57122 C 64.517993,421.1779 64.302993,392.98844 62.156993,365.17879 C 62.037993,359.69655 62.193993,354.21251 62.483993,348.73775 C 84.227993,358.42404 106.01699,368.01933 127.79699,377.63241 C 128.84199,402.45244 130.78899,427.54726 126.32799,452.12728 C 123.28399,471.69011 121.67899,491.43494 119.54699,511.06067 C 115.84199,536.05788 106.73999,560.757 110.55699,586.25131 C 113.52199,615.4273 120.97399,644.21782 123.05099,673.46326 C 130.66199,731.70551 145.02699,788.89747 158.16399,846.12406 C 164.57799,881.36369 168.13199,917.27949 167.32799,953.07338 C 166.67699,957.64966 162.71499,961.93714 157.39099,961.33798 z "/>\r
+    <glyph unicode="J" horiz-adv-x="500" d="M 63.983993,979.03836 C 44.628993,963.76119 25.047993,948.35729 5.6089925,933.02847 C 55.403993,900.14165 110.71099,873.59146 170.51599,861.43601 C 242.01599,848.78553 316.83899,862.24442 381.48399,892.14815 C 365.53499,830.09384 351.43899,767.70561 340.18799,704.70514 C 324.52299,618.28658 312.37099,531.35776 298.48399,444.68321 C 223.26799,458.98421 147.33599,473.56663 70.275993,473.09582 C 7.6999925,465.25321 -53.391007,431.95573 -82.919007,378.45862 C -102.70301,340.88955 -99.079007,294.29542 -76.137007,258.75658 C -57.813007,227.54099 -35.814007,198.31808 -14.641007,168.77353 C 32.814993,105.25165 86.596993,45.633668 148.32799,-6.0629064 C 180.45999,-12.843955 213.01899,2.009391 235.19199,23.084908 C 277.49799,62.057783 302.72599,114.76815 313.57799,169.06611 C 330.13099,238.98082 335.53699,310.68955 345.35899,381.55986 C 396.10099,371.16182 446.91099,360.91004 498.20299,353.16316 C 518.93399,368.9374 539.49899,384.93771 560.17199,400.81326 C 490.61399,406.4305 422.08699,419.84815 353.89099,433.60625 C 370.77299,528.11594 382.35899,623.40585 400.89999,717.66703 C 412.08699,776.34255 424.27399,834.91486 442.40599,892.07589 C 449.32399,908.5226 457.95999,924.52472 462.85899,941.46832 C 467.78999,946.47613 464.63999,956.24015 457.10899,956.9717 C 453.88599,963.52853 443.90699,962.85995 439.10899,958.17296 C 422.89999,947.5452 406.18299,937.66388 387.33399,931.61615 C 325.85199,906.95836 255.01799,897.58622 190.04699,915.94407 C 151.10599,927.3052 113.32599,943.22022 81.023993,966.73856 C 75.483993,971.02985 70.384993,975.39143 65.390993,980.21062 L 64.642993,979.58705 L 63.983993,979.03836 z M 42.546993,424.02316 C 125.70599,423.42106 207.80599,409.40045 288.89099,393.13573 C 272.49099,296.23749 268.45799,196.71447 235.76599,102.89498 C 229.31999,80.667923 213.29199,61.916267 197.17199,44.84029 C 112.18499,109.66855 44.646993,192.77861 -9.5300075,281.9083 C -24.208007,309.31005 -34.766007,340.43568 -30.891007,371.39065 C -27.697007,390.05047 -14.060007,407.32046 4.7339925,414.67449 C 16.565993,420.10327 29.472993,423.2223 42.546993,424.02316 z "/>\r
+    <glyph unicode="K" horiz-adv-x="450" d="M 345.17199,1008.3619 C 323.91499,1001.2386 305.25399,988.78311 285.35899,979.05648 C 270.66799,969.01398 261.22599,953.92141 248.45299,942.01077 C 207.36399,898.17743 166.11999,854.49688 124.60899,811.01988 C 107.02699,873.93502 78.780992,934.78151 72.890992,1000.0983 C 49.377992,985.09303 25.788992,970.19086 2.3279915,955.11427 C 15.868992,883.44963 49.217992,816.7337 66.858992,746.07906 C 45.692992,718.63142 23.090992,691.59445 7.4219915,660.97613 C 0.55199151,647.43002 9.5029915,629.72299 24.702992,625.69243 C 46.327992,616.76858 72.209992,620.58535 92.921992,609.25147 C 95.814992,608.80129 98.487992,607.26712 97.437992,604.25026 C 107.76899,538.5799 111.84999,472.10586 112.70499,405.72659 C 113.92199,376.40332 110.26199,345.67253 92.827992,320.62273 C 120.60199,336.02 148.40299,351.37422 176.17199,366.77898 C 187.76399,413.54385 180.31099,461.9742 178.79699,509.40863 C 177.13299,531.4969 174.93799,553.55243 172.23399,575.55065 C 271.78299,527.79553 363.52999,465.11764 441.68499,390.56932 C 445.02499,385.91148 448.79199,381.26103 453.39099,377.50432 C 474.48299,393.61995 495.41799,409.85375 516.42199,426.00495 C 495.94599,451.66149 466.08299,468.75147 440.49199,489.7182 C 353.54099,554.67775 260.72599,613.7152 159.82799,657.92842 C 153.55699,693.83108 145.91999,729.48145 136.85899,764.8345 C 184.18599,820.87115 237.15399,872.77971 287.28099,926.62097 C 309.61399,950.07189 333.07299,972.79784 353.10899,997.92932 C 355.13899,1002.8076 350.98299,1008.9397 345.17199,1008.3619 z M 81.233992,689.2266 C 81.851992,685.97249 83.638992,681.77221 83.265992,678.96922 C 79.731992,679.37713 76.156992,682.42863 78.858992,685.76806 C 79.411992,686.63362 80.676992,689.97307 81.233992,689.2266 z "/>\r
+    <glyph unicode="L" horiz-adv-x="400" d="M 93.140997,969.21608 C 71.349997,958.58363 49.418997,948.18003 27.515997,937.7416 C 22.266997,900.4286 24.400997,862.66069 25.033997,825.16011 C 28.134997,780.37116 31.524997,735.52026 30.046997,690.60937 C 29.913997,621.41492 28.944997,552.17165 32.640997,483.03898 C 32.815997,460.89727 27.040997,439.30317 26.737997,417.19325 C 26.768997,402.9757 19.185997,389.81875 20.015997,375.54679 C 20.481997,363.41764 33.638997,355.99891 45.421997,355.47278 C 63.208997,354.21341 78.806997,364.27383 96.240997,365.64292 C 133.964,370.2005 172.282,367.24464 210.229,366.71205 C 247.271,365.57359 284.373,365.10373 321.328,362.50611 C 329.546,362.29232 337.847,364.12844 343.787,369.8817 C 363.799,383.60036 383.863,397.25062 403.891,410.94771 C 352.472,408.39228 301.121,413.78635 249.708,413.80226 C 206.09,415.16577 162.054,417.73812 118.694,411.89301 C 107.76,409.7295 97.275997,405.99719 86.327997,404.06071 C 90.550997,417.89468 91.827997,432.3336 91.983997,446.6712 C 94.546997,466.53796 98.613997,486.46659 96.660997,506.62869 C 95.292997,545.97853 92.344997,585.31068 93.664997,624.70083 C 93.996997,695.10412 95.514997,765.63683 89.246997,835.87514 C 87.639997,871.02094 87.130997,906.45288 90.520997,941.45525 C 91.841997,951.5569 94.250997,961.38575 97.171997,971.17886 C 95.827997,970.52434 94.483997,969.86982 93.140997,969.21608 z "/>\r
+    <glyph unicode="M" horiz-adv-x="400" d="M 382.672,968.40284 C 362.436,964.9875 344.913,952.91918 331.453,938.8339 C 297.903,897.84755 270.808,852.5475 245.67,806.7476 C 238.761,794.78824 231.54,782.85509 223.547,771.58771 C 192.403,808.91292 173.513,853.48249 155.234,897.39651 C 148.613,914.6037 148.228,933.3704 143.703,951.02493 C 140.48,960.19916 129.063,966.35004 119.172,962.30732 C 109.007,958.36301 102.031,949.72328 92.546997,944.69501 C 88.480997,942.33549 85.213997,938.64444 82.452997,935.25911 C 79.256997,935.27595 75.815997,932.81436 77.452997,929.60243 C 79.177997,902.64898 93.362997,877.28787 91.187997,849.92178 C 92.340997,766.5706 67.271997,685.76463 57.178997,603.4366 C 48.883997,544.93363 45.622997,485.41224 29.156997,428.28782 C 20.048997,400.07869 6.0879966,373.40562 -1.4530034,344.69664 C 21.474997,358.22488 47.217997,367.05214 69.952997,380.91809 C 88.998997,420.20984 100.448,462.65716 104.99,505.519 C 115.914,581.46649 122.183,658.08155 138.992,733.23 C 140.997,743.93651 142.873,754.66659 144.672,765.40499 C 158.912,743.59427 175.787,723.3599 194.422,704.74228 C 232.745,713.51516 261.039,742.12574 281.891,772.11565 C 295.927,791.92613 307.157,813.29518 318.828,834.41847 C 308.164,776.45101 298.187,718.37192 288.516,660.25718 C 275.488,588.67794 260.902,516.08399 267.922,443.19186 C 272.732,410.76553 288.322,380.21287 309.047,354.10341 C 315.383,347.30921 327.74,345.30243 334.747,352.6189 C 349.463,362.4505 364.268,372.16395 379.109,381.82584 C 378.494,389.44246 370.2,393.18318 363.172,394.57393 C 345.195,421.71024 329.028,451.88782 330.26,484.59823 C 326.022,571.5017 348.673,656.53982 362.109,741.93068 C 372.019,796.88224 382.738,851.70351 392.26,906.71331 C 394.187,921.3435 401.159,935.23092 400.797,950.11624 C 400.675,958.48583 395.23,967.51849 385.578,968.28558 C 384.642,968.46288 383.633,968.44873 382.672,968.40284 z "/>\r
+    <glyph unicode="N" horiz-adv-x="280" d="M 268.859,1003.5748 C 251.044,1000.2907 236.926,988.33968 221.234,980.39492 C 194.471,965.48153 170.672,941.69393 167.109,911.61488 C 162.62,881.70368 168.339,851.47265 168.131,821.41794 C 172.064,726.36623 173.326,631.14764 168.734,536.09497 C 137.407,617.30515 97.660996,695.61576 72.327996,778.77368 C 67.206996,796.47693 61.392996,814.37155 58.744996,832.54844 C 59.764996,878.42705 60.143996,924.91532 49.233996,969.87397 C 26.993996,964.83628 1.9819957,958.76986 -11.516004,939.98245 C -23.859004,921.57777 -19.626004,898.43912 -15.588004,878.24892 C -10.611004,845.66036 -0.76700433,813.40004 -2.2730043,780.18034 C -1.4060043,663.738 -0.56700433,547.15131 9.1029957,431.00629 C 7.6419957,394.47153 -1.3960043,357.1716 8.6409957,321.08145 C 27.696996,334.0546 46.786996,346.98555 65.765996,360.05811 C 75.245996,413.79901 70.124996,468.57441 64.632996,522.46628 C 61.903996,558.41679 60.233996,594.43193 59.202996,630.45832 C 82.085996,577.06998 104.28,523.25123 123.526,468.60534 C 133.462,442.73029 146.851,417.96087 156.266,392.00049 C 159.175,381.77689 160.14,369.44615 169.266,362.19714 C 176.083,358.05314 184.653,361.32787 189.875,366.21644 C 202.604,373.75048 215.728,380.81105 227.484,389.59793 C 229.575,466.75598 226.075,544.00228 230.688,621.10784 C 233.246,721.20949 226.13,821.32137 229.297,921.4024 C 231.37,940.58552 241.893,960.72981 261.547,968.96531 C 269.135,974.48695 274.246,982.52739 279.172,990.15338 C 281.324,996.3858 276.418,1004.3427 268.859,1003.5748 z "/>\r
+    <glyph unicode="O" horiz-adv-x="450" d="M 110.328,956.51889 C 77.715995,956.71025 42.485995,946.29064 22.921995,920.61906 C 0.31299513,890.55593 0.039995133,850.86564 7.9839951,815.97025 C 11.833995,796.64268 17.237995,777.47555 26.046995,759.61565 C 5.1139951,694.13572 13.209995,623.5195 33.493995,558.85536 C 50.652995,505.64051 70.414995,451.54224 107.023,407.28313 C 133.864,376.07974 173.552,352.19745 217.422,351.01017 C 251.828,349.54355 285.244,361.51699 312.908,379.99394 C 385.51,424.63192 433.138,499.86569 448.496,579.39356 C 463.416,651.61709 457.193,727.97429 429.797,796.89214 C 409.196,842.40881 369.354,878.73063 322.054,899.97594 C 273.389,923.59468 220.922,940.07513 167.484,951.24397 C 148.652,954.61713 129.533,956.77313 110.328,956.51889 z M 80.046995,914.84621 C 145.87,911.56211 209.52,892.17363 269.197,866.66901 C 313.391,846.62696 354.873,816.69419 375.231,773.86234 C 401.543,721.14168 404.712,660.99386 399.328,603.65187 C 392.767,544.5468 373.568,485.183 334.435,437.65757 C 316.125,416.252 291.324,396.33369 260.922,395.05644 C 226.055,392.01904 190.483,405.31004 167.309,429.8019 C 130.694,464.88213 112.26,512.31656 94.691995,557.73288 C 76.221995,608.57704 64.783995,662.62367 70.171995,716.56624 C 92.678995,709.77118 116.634,718.48124 135.191,730.40409 C 166.842,747.74162 192.327,774.65005 207.891,805.85912 C 183.203,792.09165 154.729,785.09028 130.984,769.87209 C 127.418,765.01068 123.45,757.24403 115.734,759.05867 C 102.703,759.20964 90.790995,767.58768 85.452995,778.57648 C 91.351995,791.59653 104.099,800.62727 115.266,809.55207 C 122.827,811.52894 131.511,812.50982 136.545,818.93641 C 152.953,831.93301 170.27,843.81452 186.797,856.67519 C 143.556,862.72103 98.795995,847.63318 67.265995,819.9257 C 59.138995,846.74133 55.057995,876.36562 65.858995,903.03586 C 67.655995,906.95385 66.423995,914.43263 72.577995,914.1428 C 75.053995,914.48883 77.543995,914.77679 80.046995,914.84621 z "/>\r
+    <glyph unicode="P" horiz-adv-x="600" d="M 85.296994,981.25274 C 61.004894,969.85124 36.853994,958.19005 12.608994,946.70137 C 15.139994,946.12466 21.165994,946.54008 21.952994,943.91712 C 1.3559942,931.26561 -17.796006,916.70296 -38.016006,903.50476 C -16.503006,904.5194 5.0519942,904.917 26.515994,906.69976 C 37.404994,847.21119 56.977394,789.41713 66.108794,729.6126 C 72.049294,699.46878 77.831894,669.29593 83.359494,639.08277 C 77.499494,640.26344 71.491294,642.67167 68.921994,648.04976 C 63.067194,653.93802 53.132894,651.93871 47.281394,647.13918 C 33.994994,640.49132 20.493994,634.20728 7.2659942,627.50692 C 3.0269942,614.30495 14.860994,602.21334 26.983994,597.35193 C 47.091594,587.95918 70.332094,587.86912 92.359494,589.49807 C 101.97659,524.64257 118.08809,460.09196 116.17199,394.26495 C 115.49699,379.79983 112.00059,365.14335 103.76569,352.82765 C 101.29079,345.56643 109.59489,336.33221 117.51569,340.13764 C 133.86399,346.93184 150.81469,352.85196 166.26569,361.20852 C 175.31579,369.06986 174.97239,381.74293 177.62999,392.29186 C 184.43299,437.00589 173.05669,481.7114 166.51249,525.86362 C 162.85019,547.25604 159.01709,568.62226 155.42199,590.02507 C 266.56799,589.84033 379.41409,583.47474 488.64439,606.77185 C 523.86269,614.55912 555.89349,631.91918 583.73449,653.23658 C 608.07649,673.84885 623.91349,703.97385 622.15829,735.20353 C 621.70089,781.64867 592.76779,825.16691 551.51569,849.73001 C 504.45589,880.25268 450.07769,898.67335 396.74819,917.39124 C 301.87969,948.70916 200.34499,968.13137 99.461594,957.69584 C 95.038594,958.35319 85.158894,953.37174 87.328194,960.70894 C 87.587794,968.03852 88.014594,975.36166 88.359494,982.68841 C 87.338694,982.20923 86.317794,981.73094 85.296994,981.25274 z M 123.54699,914.84621 C 236.63669,914.97467 347.10339,883.67556 448.72869,839.09378 C 486.77499,821.82095 526.12619,799.88271 546.35949,763.65189 C 563.25989,733.07672 564.97469,692.27141 541.07819,664.48987 C 530.63889,653.33884 513.90799,653.13905 499.78659,649.29513 C 403.49089,628.94175 303.87339,633.66997 205.82819,634.95005 C 186.36349,635.44706 166.89959,636.35386 147.42199,636.03506 C 132.32749,721.26361 116.69519,806.49869 95.161894,890.50438 C 93.543694,898.0422 92.076094,905.61002 90.796994,913.20507 C 101.68089,914.20939 112.61109,914.74869 123.54699,914.84621 z "/>\r
+    <glyph unicode="Q" horiz-adv-x="500" d="M 347.70319,972.23387 C 294.74439,970.60401 247.03119,946.24917 200.12129,925.60033 C 152.92739,903.46514 109.24689,869.68183 87.98259,823.32674 C 82.836193,812.89683 78.531593,801.76083 78.359493,790.10145 C 46.583693,751.13793 28.408493,704.22776 11.234493,658.16809 C -11.039407,583.41261 1.871593,502.36835 35.359493,432.39925 C 51.813593,398.0983 78.406093,364.76053 117.57819,351.89711 C 154.07819,340.41123 194.61359,348.87467 227.01689,366.75235 C 238.38089,372.62651 249.23479,379.53792 259.45319,387.03449 C 283.15139,332.30327 307.94929,277.61707 342.14069,227.87666 C 362.34639,239.07547 382.55699,250.26688 402.76569,261.46104 C 360.67819,312.59221 335.90309,373.19768 310.10949,432.54559 C 346.12739,476.82627 372.78569,527.16122 396.01569,578.25199 C 431.28969,658.71477 454.09769,744.18813 461.39209,830.97997 C 463.32649,870.18073 456.50999,912.71905 428.20319,943.01657 C 411.16859,961.17194 385.70829,971.21362 360.01569,971.94137 C 355.91829,972.23387 351.81139,972.3314 347.70319,972.23387 z M 315.98449,922.79639 C 339.29239,923.14148 364.57149,914.9134 377.41149,895.60097 C 399.78319,865.70849 399.10659,827.31984 396.07819,792.29865 C 390.90709,738.44896 377.10339,685.59235 360.67459,633.90506 C 342.89009,580.97996 319.19819,529.55725 289.04699,481.89588 C 274.97339,513.35818 255.50819,545.04827 257.67199,580.24476 C 259.97939,587.43097 252.08829,597.03468 244.01569,593.05198 C 227.05069,583.96211 209.27279,576.24427 191.95319,567.76116 C 190.84109,525.34194 214.74929,487.84411 231.79699,449.92437 C 235.82119,440.7576 239.84919,431.59186 243.89069,422.4354 C 225.53059,405.34827 201.45779,388.77402 174.10949,391.04907 C 146.44769,394.43448 126.44419,415.84667 111.91489,436.55922 C 78.652193,484.56379 64.602193,542.37563 64.046993,599.2647 C 64.515493,642.40039 76.767593,684.79992 96.95319,723.40236 C 98.63719,725.5602 101.23759,717.47845 103.51569,715.72388 C 118.31269,695.453 139.15839,677.79383 164.79699,671.00435 C 212.53729,673.98736 256.10299,701.79332 280.64069,739.54893 C 283.51439,748.58724 269.58259,755.39638 262.57819,749.36652 C 245.28669,740.54957 224.90499,736.35213 210.07819,723.78311 C 205.86369,721.75752 201.35109,720.35086 197.29699,723.48958 C 167.26219,737.2946 147.19869,767.14195 144.64069,798.18982 C 151.57069,800.45171 159.23799,799.81868 166.48449,800.65142 C 176.23439,800.43478 187.57419,799.08725 194.78499,806.73102 C 214.68229,821.07705 234.60279,835.39403 254.45319,849.79634 C 221.65139,851.60625 187.74979,853.35799 156.14069,843.5245 C 164.02359,861.27003 176.26679,879.31184 196.36709,886.35823 C 233.89759,903.93302 273.18369,922.32653 315.98449,922.79639 z "/>\r
+    <glyph unicode="R" horiz-adv-x="350" d="M 193.42199,987.48903 C 168.32679,982.54888 148.46729,964.96282 135.10949,945.28928 C 129.22439,942.13364 122.32219,935.39392 126.64069,928.73197 C 128.70129,926.23368 124.43519,923.55169 124.46809,920.6943 C 91.023692,833.11381 71.218592,741.31053 55.646392,649.46411 C 49.067992,612.87223 43.219192,576.02617 35.140692,539.76064 C 29.324892,532.75729 34.778792,523.35242 31.176992,515.66921 C 19.093692,449.66312 5.8561921,383.83527 -4.7343079,317.59658 C 17.570292,328.02366 39.896292,338.40855 62.296992,348.66034 C 69.078492,399.64138 77.298692,450.83159 86.984492,501.16567 C 139.31519,481.22295 184.61879,447.71633 225.35949,411.66743 C 247.67729,391.08419 267.77609,368.17444 284.92199,343.4144 C 304.94369,354.55237 324.93079,365.74464 344.95319,376.88167 C 288.89579,449.03018 213.98749,508.43806 128.82819,548.34782 C 123.03429,550.72039 117.14799,552.86602 111.20319,554.88216 C 177.80979,606.39966 254.80959,647.66546 310.24639,710.89476 C 336.36679,739.91325 357.38659,775.2926 358.31569,814.14638 C 360.00629,840.8185 353.38539,869.64752 332.14159,888.5615 C 300.08629,920.5264 261.01899,945.95136 219.85949,966.65263 C 214.53329,968.74672 207.52069,968.84523 203.04699,971.25341 C 207.95879,977.87692 202.41389,988.55907 193.42199,987.48903 z M 187.01569,916.01292 C 222.65219,896.44915 257.59919,874.39077 283.39069,843.98067 C 297.21119,823.97428 296.44149,798.13678 291.51569,775.6987 C 282.17159,740.70568 256.21359,712.17767 230.04699,686.93281 C 195.13859,654.28986 154.86539,627.02508 115.33929,599.33737 C 111.70619,597.78533 103.59319,589.8311 103.15879,593.10017 C 120.80739,692.7995 134.97179,793.91768 171.87409,889.19918 C 176.46019,898.37532 181.12039,907.51854 186.04699,916.54086 L 186.91179,916.0692 L 187.01569,916.01292 z "/>\r
+    <glyph unicode="S" horiz-adv-x="350" d="M 133.5782,947.93995 C 97.359597,947.03491 58.229897,946.28939 27.140697,926.78185 C 12.708897,917.05533 -1.5074029,901.4948 2.0156971,883.61437 C 6.1255971,858.85716 26.160697,840.23197 45.733397,824.83006 C 100.2414,777.10674 160.3567,734.94634 211.297,683.98592 C 246.7306,646.28367 271.7789,598.06436 273.0782,547.13014 C 274.8335,514.87078 273.3063,481.92492 263.6328,450.85274 C 256.5492,430.30336 243.1545,408.59112 219.8907,401.98072 C 195.2234,394.91182 168.5569,398.55226 143.7032,403.18201 C 106.8481,411.92858 74.368197,435.2379 56.472797,466.79205 C 44.884597,485.22217 31.762397,505.75092 34.680097,527.98081 C 35.439497,530.86165 35.249097,536.05224 40.078197,534.32396 C 48.381297,534.18699 56.452597,537.37262 61.544297,543.56282 C 75.811097,554.85271 89.945697,566.28886 104.2657,577.51962 C 75.971897,588.50748 43.463597,580.81593 18.734497,565.79743 C -0.78400288,556.2097 -18.723403,540.27124 -23.078003,519.37773 C -28.301503,489.95597 -14.672003,461.28919 1.3412971,436.8396 C 20.975197,403.03386 53.013197,375.86378 91.702697,362.64677 C 152.5231,341.42595 225.5595,354.18058 273.5157,395.18189 C 302.7196,418.41516 322.8471,451.90305 326.6095,487.99139 C 332.076,523.72236 332.3288,560.42312 326.7106,596.17196 C 318.5671,641.15502 295.4234,682.87469 263.3642,716.87454 C 220.4496,763.91414 166.6465,800.94683 118.8595,843.3004 C 99.252297,859.88958 77.563297,875.0356 63.078197,896.12796 C 102.3739,906.03088 143.9214,901.25944 183.7345,896.74313 C 222.9055,891.04615 260.2155,877.92392 295.8717,861.90959 C 304.1958,858.49892 314.1484,854.33801 317.2032,845.75177 C 317.5004,843.39045 316.9081,841.8 314.4845,841.29732 C 307.3265,835.93512 309.2519,821.85539 319.5782,821.48684 C 331.2777,822.06265 340.2078,830.00657 350.9845,833.35623 C 363.9745,839.44333 377.7346,850.81107 376.3595,865.70944 C 373.9254,885.72056 354.5532,899.06878 335.6775,905.5123 C 301.8251,919.3913 267.6422,933.34438 231.1191,939.5253 C 199.0544,945.67051 166.3134,948.22591 133.5782,947.93995 z "/>\r
+    <glyph unicode="T" horiz-adv-x="350" d="M 543.1407,965.49865 C 524.7866,961.38837 509.4851,949.82285 490.9838,945.84388 C 372.6582,908.12007 249.4823,884.53793 125.3282,871.86855 C 127.7362,888.9923 128.8685,906.28954 132.5782,923.26979 C 109.8523,912.40103 87.019596,901.71514 64.421996,890.62408 C 63.841096,883.67238 63.286996,876.71879 62.859496,869.75858 C 22.836096,870.65326 -19.141304,874.35085 -54.203004,893.49547 C -41.963904,898.51636 -31.981404,907.94942 -20.828004,914.97614 C -9.6655038,922.22326 1.2253962,929.84736 12.171996,937.39554 C -28.844104,948.33739 -73.841904,932.59032 -102.703,904.63154 C -114.3289,895.39259 -123.9122,879.8068 -117.5155,865.39142 C -109.2566,848.01634 -87.817004,842.2312 -70.092304,836.65616 C -28.063304,824.14161 16.697796,823.44861 60.453196,824.9209 C 57.099896,763.80149 57.713096,702.57991 57.882896,641.41093 C 56.359396,564.30908 51.219496,485.24641 74.954196,410.4337 C 81.959596,388.16627 93.558996,367.35523 105.7657,347.30184 C 111.753,341.35172 121.767,343.72146 127.8595,348.23967 C 140.9012,355.23261 155.1784,360.69613 167.172,369.01692 C 172.3723,376.38504 165.2528,384.55211 160.5888,390.31284 C 128.467,435.73664 119.0572,491.34845 116.1529,544.9028 C 113.1343,610.03207 118.5785,675.17069 117.3907,740.31594 C 117.9431,770.13709 119.4713,799.93581 121.5157,829.69784 C 248.3526,844.67131 373.5484,871.09957 494.4472,910.05097 C 515.1093,919.78032 535.34,931.47625 552.172,946.30431 C 554.4891,950.95098 558.353,957.37952 553.1407,961.68946 C 550.6736,964.28333 546.8452,965.71725 543.1407,965.49865 z "/>\r
+    <glyph unicode="U" horiz-adv-x="400" d="M 119.1407,952.41531 C 96.609096,939.18236 71.572696,929.68177 50.703196,914.14194 C 26.882696,857.67865 5.3409957,798.41418 7.4844957,736.84469 C 6.8247957,652.58112 26.556196,569.78143 46.863596,488.18955 C 57.876596,448.23571 77.577196,409.97553 108.2141,379.96017 C 127.8478,360.05415 154.0461,343.07571 184.2032,343.77061 C 226.0134,343.21543 265.3011,363.55385 293.0782,391.68521 C 320.6678,418.15574 343.1244,450.03901 354.9944,485.50282 C 388.2872,615.99954 394.5445,750.62341 406.4664,883.89407 C 407.8123,902.17407 409.0349,920.46722 409.5157,938.78752 C 387.9713,927.35792 366.2975,916.15911 344.8595,904.55885 C 337.0869,780.58058 329.4158,656.19621 306.3953,533.76063 C 300.5104,503.0026 293.5669,472.28393 279.0024,444.01293 C 271.4556,427.79134 264.3829,409.91271 250.2032,397.86888 C 234.776,390.89467 217.1787,396.35715 200.8595,396.63752 C 179.2382,401.84033 164.1888,418.78311 150.2032,433.97313 C 123.6451,465.33506 110.361,504.35863 102.0486,543.20769 C 94.656996,576.91788 85.948396,610.57359 80.296996,644.6494 C 70.487796,706.35768 64.487896,770.41506 80.222196,831.72953 C 91.968796,873.43605 111.3673,912.93035 123.3595,954.64248 C 121.9533,953.89979 120.547,953.15701 119.1407,952.41531 z "/>\r
+    <glyph unicode="V" horiz-adv-x="320" d="M 404.48449,975.87594 C 384.60379,967.0318 363.31569,960.06131 345.48449,947.88905 C 267.64039,838.81294 216.96789,715.38041 171.42629,591.90577 C 163.35649,568.43044 155.74719,544.84083 148.85949,521.05607 C 127.33059,574.42 107.81369,629.0903 101.24179,686.03092 C 80.027495,775.38756 62.320995,866.30182 61.515695,958.20455 C 41.811095,947.46423 22.038695,936.83272 2.2656948,926.20302 C 7.9030948,833.49947 28.610695,742.41739 48.322895,651.64464 C 56.171095,572.58671 96.116295,501.16216 120.88459,426.23593 C 125.98919,414.255 126.26149,401.35309 126.14069,388.62468 C 127.09169,379.94658 131.09789,371.74196 135.29699,364.30166 C 132.33789,357.37531 134.41429,346.8 143.67199,345.66342 C 154.34799,343.96419 161.29629,353.53507 170.05369,357.3912 C 180.21259,363.41453 190.46439,369.29161 199.82819,376.34643 C 196.70209,376.37642 193.47079,378.9853 196.73449,381.23972 C 200.35509,388.08736 198.95169,396.27034 198.48449,403.62908 C 195.74119,423.14414 184.34259,442.20901 189.81659,462.20518 C 199.04889,537.04324 229.58559,607.42592 256.60949,677.86952 C 296.44949,776.69952 342.33899,874.54675 409.14069,959.99287 C 414.49409,963.83779 415.40479,973.71057 407.76569,975.61243 C 406.70629,975.89839 405.58309,975.96312 404.48449,975.87594 z "/>\r
+    <glyph unicode="W" horiz-adv-x="450" d="M 84.515694,945.70455 C 65.863694,944.4826 47.227394,937.49336 35.150794,923.62183 C 10.548794,898.61612 4.9512939,862.7285 5.0036939,829.80232 C 4.9307939,777.52806 11.708194,725.12627 5.4289939,672.96173 C 4.6125939,653.22163 4.7141939,630.60061 19.734494,615.25677 C 32.717194,603.8282 55.191194,604.76216 67.546994,616.57621 C 87.638794,631.63123 102.71279,651.78215 117.97649,671.12089 C 119.89189,670.79075 120.50399,662.32834 121.94899,658.89231 C 145.13159,573.56813 183.24799,492.68705 219.51569,411.76008 C 232.79279,386.67558 249.97689,360.50983 278.76569,349.60352 C 298.67419,343.49306 321.10119,351.35904 334.17199,366.04363 C 359.53369,389.54138 371.02419,422.36624 380.35989,453.93269 C 425.67439,591.1729 476.43249,728.03246 551.22099,853.72396 C 560.19999,869.86496 570.01199,885.77522 577.32819,902.74326 C 557.31719,887.03931 533.02009,878.04698 510.89069,865.55495 C 504.57899,861.36026 496.21669,858.3153 494.29699,850.60871 C 484.60659,832.76196 474.11019,815.4197 465.10949,797.24384 C 402.11739,676.88815 358.50119,548.76967 313.56009,421.79422 C 310.79889,414.05292 307.65819,406.31446 303.82819,398.92477 C 293.56619,410.31967 288.45329,424.89546 280.53349,437.71669 C 243.86279,507.66516 212.13909,580.14372 187.68269,654.54949 C 173.92329,699.38535 164.98439,745.84828 166.14069,792.67219 C 152.50239,794.97163 142.35979,784.64105 132.26569,777.99044 C 123.09489,772.54472 109.76299,771.58919 104.51569,761.54939 C 102.75239,754.75331 108.66379,746.41935 101.92839,741.07683 C 88.667894,722.58957 76.128794,703.55563 65.453194,683.65605 C 65.807894,708.78558 68.939194,733.84947 67.853194,758.99955 C 68.893494,808.52617 82.271294,858.20376 73.484494,907.6375 C 73.096994,911.04533 68.085894,914.92587 72.484494,917.1906 C 80.846994,924.9038 86.334594,935.19116 87.265694,946.17338 C 86.349094,946.01776 85.432394,945.86115 84.515694,945.70455 z "/>\r
+    <glyph unicode="X" horiz-adv-x="350" d="M 42.671993,979.0227 C 28.217293,965.9737 13.882293,952.76134 -0.42180716,939.5482 C 29.884293,842.1332 69.878393,747.62919 114.01569,655.08031 C 56.073693,591.38209 -2.1650072,527.682 -66.234307,469.48949 C -65.320307,468.94178 -59.895707,468.28348 -63.140507,466.88156 C -70.302307,461.38523 -68.885807,449.67059 -60.328007,446.13325 C -51.894207,442.04083 -43.623107,448.74213 -37.815807,453.83237 C 23.814093,503.85419 78.449993,561.04142 131.29699,619.24055 C 188.29569,500.77074 251.59429,385.07486 315.92199,270.00738 C 317.22329,264.47633 324.11769,258.2008 330.07819,262.50513 C 341.54789,274.36705 352.02319,287.17512 363.42199,299.19549 C 293.46659,416.83164 228.16239,536.88348 169.20319,659.71108 C 167.61099,663.09082 173.61579,664.8594 174.79699,667.7112 C 244.91689,746.97458 319.71109,822.7485 389.67199,902.12539 C 394.56689,911.25925 382.01489,923.45591 372.42199,917.42228 C 352.00909,908.79009 333.29859,896.17991 320.30799,878.89394 C 264.43369,818.01366 208.18789,757.43449 152.14069,696.69403 C 109.08159,788.93898 71.564993,883.69159 45.140693,981.25 C 44.317793,980.5073 43.494893,979.7646 42.671993,979.0227 z "/>\r
+    <glyph unicode="Y" horiz-adv-x="450" d="M 43.796992,1002.4398 C 27.449192,995.4319 13.203492,984.57719 -2.484308,976.24122 C 3.365992,891.71133 42.349792,812.60639 91.921992,743.02836 C 125.19049,696.24097 161.42009,649.77151 210.48399,616.66343 C 131.01939,599.71884 51.180692,575.10882 -15.015508,529.15795 C -37.212208,513.07239 -58.646308,491.91344 -61.756408,464.48729 C -65.087808,437.60412 -48.990608,413.25954 -31.665908,393.30376 C -8.196608,367.03017 20.042092,344.88372 46.890692,321.64668 C 88.095292,287.31196 128.27449,251.86413 162.00909,210.8788 C 196.20999,172.7958 231.61299,133.34465 279.73399,110.50054 C 296.10099,103.89677 314.34599,100.94745 332.07799,102.96926 C 345.50599,108.96354 359.95699,114.14753 369.95299,124.86066 C 382.73999,136.87631 389.03199,153.16354 392.99899,169.42173 C 416.36299,247.83365 410.96299,330.28636 423.27199,410.25307 C 429.94599,473.54054 431.16999,537.1713 433.39099,600.69224 C 448.09799,601.61124 463.67199,599.5744 477.64099,604.64873 C 495.59199,619.96531 513.57099,635.25295 531.57799,650.51144 C 499.28299,649.34016 466.98699,648.0929 434.73399,646.11611 C 437.12899,712.68296 435.50199,779.87348 447.70799,845.60381 C 450.47199,865.08888 453.28999,884.7305 453.42199,904.41345 C 449.04899,914.47104 452.56699,928.55825 442.17199,935.7998 C 429.71899,942.12783 414.26999,933.11023 409.54699,921.73321 C 401.48799,904.4847 397.16599,885.69737 393.01599,867.19979 C 387.21999,839.34607 386.24499,810.83498 384.10899,782.64923 C 379.10299,749.39489 368.63099,716.96951 355.03099,685.95739 C 347.70699,670.3416 338.89299,655.29405 328.29699,641.45629 C 314.83399,636.61646 298.40499,632.57275 285.18899,640.2691 C 241.04399,658.0399 209.37399,693.11635 178.44799,726.26095 C 133.68569,778.35143 96.302492,836.9032 72.859492,900.22255 C 61.796192,931.40258 55.930392,964.11306 54.046992,996.9014 C 52.336792,1000.5699 48.010292,1002.8205 43.796992,1002.4398 z M 379.35899,582.46473 C 377.51899,503.77338 374.37299,424.85138 363.45499,346.81084 C 356.98799,279.24903 356.90799,209.72349 332.17199,145.28631 C 315.77299,154.7118 304.30499,169.64583 289.68499,181.18981 C 228.72699,235.87043 167.84099,290.76766 106.85979,345.33476 C 68.992992,376.97433 27.134992,405.4892 -0.39050802,446.01875 C -8.779308,460.31512 -9.385508,479.81711 3.140692,492.32134 C 23.493392,516.3827 54.904192,528.856 84.441992,540.32969 C 143.14139,561.23918 204.62899,574.81255 266.48399,584.77914 C 304.02999,590.58774 341.78899,594.57799 379.73399,597.35193 C 379.60899,592.38922 379.48399,587.42651 379.35899,582.46473 z "/>\r
+    <glyph unicode="Z" horiz-adv-x="400" d="M 27.202991,996.2253 C 12.387991,978.8643 -2.3840092,961.47143 -17.172009,944.09079 C 45.296991,915.1998 94.726991,864.74202 161.48399,843.71995 C 206.84999,828.33669 255.95699,823.05139 304.14099,826.81 C 232.93799,773.99653 165.57899,716.35722 108.14099,650.30423 C 75.090991,657.53735 44.631991,675.89795 24.577991,701.53008 C 15.257991,707.14741 3.8629908,700.25284 -1.9840092,693.11923 C -11.690009,684.93531 -21.619009,676.95299 -31.422009,668.85439 C -10.460009,633.68883 26.630991,608.26207 67.796991,597.55452 C 21.894991,532.14203 -19.439009,463.59461 -51.891009,391.39077 C -57.194009,376.07229 -55.639009,355.56228 -39.891009,346.28956 C -20.943009,335.01566 2.6369908,340.78575 23.663991,341.24246 C 137.75499,349.36915 253.74199,349.26981 365.85899,325.6876 C 412.24899,316.02296 457.76399,302.11199 500.48399,282.55002 C 515.79399,299.55003 531.10699,316.54617 546.42199,333.54146 C 431.78399,382.15844 304.94399,399.35901 179.92299,401.34053 C 121.41699,402.43869 62.905991,398.02179 4.5779908,395.78611 C 0.28199082,397.69544 4.2459908,402.43964 4.3279908,405.39833 C 9.6969908,422.99279 21.348991,438.1303 28.905991,454.91369 C 53.840991,501.13558 80.483991,546.45154 110.64099,589.90515 C 161.60699,584.77368 214.03999,586.36508 263.35899,600.0162 C 273.96399,606.52528 278.59799,618.32997 287.34599,626.62645 C 297.92799,639.37266 308.47999,652.14043 319.04699,664.8979 C 265.01199,649.2333 208.11399,638.42366 151.26599,643.9743 C 217.94399,721.74287 303.62499,782.42895 389.79699,840.32054 C 400.89399,843.97035 413.35199,844.69335 422.91899,851.71071 C 439.09499,860.83993 455.43899,874.32417 458.48399,892.65951 C 458.44699,904.09754 444.79299,912.9548 433.42199,908.74791 C 416.55299,905.37753 402.68899,894.08678 385.42299,892.39408 C 307.48699,873.46892 220.23099,878.13527 150.23399,917.6277 C 107.35999,941.07955 70.301991,972.6469 28.327991,997.5438 L 27.703991,996.8114 L 27.202991,996.2253 z "/>\r
+    <glyph unicode="1" horiz-adv-x="200" d="M 35.327483,880.07055 C -49.077917,808.97951 40.945783,897.08709 102.18768,952.80049 C 224.71978,1086.5155 181.13768,972.21147 154.73188,854.10873 C 138.26738,722.05407 110.58778,589.61122 119.60048,455.24595 C 124.55028,428.08956 121.91958,401.86269 119.72688,374.81963 L 52.653483,334.48201 C 55.638283,361.02017 58.543483,386.55466 53.966983,413.37032 C 45.704883,548.92926 73.429983,681.9091 88.899283,815.38139 C 111.99248,925.51296 113.69038,961.41665 195.91278,1016.7903 C 206.26138,1023.7605 160.66408,978.71508 170.74338,986.25352 C 107.71488,928.56941 48.828383,858.64883 -25.718317,825.75778 L 35.327483,880.07055 z "/>\r
+    <glyph unicode="2" horiz-adv-x="450" d="M 104.48721,989.66186 C 166.00401,989.87062 225.57011,953.92053 278.24651,917.23972 C 336.42481,876.83254 330.55131,816.79672 307.43131,748.57027 C 262.60931,642.49524 175.42471,583.97877 106.82161,504.6908 C 65.14721,470.0182 79.42611,432.64427 82.23601,417.5182 C 232.24331,387.65239 381.20641,350.47823 531.45921,321.90962 L 472.27581,271.01991 C 321.91241,302.41482 172.23241,339.23566 21.22261,365.40893 C -13.54449,393.27544 8.3604105,430.19091 38.35111,469.55157 C 105.12961,550.75321 194.22091,606.12671 240.26511,711.01167 C 263.17641,774.76585 271.58131,829.58006 216.34951,868.01113 C 163.85501,904.62061 105.00301,938.85868 43.44131,935.34819 L 104.48721,989.66186 z "/>\r
+    <glyph unicode="3" horiz-adv-x="350" d="M -119.88891,930.7858 C -41.618911,1014.9948 14.124689,1004.2758 107.99409,962.9551 C 178.63011,925.5544 260.80911,876.4927 217.34511,776.7303 C 139.09709,693.4278 58.811089,681.385 -36.984111,673.313 C 60.489089,747.5604 199.23911,614.3352 299.81111,552.3537 C 357.65711,509.6011 362.85711,456.1545 317.53511,400.8942 C 235.14811,332.1647 150.05409,305.1456 54.967089,346.006 C 42.935089,351.1037 31.923089,358.9838 20.441889,365.4509 L 82.640089,415.2834 C 93.822089,409.109 104.53509,401.4777 116.26209,396.72 C 181.53311,370.1176 358.59211,424.3386 248.18511,367.8873 C 294.51711,414.6456 293.92311,462.0292 238.77111,503.5239 C 160.73611,552.5695 -127.42831,634.6133 22.723089,729.0247 C 92.014089,730.8731 236.02111,775.3315 149.18909,741.3949 C 199.28311,831.2242 110.87409,879.823 47.845089,913.1779 C -33.131211,947.706 -144.94731,924.9299 -52.656411,972.7346 L -119.88891,930.7858 z "/>\r
+    <glyph unicode="4" horiz-adv-x="550" d="M 210.0313,346.0625 C 212.1323,366.58326 214.3347,387.16496 216.7188,407.6875 C 224.5897,452.64595 237.8526,495.99208 248.4063,540.03125 C 194.7043,534.43198 141.2388,526.40429 88.249998,515.78125 C -24.453002,492.15317 -7.6118025,547.22588 19.406298,667.5 C 44.587298,756.04203 79.605998,844.48872 78.749998,940.0625 L 145.9688,982 C 145.4747,884.87391 111.297,795.42124 85.374998,705.5 C 59.741998,584.45154 39.441998,548.4403 146.375,569.34375 C 183.4315,576.14112 220.7016,581.80088 258.0938,586.34375 C 260.4384,600.00592 262.2856,613.79974 263.375,627.8125 L 330.5938,669.78125 C 328.6138,643.48656 324.061,617.92023 318.3438,592.6875 C 419.3956,601.79067 521.0872,603.11789 621.9688,597.75 L 563.3125,546.09375 C 478.028,551.40609 392.0897,551.26635 306.5,545.125 C 297.9759,512.68666 289.1051,480.33308 283.0625,447.125 C 280.2786,426.89865 278.7503,406.45843 276.9063,386.09375 L 210.0313,346.0625 z "/>\r
+    <glyph unicode="5" horiz-adv-x="550" d="M 172.5204,985.4821 L 127.4804,957.38894 C 115.4364,958.38193 103.3944,959.44087 91.361396,960.62563 L 30.313396,906.30747 C 55.558396,904.72838 80.830396,903.46338 106.0954,902.42406 C 105.5614,837.95429 96.837396,774.2028 82.316396,712.06333 C 49.108396,618.47904 191.4844,640.15063 245.6614,623.25813 C 332.4794,594.3496 421.5024,558.44943 473.6924,464.30038 C 483.9344,462.13341 473.8184,441.05869 463.3724,422.16247 C 445.7354,415.7686 424.0204,407.98209 408.0744,405.90876 C 267.1434,394.99449 126.2044,425.99064 -11.992604,457.02953 L -71.953604,405.87134 C 67.173396,376.60413 208.3994,345.22082 350.0104,353.18932 C 422.6034,361.06146 571.1184,392.24404 538.0984,510.24505 C 483.7354,606.08292 394.4344,643.57549 304.9694,673.27446 C 251.9394,690.35424 118.2174,670.11719 149.0844,750.88881 C 159.6294,800.03168 166.8774,849.91066 170.3454,900.29271 C 295.7374,896.95888 421.3074,898.3238 546.7084,897.43883 L 603.4054,947.9119 C 459.9174,947.28382 315.9324,944.86886 172.5834,954.07831 C 172.7314,964.52513 172.7124,975.00047 172.5204,985.4821 z "/>\r
+    <glyph unicode="6" horiz-adv-x="450" d="M 351.3554,911.20414 C 295.2884,927.80127 230.0044,890.14095 176.8514,863.0666 C 69.795395,779.31886 119.5574,899.13624 78.975395,718.90392 C 67.540395,637.1956 65.900395,560.35838 104.7014,491.14784 C 137.1544,429.20651 189.5534,407.09239 246.7344,397.58945 C 288.6914,383.73999 398.6714,441.14761 282.2164,375.34951 C 254.4544,359.66325 304.2464,446.44864 306.0254,483.82707 C 301.9394,543.18488 261.9704,568.1698 224.4534,596.94367 C 175.6134,628.49651 125.0524,635.97783 71.677395,626.56592 C 62.466395,622.22928 88.869395,638.48479 97.800395,643.62429 L 29.742395,605.22974 C 56.692395,628.73738 90.841395,672.27772 130.7664,682.13037 C 185.7894,687.55633 236.7544,679.83585 286.4314,647.01704 C 326.5854,615.4937 367.4494,588.33372 372.1734,524.67408 C 366.3984,397.47081 292.4254,326.90965 186.6224,345.37845 C 127.8714,356.30523 74.115395,380.46948 41.083395,444.47883 C 1.0903951,516.55127 1.3623951,594.3984 12.321395,679.61279 C 40.781395,817.0863 131.7844,867.93589 234.1914,918.49729 C 289.4064,945.49574 354.7454,981.0123 412.4004,965.516 L 351.3554,911.20414 z "/>\r
+    <glyph unicode="7" horiz-adv-x="450" d="M 31.968794,319.3125 C 13.458794,348.06129 5.3792939,369.65179 13.531294,407.9375 C 28.953394,464.89593 55.218494,513.06853 87.249994,555.8125 C 36.888194,566.10981 -13.620206,575.55346 -64.656206,575.71875 L -3.6250061,630.03125 C 42.124994,627.19527 87.459494,618.67688 132.71879,609.625 C 157.99219,636.59901 184.98689,661.6577 211.99999,685.90625 C 261.71799,731.95166 422.18479,827.35865 286.59379,857.625 C 187.77059,878.76851 87.279694,893.91544 -11.906206,909.46875 L 49.124994,963.7813 C 147.25509,942.55564 247.20979,928.84038 345.71879,908.34375 C 492.30379,873.02703 336.00899,770.67368 279.37499,718.71875 C 239.73359,682.92285 199.62359,645.73301 164.90629,603.15625 C 182.19189,599.70974 199.46779,596.37151 216.78129,593.40625 L 157.09379,541.8125 C 146.53899,543.76013 135.99439,545.83056 125.43749,547.96875 C 106.74809,517.58497 91.251394,484.35942 80.468794,447.25 C 71.132694,410.36493 80.396694,394.65523 95.968794,367.15625 L 31.968794,319.3125 z "/>\r
+    <glyph unicode="8" horiz-adv-x="400" d="M 173.91839,948.37033 C 133.30639,962.64083 89.549393,961.46408 48.653393,949.64783 C 56.431393,959.35602 19.946393,930.78111 26.856393,936.2686 C 83.474393,981.2355 26.138393,908.94627 78.206393,788.69086 C 149.41639,625.05656 271.77139,532.90592 368.19539,404.93984 C 424.77539,310.91655 287.61739,289.47156 241.09239,287.73548 C 157.79539,286.43832 81.195393,319.18659 15.316393,390.82809 C -45.239607,487.46081 59.091393,539.79225 109.36439,579.41348 C 239.57239,666.94739 224.26539,631.54857 310.33839,748.08562 C 351.66239,805.95799 295.46039,844.43727 263.36839,883.22263 C 246.26339,907.1174 224.84839,919.67678 203.34539,932.7224 L 250.07239,977.6215 C 271.82139,963.56683 293.40439,949.68624 310.66739,925.11786 C 344.65839,883.95146 403.17839,842.2569 362.00539,778.34837 C 277.97639,663.68308 172.40039,593.93817 66.260393,530.33384 C 126.34439,582.79732 5.689393,504.06064 62.798393,433.23188 C 127.50339,362.08903 203.81639,331.58451 285.74539,333.94954 C 392.97339,340.87157 339.49039,285.99583 320.72239,363.33891 C 226.24439,495.00383 103.32739,586.73964 30.742393,749.34441 C -21.437607,866.30692 -13.932607,953.20923 93.012393,997.7773 C 135.00939,1007.7701 178.32139,1007.5328 220.16639,996.2197 L 173.91839,948.37033 z "/>\r
+    <glyph unicode="9" horiz-adv-x="400" d="M 321.58439,893.01253 C 255.85639,939.44786 176.40939,954.45259 102.88039,943.92373 C 110.37539,956.53932 75.240392,927.53258 81.850392,932.48301 C 151.64939,984.7448 88.256392,931.27954 140.40839,864.65807 C 236.40139,788.82887 260.86939,854.12292 271.87039,869.00451 C 368.83839,983.5414 319.86839,910.75079 283.64539,808.38791 C 247.89239,692.652 247.73039,568.75757 263.50739,447.23357 C 281.86139,364.6974 305.36139,237.09709 197.10839,289.96376 C 133.60039,323.43732 72.133392,361.7944 11.404392,403.32922 L 62.355392,448.39693 C 122.30439,405.80227 183.48139,367.46835 247.08539,335.55689 C 286.27539,319.07036 208.01139,251.52638 210.47539,409.09779 C 194.80639,532.02333 194.28139,657.08372 229.21339,774.77334 C 244.19539,818.83923 338.05539,1009.6477 327.54639,900.77232 C 265.08739,811.03663 170.49039,736.7071 88.844392,821.42814 C 27.292392,900.88826 69.260392,967.24483 151.22039,992.5814 C 226.06239,999.8834 302.75839,982.2103 371.63639,942.15639 L 321.58439,893.01253 z "/>\r
+    <glyph unicode="0" horiz-adv-x="430" d="M 243.26424,883.79019 C 211.40181,869.28667 179.42386,853.84311 150.3974,832.13181 C 73.634125,758.56332 51.073653,662.07553 59.103158,547.02048 C 76.471011,469.56992 98.627643,393.57325 171.16151,392.39627 C 277.79257,418.322 335.71452,458.70648 372.42577,653.56932 C 383.24213,731.71792 386.40555,824.02554 334.36839,879.40478 C 296.61298,916.00901 259.84898,951.47454 211.83202,949.0089 C 295.2441,1010.9728 212.78887,953.97762 240.56288,885.15292 C 242.19825,884.65279 243.83362,884.15186 245.46899,883.65173 L 188.97049,836.92126 C 187.03406,838.07541 185.09581,839.23045 183.15847,840.38542 C 141.37375,918.20094 209.12429,966.18581 265.79197,999.80727 C 314.79851,995.35827 352.74493,961.40771 391.60726,923.97265 C 444.60127,864.76191 442.95498,771.04351 431.79663,688.72697 C 398.14238,502.64881 269.15367,372.55754 117.03966,343.75 C 41.882653,350.35829 18.544516,426.95681 0.29349007,508.75863 C -9.2012999,625.58529 11.95028,725.3964 88.865446,802.15944 C 145.85874,845.06655 234.78997,937.51508 304.416,922.09196 L 243.26424,883.79019 z "/>    \r
+    <glyph unicode="a" horiz-adv-x="400" d="M 352.6563,818.9063 C 333.6753,804.51236 316.5135,785.3337 303.3438,761.86933 C 241.0176,769.74942 175.5585,773.31901 116.5083,741.34335 C 72.892996,718.58147 35.277696,672.92146 18.874996,613.10838 C 1.6879958,555.10147 -2.1507042,490.43112 5.9062958,429.02692 C 9.8602958,403.34735 19.007996,374.4291 38.499996,364.51179 C 62.076196,353.1526 87.190396,366.20106 107.6239,382.53354 C 120.0099,391.88919 132.2255,401.30475 144.4375,411.02859 C 118.3715,403.85427 90.465896,426.58926 82.531296,460.75638 C 71.339796,497.79229 70.038996,539.60985 73.749996,578.92849 C 81.669796,625.22281 102.8166,664.49905 118.5173,706.45908 C 120.0235,714.59864 124.211,716.8476 130.0912,715.43984 C 180.0819,717.65404 231.8484,718.23986 279.0938,693.46714 C 268.0473,651.75143 275.8902,604.06607 259.4688,564.60584 C 250.0623,538.09659 234.2377,517.87368 218.5914,497.95968 C 196.0032,468.3053 172.5156,439.83983 147.6563,413.64807 C 191.5858,448.30855 234.3266,485.92579 271.8438,532.5807 C 279.4663,475.61412 278.6806,416.02891 293.9688,361.42757 C 303.3822,333.74682 323.0587,314.33052 344.4599,307.08449 C 350.1771,305.20857 356.3472,301.10155 361.9289,301.60358 C 380.7186,320.67517 400.9388,340.06476 418.8438,358.93483 C 395.3881,366.72431 373.1737,387.68996 364.3611,418.97316 C 347.3354,469.62641 351.6345,527.15757 353.5451,581.27718 C 356.5442,635.85598 360.4063,690.69004 358.4375,745.39193 C 360.7831,749.19787 356.49,751.77228 356.4063,755.95436 C 352.6579,773.20643 355.9813,791.45512 353.8438,809.06208 C 353.4031,811.94645 353.7423,817.70887 352.6563,818.9063 z "/>\r
+    <glyph unicode="b" horiz-adv-x="350" d="M 44.816973,974.03277 C 23.248473,964.87258 1.7326728,955.6251 -19.839327,946.47064 C -29.612127,885.87324 -24.134427,824.49061 -25.725727,763.53717 C -24.618527,693.50605 -12.243327,624.0427 4.9374728,555.6271 C 14.534873,512.37746 23.924673,468.91723 35.691973,426.14953 C 29.899173,424.45348 24.757173,420.35918 23.035673,415.22962 C 21.642773,409.68304 28.804673,406.69745 32.582673,403.2707 C 40.190373,398.23697 48.116873,392.16569 48.830773,383.43802 C 52.043973,371.59553 54.608573,359.53132 57.191973,347.53172 C 71.816673,353.45931 85.694373,360.66448 100.44197,366.35277 C 151.69977,345.54206 213.96227,347.25777 265.53567,366.53651 C 296.47867,378.81475 323.21737,401.32338 330.82287,430.05905 C 344.44287,472.89105 344.23277,519.07447 330.00197,561.82573 C 308.12387,624.10066 256.45107,676.51236 194.24287,713.89288 C 163.14797,732.3584 128.46217,747.94893 90.754473,754.218 C 73.758873,756.57463 55.911473,756.11371 39.410673,751.82921 C 37.271573,815.43155 36.785973,879.19808 42.191973,942.69065 C 43.653473,953.67872 46.022873,964.64296 48.410673,975.55528 C 47.212773,975.04774 46.014873,974.54021 44.816973,974.03277 z M 44.254473,714.23966 C 111.72027,702.17368 169.96167,665.72791 213.75447,621.97209 C 253.05547,582.17032 278.31547,531.51179 276.41067,479.30506 C 276.29637,453.4783 273.06287,426.69577 259.16067,403.52229 C 252.53117,400.43775 248.33697,392.35505 239.34877,394.17981 C 210.79867,394.88659 180.66287,392.7959 154.35607,403.75296 C 137.22257,409.49836 121.37087,417.33623 105.78567,425.62452 C 85.150473,485.77067 75.830873,548.20635 60.241973,609.39514 C 52.389773,644.21426 44.917773,679.15085 42.410673,714.55471 L 43.390673,714.3873 L 44.254473,714.23966 z "/>\r
+    <glyph unicode="c" horiz-adv-x="300" d="M 220.08433,726.77763 C 159.46343,726.48099 99.189734,703.87362 58.678034,666.29832 C 29.342234,637.17196 15.398834,599.55401 8.4280335,562.40208 C 3.3736335,531.15245 8.2958335,498.93884 22.747934,469.89925 C 42.098934,426.11805 73.552834,384.2055 121.31533,359.07834 C 155.08743,344.02396 197.44153,347.14502 230.20923,362.56502 C 242.67333,367.5074 255.51153,372.47965 265.58433,380.46568 C 286.98353,414.6187 287.96863,456.04608 274.61553,492.55179 C 253.59173,484.23052 232.96013,475.37716 212.02183,466.98452 C 220.29573,442.17584 222.10373,414.71359 210.36553,390.44055 C 187.56223,389.63034 162.71773,395.16818 147.60933,410.20747 C 107.56313,442.36073 81.929334,486.53118 72.970134,532.18323 C 66.314034,580.29992 86.102134,627.99596 115.64683,668.50326 C 118.24233,672.26691 120.34303,678.99784 127.08433,677.74315 C 146.27093,679.03883 163.73603,688.06095 183.36543,686.68079 C 203.64843,686.95318 225.94553,685.97733 241.92803,674.22578 C 262.12723,685.17347 282.39023,696.0396 302.42803,707.19528 C 279.66853,723.08494 248.90823,727.14325 220.08433,726.77763 z "/>\r
+    <glyph unicode="d" horiz-adv-x="350" d="M 307.5869,997.89163 C 294.3429,996.49923 287.8751,984.59773 285.7744,974.73933 C 264.8551,890.64008 271.4641,804.22748 266.0468,718.94283 C 263.0628,665.88646 259.7873,612.83197 256.1182,559.81066 C 254.2798,543.52116 247.4033,528.04809 242.8734,512.10298 C 229.8318,473.33781 213.9805,433.58713 182.5869,402.41762 C 174.524,395.27145 165.0999,387.85257 153.4307,385.88028 C 134.6411,384.82681 120.7117,398.08776 109.7432,408.92756 C 84.843699,433.88699 65.209099,463.47157 59.118199,495.99773 C 47.938599,549.5786 63.742399,607.2805 103.4619,650.3721 C 112.8504,659.66369 126.3731,666.07947 141.0244,666.93566 C 157.375,669.26223 175.0744,667.51176 189.0244,659.53322 C 206.9842,670.52586 224.8674,681.60705 242.7744,692.66035 C 206.1258,713.59769 156.0535,711.83484 117.5869,694.99649 C 51.555699,667.6748 8.1705986,609.15686 0.95359863,548.24546 C -6.7268014,489.70286 10.055199,427.04421 56.753699,382.10435 C 79.757999,360.82606 115.2943,346.91982 149.8507,353.38221 C 189.74,359.90671 221.2585,384.63495 244.6783,411.28492 C 249.6183,416.95542 254.132,422.8905 258.3994,428.90361 C 261.8971,383.60074 267.3527,337.96699 283.1447,294.39003 C 287.3722,285.43034 291.7896,276.5365 295.4932,267.41554 C 314.0184,276.05248 332.2464,285.17667 350.6494,293.90143 C 326.7366,328.93541 322.8315,370.21691 316.2343,409.46787 C 309.2239,461.22439 307.646,513.55119 311.6285,565.51653 C 341.6937,689.16462 338.9905,816.0554 340.4932,941.63853 C 335.5254,959.93352 334.7748,980.99473 318.4307,995.24033 C 315.1969,996.98633 311.4601,998.13113 307.5869,997.89163 z "/>\r
+    <glyph unicode="e" horiz-adv-x="250" d="M 137.06142,779.169 C 102.80922,776.82703 73.90262,758.89828 48.85432,740.51287 C 20.66652,717.0441 7.6647202,683.47072 6.6497202,650.54752 C 2.3725202,596.8263 12.81342,542.73312 32.69332,491.75277 C 51.52042,445.15536 79.97112,399.79255 124.31142,366.78653 C 141.03202,354.93759 164.74392,346.89631 186.39132,353.59623 C 219.21792,362.64218 241.40092,387.82396 255.14502,413.49475 C 269.40362,440.55206 273.51682,471.15255 267.78022,500.37109 C 249.53882,491.91061 231.29172,483.36773 212.87392,475.30272 C 216.85282,444.63867 207.00022,412.66499 183.53022,388.73134 C 168.28862,398.83991 154.57662,410.55609 141.87392,422.98706 C 109.67542,456.76749 90.29932,498.0207 76.65742,539.45692 C 74.37732,546.63962 72.46752,553.81181 70.74892,561.08669 C 101.51012,552.82701 130.18842,539.88799 160.11822,529.76995 C 174.56342,522.26836 193.53352,516.49059 209.81142,523.36583 C 229.81012,530.97595 237.55512,550.49243 240.70402,567.58372 C 245.15552,589.63299 244.99042,612.2077 249.79532,634.20838 C 253.36602,669.43079 248.28182,707.30833 223.84272,736.90706 C 205.26752,757.04939 178.50832,771.82014 149.21772,778.51268 C 145.21622,779.07858 141.12792,779.24547 137.06142,779.169 z M 114.09272,739.84698 C 135.15112,738.63547 151.88362,726.10795 167.53022,715.43483 C 189.46132,695.58446 194.29512,667.24697 194.34272,641.09569 C 194.05062,617.6315 188.73382,594.5888 183.99892,571.53402 C 151.47352,582.56652 120.06762,596.79124 85.81142,603.53236 C 77.14512,603.99609 70.68492,597.1528 64.65522,594.02997 C 63.74562,607.91373 61.29392,621.82371 61.45172,635.81911 C 61.19662,659.38163 63.79602,683.32506 74.60682,705.19267 C 83.91062,717.54862 94.84932,728.92759 107.24892,739.03324 C 109.49872,739.46139 111.78072,739.81421 114.09272,739.84698 z "/>\r
+    <glyph unicode="f" horiz-adv-x="200" d="M 198.47285,1000.107 C 163.49735,997.88971 131.72265,980.81695 111.05175,957.55918 C 50.835353,897.63621 20.479753,820.05522 12.132953,742.68346 C 6.9984526,698.31377 10.832153,653.44913 19.879053,609.69549 C 17.086453,606.98437 11.943553,606.87138 8.3790526,604.94435 C 3.1441526,603.12323 0.70355256,598.22965 1.6915526,593.63072 C 1.8522526,577.40031 14.657853,563.14032 30.285353,554.545 C 47.021253,472.88863 68.747753,391.73408 77.410353,309.11051 C 79.443653,289.362 78.708353,269.48062 82.097853,249.81244 C 85.500453,223.85968 88.289653,196.19006 74.560753,171.92128 C 71.586053,165.76188 68.984153,159.50467 66.941553,153.08244 C 88.674853,161.465 110.43055,169.80499 132.28535,177.96717 C 146.90535,214.28497 137.53385,253.06418 134.50405,290.28946 C 133.35765,339.86769 121.05675,388.52604 112.11125,437.38104 C 104.36505,474.19087 95.988953,510.90602 88.097853,547.69379 C 114.03985,553.96494 137.59655,566.34982 158.37905,580.53219 C 164.07255,585.59423 166.84505,595.61488 158.59785,599.87815 C 147.96215,604.3825 138.02695,596.29481 128.16575,593.97896 C 112.91225,589.06051 96.810653,582.60655 80.160353,585.3621 C 77.720753,602.96248 73.039253,620.48088 70.560453,638.19477 C 63.547353,680.38751 60.669753,723.71363 68.097853,765.93363 C 78.110253,834.54307 107.67455,902.64622 163.03535,954.51127 C 165.05205,957.2382 168.80015,959.54229 172.55035,957.66781 C 188.83365,955.06718 207.82295,953.38403 219.19155,942.20026 C 220.84295,939.12154 216.75505,936.41282 216.42875,934.28643 C 229.41865,913.71523 233.67245,887.97338 221.87905,866.36484 C 220.21515,856.55197 237.09165,851.26 244.84785,857.78127 C 256.35685,864.50606 273.18625,866.333 280.10315,877.59939 C 293.06325,907.41724 282.53585,941.15814 261.91035,966.58609 C 247.68905,984.31923 225.77955,1001.425 198.47285,1000.107 z "/>\r
+    <glyph unicode="g" horiz-adv-x="270" d="M 141.59348,688.99154 C 84.926583,678.12999 39.268283,641.28677 14.920183,597.99863 C -3.2005165,562.21937 -4.2881165,521.58982 3.6378835,483.63111 C 14.583583,438.30815 43.841883,394.88788 89.718483,368.48294 C 109.56778,358.02343 135.84308,355.22064 157.18728,364.20416 C 169.28638,368.63068 180.16528,375.46378 189.15598,383.49778 C 190.50428,376.53233 191.98878,369.5853 193.40598,362.62922 C 146.83988,332.15963 97.069383,303.94117 60.375383,264.70561 C 36.379983,235.12488 19.896183,198.7199 26.747883,162.45932 C 33.666183,126.32558 62.596783,96.239086 95.741683,74.002106 C 131.47628,47.115126 166.28168,15.854466 213.21848,3.3236155 C 235.05488,-1.8134345 260.97678,4.7387355 272.93728,21.462226 C 286.94618,37.352616 286.28808,58.113796 285.93728,76.980206 C 286.06178,160.48807 263.41318,242.32652 252.91418,324.98962 C 250.44948,337.27774 247.58278,349.51019 245.43728,361.8417 C 263.39038,374.32688 284.97968,384.30653 298.81228,400.37629 C 301.71138,408.28367 288.68408,414.92231 281.06228,410.29862 C 266.53418,405.44031 251.02578,401.50009 239.03098,392.76389 C 235.67778,409.06141 232.73428,425.41668 229.81228,441.77205 C 251.83458,487.97211 256.50278,538.52867 255.09348,587.90401 C 265.40238,608.37449 257.15728,631.73443 244.87478,650.22066 C 237.18368,662.12516 222.18218,673.72969 204.81228,670.82671 C 200.40158,670.6001 196.46398,665.42476 192.85748,669.37871 C 177.49698,678.55502 161.09338,688.43791 141.59348,688.99154 z M 119.06228,653.02947 C 137.20828,649.68087 150.59338,638.06842 165.78098,629.87721 C 169.50938,631.2141 172.62048,633.40239 176.09348,635.10083 C 169.60498,607.93812 169.00398,580.0602 168.37478,552.44074 C 168.43208,514.05992 172.70458,475.7458 179.15598,437.80832 C 170.44918,421.40269 161.19528,404.15524 146.03098,391.47768 C 131.05008,394.0448 121.40068,404.88127 110.01018,412.57816 C 71.978583,443.73737 50.431383,488.06492 50.721583,532.64811 C 49.719683,570.82313 62.887483,610.91061 94.874783,638.82837 C 101.91298,644.55848 109.87018,650.10298 119.06228,653.02947 z M 199.96848,331.2871 C 209.57438,282.34054 215.10408,233.04314 224.21848,184.02041 C 231.18368,137.62911 237.41258,90.103396 232.87478,43.564456 C 215.04228,47.200436 202.38668,59.406776 187.51778,67.733766 C 156.28898,88.065556 124.97038,108.96534 99.530983,134.41452 C 78.706583,158.03883 70.180883,190.09866 81.968483,218.28227 C 92.265683,248.96911 115.90868,275.42732 145.02808,295.20101 C 162.57548,308.31244 181.02458,320.58474 199.68728,332.57342 L 199.86788,331.74719 L 199.96848,331.2871 z "/>\r
+    <glyph unicode="h" horiz-adv-x="270" d="M 23.972705,919.55732 C 7.8664048,915.65892 -7.9822952,908.13902 -19.808595,896.16042 C -22.757095,891.31542 -22.133795,885.10652 -19.808595,880.30682 C -25.166195,852.45702 -13.955995,825.11362 -10.183295,797.81404 C 5.2789048,724.30571 18.710005,649.84202 18.410205,574.38987 C 19.996805,512.01568 9.0062048,450.25645 7.1914048,388.04607 C 7.8476048,373.46073 10.542805,357.6783 20.316405,346.59015 C 28.546405,342.66703 35.935305,350.63527 42.371905,354.57969 C 50.539005,361.19499 59.306205,367.70667 65.535205,376.2197 C 67.482605,382.44961 66.691505,389.38939 69.753905,395.30156 C 78.906005,431.92561 69.120905,469.91033 73.075705,507.07497 C 73.705405,544.53481 76.387905,582.57742 88.535205,618.05124 C 93.536305,634.50198 101.828,649.85848 112.6602,662.89515 C 114.1586,665.33307 114.8309,670.26769 118.7227,669.19184 C 138.1089,673.13636 160.1881,673.28396 176.5977,660.40199 C 200.0392,644.59991 211.6987,616.41844 216.4414,588.96494 C 234.1517,513.27157 236.9678,434.60108 232.065,357.07499 C 231.6843,337.2008 229.7509,316.83125 233.4102,297.27137 C 238.4866,287.65195 252.6487,288.59314 259.3377,295.89868 C 268.8858,301.63285 279.1393,306.05717 288.5977,311.94223 C 286.8285,392.38132 295.4123,473.6035 281.6095,553.33491 C 276.2503,588.68407 270.2076,624.47246 256.5977,657.52534 C 239.5478,691.80369 205.3854,719.18295 166.6914,719.85302 C 132.8372,717.66127 100.6185,702.25446 74.597705,680.50676 C 71.302005,677.41727 67.973405,673.4009 68.724105,681.02201 C 62.544405,736.35203 49.093905,790.55806 41.378905,845.62722 C 41.303205,863.86162 43.147805,883.08582 36.285205,900.25172 C 40.721305,908.67852 33.500305,920.60882 23.972705,919.55732 z "/>\r
+    <glyph unicode="i" horiz-adv-x="180" d="M 116.81704,940.61061 C 88.225838,939.88822 63.787038,923.67016 42.058438,907.83073 C 24.379338,893.60586 8.7710374,872.92809 11.285737,849.92487 C 12.156837,843.36748 14.825437,836.99509 19.223238,831.80531 C 12.541337,810.95484 17.855238,785.7483 36.496938,771.98029 C 50.183738,760.76537 68.397138,753.24898 86.754538,754.16684 C 120.64554,771.41304 154.96914,793.4066 170.69144,827.72015 C 185.09984,860.75267 180.57314,902.25953 154.75734,929.26645 C 144.21284,937.23202 130.34534,941.08417 116.81704,940.61061 z M 97.848238,896.71913 C 109.36894,896.76864 116.57194,885.90307 118.25454,876.37129 C 125.79084,855.68839 122.66484,830.85433 106.16264,814.54947 C 102.38394,809.78595 98.507438,804.62698 93.442038,801.01967 C 82.139138,804.71657 70.939038,815.8083 74.692038,827.7592 C 79.331538,833.99596 87.431238,836.98788 92.760238,842.68169 C 98.772538,847.61371 107.32794,854.53916 104.75454,862.88415 C 101.75274,870.54512 90.717438,873.1217 83.379538,869.48106 C 80.007738,873.35344 73.769638,874.37415 69.192038,874.02562 C 71.793138,883.19319 78.967038,890.60266 86.692038,896.19129 C 90.282338,897.01967 94.154538,896.091 97.848238,896.71913 z M 97.379538,734.28815 C 79.618138,731.63277 59.725138,724.20133 52.160738,707.90042 C 49.871538,699.49139 59.128638,693.71099 60.629538,685.99855 C 79.413338,643.93129 98.628038,601.28193 103.88604,555.5415 C 108.67254,521.23317 106.39174,485.15119 90.962538,453.50754 C 74.835038,416.81428 54.003738,381.82029 41.567038,343.75 C 61.294738,360.48265 88.341438,365.15853 109.75454,379.19745 C 129.67574,425.47968 159.01904,470.09179 162.31704,521.07547 C 164.43614,574.98612 149.99234,628.01483 129.21404,677.89517 C 123.34074,696.60101 118.91284,716.9964 105.09824,732.08903 C 102.94354,733.72091 100.12324,734.48909 97.379538,734.28815 z "/>\r
+    <glyph unicode="j" horiz-adv-x="200" d="M 114.81427,688.36266 C 98.671667,678.46364 82.314367,668.77999 66.407967,658.6218 C 86.512767,646.50848 92.643467,624.66376 96.069367,605.14623 C 111.80107,533.1423 124.48567,460.61033 128.41727,387.41414 C 129.04867,376.49859 129.51287,365.5766 129.78297,354.65054 C 60.101167,327.77583 -13.574933,306.12891 -75.697133,267.40942 C -96.647933,253.71138 -117.36283,236.83724 -123.56073,214.34598 C -128.01473,196.10811 -118.99983,176.39685 -101.53053,165.20131 C -82.139833,151.24326 -58.944133,141.53725 -35.435733,133.41825 C -11.568933,125.97658 15.261367,120.2653 40.369067,127.14054 C 92.127867,139.741 133.51237,174.31021 155.94677,214.82188 C 177.42277,254.01904 182.13437,297.93228 184.68927,340.47566 C 186.21127,344.3292 192.53687,343.03779 195.72047,345.35811 C 225.15977,355.76633 255.47557,369.31278 271.72057,393.42122 C 274.56417,395.73957 274.77947,401.34545 269.43927,400.82366 C 246.62587,399.4592 225.98357,390.47183 205.77847,382.1283 C 198.95707,379.17288 191.58147,377.32607 184.75177,374.54773 C 180.69417,466.53199 166.17687,558.05647 144.90797,648.25312 C 139.73567,663.68737 130.44357,678.37884 116.15797,689.1764 L 115.34687,688.68509 L 114.81427,688.36266 z M 128.28297,317.90096 C 125.43987,279.30549 118.82347,239.54482 96.782967,205.26361 C 83.313967,192.90922 75.328767,176.23516 59.939267,165.49535 C 34.735467,159.57431 8.382667,167.47274 -14.844533,175.58435 C -33.739433,182.9562 -52.399433,192.24832 -65.404533,206.15601 C -71.896733,217.67232 -65.117533,231.14177 -54.654533,239.25693 C -23.376533,269.9368 23.659167,282.67709 66.652967,298.2542 C 87.316967,305.85142 107.83307,313.8928 128.53297,321.36589 C 128.44967,320.21098 128.36637,319.05586 128.28297,317.90096 z "/>\r
+    <glyph unicode="k" horiz-adv-x="300" d="M 8.9537039,343.75 C 12.163704,364.34295 18.291404,384.34547 23.203704,404.625 C 31.601804,435.16841 29.766004,467.11105 29.735004,498.40625 C 29.834504,505.00227 29.763904,511.5722 29.578704,518.15625 C 28.141304,518.94817 26.731704,519.73514 25.297504,520.53125 C 8.7140039,530.36066 -13.012796,538.49897 -19.389996,556.0625 C -24.537396,569.22263 -14.353296,582.37001 -2.7024961,590.46875 C 4.7580039,594.88187 12.154704,599.39054 19.485004,603.96875 C 19.449704,604.14048 19.426604,604.3283 19.391204,604.5 C 5.6981039,667.05066 -3.2040961,730.71427 -22.577496,791.96875 C -34.523796,836.37527 -55.159496,878.93118 -60.983796,924.75 C -42.751596,936.44218 -25.999096,950.38047 -6.6712961,960.28125 C -3.6135961,960.57824 -0.60759612,959.20844 1.2975039,957 C 10.801404,929.16913 18.485104,900.53954 27.360004,872.40625 C 42.109204,827.06468 56.067804,781.32331 65.610004,734.65625 C 70.923604,704.70948 77.669104,674.95711 83.766204,645.125 C 103.6779,657.72466 123.8729,669.9575 145.0162,681.0625 C 173.746,694.67314 202.5046,710.18573 235.5162,714.875 C 240.5081,715.17705 245.3887,712.18582 246.61,708.125 C 247.1071,701.76167 240.7377,696.47676 235.5162,692.4375 C 219.6672,682.56325 204.2284,671.82684 186.3287,664.4375 C 156.5452,653.79351 133.3431,634.69205 108.0787,618.15625 C 102.8141,613.90654 97.059304,610.17426 91.110004,606.65625 C 92.709304,597.32801 94.160204,587.97348 95.391204,578.59375 C 96.175204,568.9705 96.790104,559.33321 97.266204,549.6875 C 195.413,494.04075 302.0505,449.36219 400.985,394.5625 C 379.8873,383.01456 358.6479,371.67226 337.4537,360.25 C 260.6367,404.60524 178.347,441.78048 98.391204,482.0625 C 98.334204,477.79947 98.240804,473.54212 98.141204,469.28125 C 99.197304,437.7523 88.408904,407.42101 81.672504,377.03125 C 57.374604,366.10602 33.193004,354.89916 8.9537039,343.75 z "/>\r
+    <glyph unicode="l" horiz-adv-x="200" d="M 130.13869,958.2869 C 106.66989,946.8802 83.203887,935.46809 59.763687,924.00782 C 39.840387,867.66058 16.077287,811.16208 12.594987,750.98933 C 5.9021868,689.28184 -2.3558132,626.15167 11.357487,564.80904 C 18.056087,531.74615 31.601587,500.33293 49.312787,471.35746 C 72.721687,431.88503 101.61299,394.81054 137.41999,364.99189 C 164.25209,345.46552 202.52389,336.43103 234.17949,350.79177 C 252.81249,358.90323 269.94999,370.22291 285.10749,383.34184 C 290.94989,392.49752 280.01439,405.90147 269.41999,401.72177 C 263.72209,400.10316 258.12299,396.49301 251.89439,397.9433 C 230.24869,395.46478 205.56849,397.30315 189.54499,413.01858 C 150.49929,444.83528 122.72179,487.22844 99.497987,530.56014 C 82.951487,563.27748 74.502387,599.13835 72.730187,635.36763 C 69.775587,684.72699 77.580087,733.9468 82.680787,782.8777 C 87.742187,820.53228 97.832687,857.34224 112.93959,892.42378 C 121.19109,914.62825 128.25899,937.24332 134.04499,960.1698 C 132.74289,959.5421 131.44079,958.9145 130.13869,958.2869 z "/>\r
+    <glyph unicode="m" horiz-adv-x="550" d="M 190.88772,698.6455 C 152.91142,683.8891 115.13102,662.3072 98.012716,629.08393 C 80.205516,594.74873 81.048616,555.50256 71.606516,520.0164 C 59.008316,548.91688 49.217316,578.73629 34.121916,606.83073 C 20.810516,634.9878 7.2007157,663.04447 -6.1434843,691.19062 C -27.183684,682.13239 -48.283284,673.17176 -69.299784,664.07463 C -40.643384,610.78093 -14.313084,556.46353 11.539616,502.12875 C 26.384116,462.33666 23.357616,418.53735 43.512716,380.00067 C 46.959616,375.80617 52.368816,371.52853 50.612716,365.87895 C 50.896116,359.38452 51.175716,352.88998 51.606516,346.40107 C 72.316816,350.33452 86.724816,365.29879 106.88772,370.34075 C 112.69162,372.34051 117.12462,377.68586 114.93022,383.0182 C 110.93852,454.2137 136.14582,523.26794 146.01272,593.38438 C 150.11812,611.44048 157.81012,629.71091 168.04402,645.46365 C 192.27122,624.36088 195.43612,593.58758 203.54972,566.28389 C 209.59262,544.06044 212.67182,520.61144 206.36802,498.15223 C 201.16992,473.049 191.49562,448.16386 192.20022,422.47267 C 196.57602,414.77484 209.12622,415.67661 216.54402,419.40145 C 233.39232,425.36254 251.97002,432.83084 258.95022,448.19736 C 270.00342,465.43576 278.61282,483.67301 283.08402,502.98432 C 292.11062,535.52859 299.10982,569.06097 318.04402,598.7393 C 326.57312,613.9923 332.75232,630.61632 344.41902,644.30874 C 351.86452,645.51588 358.95012,642.11223 366.16902,641.2112 C 406.38552,630.71038 436.10902,603.02931 456.73992,573.26245 C 478.79722,542.40372 490.77392,506.92755 493.47992,471.01189 C 498.43592,425.74865 496.67132,380.12833 494.13772,334.85126 C 494.94832,330.82833 500.53972,332.65142 502.81302,334.59759 C 521.76372,342.55918 540.68112,350.57663 559.60652,358.58097 C 560.82902,419.12333 563.70442,480.64278 547.46722,540.01504 C 533.46882,583.26603 506.06802,623.95084 466.60452,654.23356 C 437.66682,676.41237 396.84972,692.26728 357.23012,683.16442 C 327.69982,677.25879 303.05152,660.70313 285.63382,640.22276 C 276.24712,629.60801 268.50462,617.97861 261.76272,606.03665 C 254.41752,635.9135 242.84262,667.79759 213.88772,687.85689 C 206.98202,692.17926 199.06792,697.13174 190.88772,698.6455 z "/>\r
+    <glyph unicode="n" horiz-adv-x="320" d="M 47.105883,772.53106 C 25.114383,760.7355 3.1723834,748.83609 -18.769117,736.93638 C -6.6879166,666.49251 10.808683,597.16349 21.647083,526.48988 C 24.883983,485.71216 13.804683,443.80607 25.043383,403.84667 C 27.338483,399.21882 31.023183,394.80353 29.355883,389.15093 C 29.379183,378.90524 40.731583,369.86678 49.574583,375.61635 C 55.701583,378.91678 61.053983,384.65439 68.355883,384.57313 C 79.741783,387.96075 89.307983,395.60115 99.480883,401.82308 C 102.45778,483.47549 97.528483,565.12457 94.478983,646.66825 C 94.938083,651.5146 95.070383,656.46957 96.480883,661.13623 C 124.41838,654.79787 150.41748,640.16061 174.07458,623.45169 C 225.36678,583.65939 257.39968,517.89373 257.01748,450.25722 C 258.22958,408.38827 249.26288,367.41276 243.60588,326.25496 C 242.38238,307.80379 243.30668,289.2978 242.94958,270.82302 C 265.96188,283.45365 288.83988,296.37135 311.76208,309.20404 C 308.96508,358.41477 325.85338,405.91104 324.83828,455.06559 C 326.14168,509.51211 314.10988,565.23111 284.60588,610.24891 C 254.11658,659.02067 207.39278,695.25846 154.91308,712.81337 C 128.46838,723.48805 97.255483,730.11878 70.574583,716.46871 C 66.541283,714.5218 62.724383,712.24913 59.105883,709.50243 C 55.184983,730.84565 51.717483,752.32652 49.699583,773.92434 C 48.834983,773.45988 47.970383,772.99542 47.105883,772.53106 z "/>\r
+    <glyph unicode="o" horiz-adv-x="320" d="M 232.88742,712.23859 C 225.99782,711.59371 220.54992,704.81367 213.26242,707.00686 C 166.08752,703.49344 121.79792,685.59705 82.093722,663.59293 C 45.605522,641.36698 18.237822,607.01243 8.8963222,568.31854 C -8.1920778,511.67467 0.16492222,449.19831 32.400622,398.0876 C 43.723122,379.68773 58.713722,362.0141 80.574922,352.84049 C 109.66032,339.4446 146.09192,338.08264 175.87912,350.91564 C 210.37362,363.395 243.96462,380.2295 269.76242,404.40567 C 296.18442,429.60597 311.80832,462.38622 318.88742,495.98759 C 328.52382,535.36391 326.18702,577.50401 308.69602,614.78517 C 298.49932,639.58416 284.33172,663.18611 266.76242,684.2715 C 270.55502,691.60621 262.98702,699.01021 255.29372,700.8847 C 245.73842,701.69168 243.05722,712.90896 232.88742,712.23859 z M 195.07492,658.47492 C 200.46452,656.75098 201.70392,650.67835 206.04372,647.64989 C 232.33672,616.38424 249.89652,578.9876 255.78582,540.20943 C 258.87812,505.48853 251.10522,470.39628 236.57492,438.32803 C 225.04692,416.07701 203.97702,395.46263 175.76242,391.27083 C 145.12692,386.44883 111.71112,401.06362 98.731222,426.52892 C 70.204122,469.52823 60.389822,522.46141 74.074922,571.23431 C 80.003222,596.07139 89.510722,622.23817 110.69992,639.99722 C 127.42542,648.86546 146.77402,652.01159 165.41112,656.23627 C 175.17582,657.73359 185.12542,658.47721 195.07492,658.47492 z "/>\r
+    <glyph unicode="p" horiz-adv-x="500" d="M 134.67644,714.91571 C 118.16094,714.25055 100.88204,710.15125 89.613935,699.50716 C 79.909335,692.6802 65.197035,688.32109 62.176435,676.77503 C 60.653935,673.32311 65.207335,670.15044 62.363935,667.19377 C 58.389635,659.92056 55.206735,652.2992 52.676435,644.56663 C 38.456535,645.538 22.859335,649.22059 9.1483354,644.49327 C -14.057265,630.35491 -37.241765,616.19168 -60.323565,601.91088 C -25.777265,601.29618 8.7835354,600.00913 43.145235,596.84468 C 38.002335,539.73927 44.285235,482.35096 38.363935,425.27676 C 30.991335,427.84201 23.534035,430.25316 15.988935,432.36415 C -6.4972646,419.81072 -28.808865,407.03098 -51.354765,394.56464 C -22.882665,387.56423 3.8436354,376.38514 31.926435,368.55122 C 24.404035,322.23358 22.918535,274.58021 4.3911354,230.0635 C 0.42533536,218.4881 -3.3895646,205.86412 0.27023536,193.88595 C 5.9151354,183.72464 23.397735,181.62614 33.270335,188.59606 C 46.924635,195.16124 61.263935,200.92933 74.145235,208.42822 C 80.536435,216.37919 75.209535,226.75942 79.869035,235.19389 C 85.543935,249.44691 91.312735,263.71367 93.427135,278.71447 C 98.512335,305.19109 98.827735,332.15487 99.051435,358.94384 C 194.82224,356.87499 288.08564,382.90568 372.70774,418.63562 C 415.24674,436.13446 457.82744,458.59461 482.15094,493.75177 C 492.63204,508.66424 501.43444,527.10375 493.80144,544.31916 C 483.42474,567.53343 456.41774,581.97561 429.30144,589.02232 C 373.69814,604.55437 313.80734,603.43754 257.61014,616.81793 C 215.88324,623.78317 173.95564,629.8659 131.98894,635.72045 C 133.43104,654.03323 134.27374,674.49362 121.27024,690.05731 C 130.43814,696.07053 135.45624,705.80234 137.58274,715.30952 C 136.61394,715.17822 135.64514,715.04691 134.67644,714.91571 z M 132.86394,586.31858 C 180.08204,580.02662 226.83244,571.52161 273.72694,563.82431 C 319.46804,557.86269 368.06794,555.98383 408.98894,536.54923 C 419.23604,531.05457 430.17444,521.49277 427.17644,510.45705 C 421.53194,495.59463 411.73534,481.56146 399.14524,470.00624 C 385.49694,457.81634 367.11554,450.33889 348.68444,444.58599 C 276.03504,418.32026 197.02114,400.0363 117.15114,405.39247 C 110.98354,405.89376 104.83484,406.74194 98.738935,407.84701 C 96.933735,468.52192 115.15064,527.67236 125.77024,587.28975 C 128.13474,586.96606 130.49934,586.64237 132.86394,586.31858 z "/>\r
+    <glyph unicode="q" horiz-adv-x="400" d="M 407.29139,752.87318 C 381.84679,753.72334 355.38439,745.45222 338.19759,727.48029 C 335.80579,733.76039 327.30299,731.09026 321.91639,732.12385 C 259.85679,735.7049 199.94939,712.20679 149.80409,679.63943 C 109.02929,654.22021 73.393893,621.13085 48.610393,581.31722 C 19.219893,537.03399 -0.52260724,484.42627 5.6095928,431.5909 C 9.4058928,403.5335 19.847693,375.03568 41.572593,355.13984 C 68.816593,344.54871 99.935793,352.69799 124.38509,365.95529 C 187.42119,400.38174 234.48319,454.11972 282.76009,504.2935 C 262.96349,402.8314 237.90409,301.89067 229.04139,198.90316 C 230.18249,187.46947 241.21759,177.10016 236.07259,165.39866 C 239.03019,160.50778 245.02949,166.04977 248.28149,167.73979 C 266.81239,177.96936 285.56309,188.08948 304.22889,198.19773 C 305.99379,209.20015 293.88459,218.29011 298.25019,229.25955 C 309.70559,356.4968 344.13259,480.57439 365.32739,606.47216 C 373.82519,632.00894 389.37179,655.07734 395.79629,681.29885 C 403.09829,704.66951 407.61459,728.7843 409.63509,753.04954 C 408.85379,752.99075 408.07259,752.93197 407.29139,752.87318 z M 332.16639,720.27981 C 309.17949,687.08078 307.88179,646.20671 300.29139,608.36308 C 295.29929,593.71521 284.47089,581.43126 276.00859,568.35093 C 238.86499,517.8852 191.41259,475.51017 146.70149,430.984 C 132.42789,418.18647 117.77179,404.8657 99.353893,397.54931 C 92.835193,398.37626 91.207993,405.98544 87.510093,410.12823 C 64.549693,446.73018 67.772893,492.92806 84.098093,531.32615 C 103.30389,578.77611 135.78999,621.47857 177.47889,653.44715 C 203.46409,672.11962 236.02149,681.94841 268.72889,680.63275 C 282.45249,682.33275 291.04749,693.96403 302.41639,700.17712 C 312.21179,706.82076 322.93969,714.06047 332.16639,720.27981 z "/>\r
+    <glyph unicode="r" horiz-adv-x="400" d="M 387.40727,713.59355 C 323.24597,713.3814 256.77937,698.45541 207.91037,662.39939 C 192.90647,650.65127 180.93637,636.19723 171.78227,620.80106 C 135.11837,647.58858 90.447269,664.97972 48.250969,684.87639 C 28.213569,672.63042 8.1445693,660.42075 -11.874031,648.15323 C 37.603269,628.58785 90.007569,610.50979 128.62597,577.33157 C 136.57667,569.75246 145.28357,562.06785 149.28227,552.47306 C 149.87887,541.83709 147.17517,531.27395 147.82597,520.60634 C 146.88747,471.18846 153.60367,421.53418 169.06347,373.87029 C 173.18257,363.33108 180.39987,350.95161 194.53227,348.38189 C 208.05297,346.77168 218.82657,356.15983 224.56217,365.36892 C 235.96607,380.95758 242.82247,398.66877 248.84477,416.21099 C 253.96007,442.12161 250.37507,468.66524 246.53927,494.54652 C 241.16667,522.70911 230.69797,550.29955 214.15727,575.23162 C 219.52097,604.09745 232.17637,632.95413 256.28227,654.55808 C 281.46907,659.92893 305.11757,672.4216 331.87287,670.8736 C 379.64817,673.05326 427.46317,668.44736 474.15727,660.17551 C 495.63797,672.53854 516.88687,685.14858 538.21977,697.71262 C 488.57577,706.40398 438.30167,714.08006 387.40727,713.59355 z "/>\r
+    <glyph unicode="s" horiz-adv-x="300" d="M 196.1645,741.55796 C 158.9498,738.77859 127.1968,717.96756 96.019897,699.95557 C 69.358497,682.49638 42.526897,662.19768 28.352497,633.48511 C 14.397897,599.64714 16.069097,557.32621 40.883297,528.66306 C 61.331697,506.42453 93.224997,498.2973 123.1958,497.74326 C 158.4535,494.88752 195.6447,487.26897 222.477,463.58316 C 234.0492,453.75271 238.8758,438.49908 236.977,423.88128 C 236.1623,419.27174 235.3372,412.95283 231.4291,410.20956 C 196.5382,404.1825 161.0105,391.67911 125.4458,399.86616 C 85.394397,408.55939 51.458297,432.51094 18.633297,455.19468 C 8.8434971,459.49905 -0.62960287,452.32895 -8.0671029,446.93865 C -21.277703,438.64423 -34.688303,430.63572 -48.023003,422.51838 C -4.9424029,393.67658 38.105697,360.69741 90.664497,350.71567 C 155.089,339.45667 222.0039,358.65749 275.5278,393.31731 C 301.7091,412.43822 308.0898,449.75912 296.2583,478.33144 C 286.9624,502.50512 263.318,517.72639 240.1958,528.17852 C 208.5978,542.08018 173.5568,545.25815 139.4265,548.37588 C 120.09,550.72773 98.953597,559.15013 90.633297,577.4805 C 80.674497,598.60564 82.936097,624.48993 93.664497,645.10411 C 106.9145,669.10184 131.6372,687.90073 159.5083,692.01376 C 187.6803,694.22338 211.5257,676.66878 232.6645,660.82147 C 242.9283,652.84573 252.4422,644.28266 262.0395,635.59505 C 281.654,649.41087 301.3185,663.16041 320.852,677.08382 C 287.8304,698.94363 258.9281,729.02128 219.0395,738.98387 C 211.6179,740.94274 203.8936,741.81891 196.1645,741.55796 z "/>\r
+    <glyph unicode="t" horiz-adv-x="300" d="M 260.5372,966.24459 C 220.0084,960.31259 187.9435,936.30454 163.6012,910.60783 C 133.6615,878.80604 108.1785,844.16341 84.849401,808.8735 C 73.926001,791.59733 63.785201,774.01047 54.683801,756.038 C 26.053601,766.00931 1.2277008,782.47275 -17.876899,802.28708 C -37.808799,790.49533 -57.839399,778.83854 -77.636599,766.88752 C -47.817499,739.86648 -9.5656992,719.06684 33.359601,708.36328 C 4.1576008,630.71679 -2.6363992,546.77156 18.414601,467.1997 C 29.987301,426.89835 50.843101,386.86243 88.322901,358.11585 C 107.7207,344.63873 135.5925,338.87278 160.1646,345.67149 C 187.6196,351.82402 212.2462,364.21402 234.6111,378.20479 C 254.1201,394.56451 257.4849,418.76696 272.2917,437.68988 C 270.0445,437.37182 263.7625,433.35175 259.6778,431.71746 C 237.4722,421.44007 211.5905,415.69288 191.671,402.46437 C 186.8589,396.52426 185.4672,387.99697 178.2866,383.82744 C 146.956,386.43833 122.0488,406.94858 109.9176,429.66598 C 73.997901,485.83179 67.826401,551.12277 73.814101,613.40794 C 76.605701,643.17953 82.308301,672.81364 92.438801,701.52633 C 115.4185,701.25111 139.1546,699.25141 161.4994,704.48289 C 186.3368,719.97033 211.3303,735.29427 235.9399,751.02233 C 194.3985,745.40815 152.037,741.37405 109.9064,744.92451 C 140.1926,810.51214 183.9638,872.1159 240.9074,924.6556 C 247.1664,930.7752 250.8634,938.70266 257.2316,944.51908 C 265.296,948.13464 272.4959,957.33462 266.403,964.37029 C 264.9721,965.69139 262.7138,966.47189 260.5372,966.24459 z "/>\r
+    <glyph unicode="u" horiz-adv-x="300" d="M 143.82196,719.75843 C 115.29246,719.2125 86.886961,709.49453 65.470961,691.47401 C 48.029361,677.56746 36.385461,658.13951 29.759461,637.46562 C 18.016061,605.04059 10.322861,571.06226 7.3857606,536.8335 C 5.2995606,474.16673 32.811161,411.17087 80.978161,368.90176 C 102.90526,351.40948 134.19436,342.90374 161.81256,352.26474 C 184.11466,358.66387 204.99356,369.19299 224.04066,381.89531 C 249.19716,404.64044 260.99126,437.50756 267.56556,469.3696 C 276.18516,515.53314 273.22276,562.73579 273.82196,609.41748 C 273.06186,632.83923 266.11266,656.22747 252.00946,675.4906 C 245.62466,685.14615 248.57256,697.15563 243.64966,707.36887 C 240.39186,708.98252 233.95666,702.99468 229.47836,701.69453 C 213.57756,693.83678 197.64596,686.04896 181.85316,677.99967 C 182.08706,660.67334 187.35326,643.18127 199.16566,629.8786 C 215.08976,599.77265 208.89676,564.83471 209.90556,532.23259 C 209.84106,488.97265 208.46256,443.20584 184.72816,405.16431 C 182.53756,402.55661 181.69886,396.46973 176.88546,398.27908 C 155.57916,399.0792 132.35236,405.40237 119.84546,423.20408 C 80.049461,468.20574 60.785861,531.13543 75.913861,589.08278 C 83.494161,622.09692 96.949861,653.74816 110.38446,684.95949 C 120.40326,691.84732 130.99236,698.28911 138.32196,707.9895 C 141.79336,711.95625 145.08176,716.11808 148.47816,720.17659 C 146.92606,720.03717 145.37396,719.89775 143.82196,719.75843 z "/>\r
+    <glyph unicode="v" horiz-adv-x="300" d="M 302.42197,734.39486 C 282.02297,728.67141 261.23597,722.03651 243.92197,709.931 C 226.00297,694.45762 212.72797,674.52495 194.80897,658.98447 C 160.45897,623.36596 147.20177,574.83798 133.32897,529.44209 C 128.80947,514.25453 124.54727,499.09142 119.60937,484.0517 C 107.83667,527.97015 90.993871,570.39231 73.140571,612.29862 C 62.816171,641.00089 56.103971,673.1914 66.203171,702.79211 C 69.329771,707.46116 68.999071,716.75661 61.453171,716.68169 C 53.513471,715.59473 47.561371,709.63395 40.043671,707.2127 C 27.276671,701.02354 14.529071,694.79806 1.7968712,688.54387 C -10.046429,651.74257 0.46327124,612.53178 14.276671,577.63629 C 33.252571,532.68602 50.796871,487.22895 62.046871,439.90342 C 70.178471,412.09386 77.410371,383.0756 94.390671,358.89516 C 104.41147,347.94965 123.57037,341.96889 136.64067,351.577 C 144.78377,358.34955 151.21107,366.98472 158.64097,374.33815 C 161.20297,379.64334 157.36797,386.0792 161.30797,390.98402 C 178.40897,438.38987 177.54197,489.99854 194.85597,537.30649 C 207.41897,578.12343 219.01997,621.74493 248.92197,654.25278 C 262.58497,668.37148 276.83197,681.97785 289.28297,697.07604 C 296.14497,704.96063 305.04997,711.46172 311.79697,719.42975 C 315.14697,725.87258 310.65297,735.01726 302.42197,734.39486 z "/>\r
+    <glyph unicode="w" horiz-adv-x="700" d="M 102.5163,736.81337 C 76.567303,726.52044 50.742303,715.95157 24.641303,706.01708 C 3.413303,618.988 -9.165697,528.59699 2.238303,439.3225 C 8.529303,407.34289 25.064303,374.60604 55.922303,358.38634 C 87.830303,342.50033 127.3993,348.36986 157.7973,364.7786 C 210.6293,390.31029 247.9473,435.97577 284.1053,479.53588 C 297.3183,495.93703 309.7823,512.84831 321.6103,530.20034 C 326.5153,482.67255 333.1913,435.06755 345.3363,388.7058 C 355.3893,362.54766 380.0313,340.02039 410.2033,338.67196 C 447.6443,335.75192 481.9743,353.61231 513.3393,370.8093 C 589.8833,413.39804 660.9413,464.9934 725.2033,523.21075 C 784.6743,577.16774 838.8693,636.62552 887.6723,699.7144 C 884.9673,704.64534 878.4353,703.88039 874.5563,700.88002 C 846.2783,687.43461 813.6253,681.57662 787.7033,663.51168 C 704.8233,567.14824 609.4963,478.87675 495.8443,416.1153 C 475.9663,405.33585 453.9083,393.5534 430.1413,395.87362 C 415.5083,397.73052 408.8133,412.95564 405.6723,425.05689 C 394.1093,480.31882 391.6953,537.1637 391.2973,593.5254 C 391.8893,613.98641 396.9783,633.95748 399.9533,654.13237 C 400.2283,667.22413 391.7073,682.22202 376.8913,683.46495 C 359.2263,685.37429 343.0353,675.69866 330.0783,665.39345 C 318.6133,653.03937 316.5463,635.77776 307.9613,621.75603 C 269.2183,543.5981 214.8333,472.11585 147.6983,414.4102 C 132.8993,404.56695 111.1323,398.55769 95.453303,410.03216 C 74.497303,425.20942 67.674303,451.77595 65.259303,475.68223 C 60.361303,524.48708 67.264303,573.41366 72.517303,621.90846 C 79.043303,661.98043 90.428303,701.22702 106.9853,738.60556 C 105.4953,738.00813 104.0053,737.4108 102.5163,736.81337 z "/>\r
+    <glyph unicode="x" horiz-adv-x="300" d="M 402.2624,720.41558 C 372.0794,720.15703 345.1394,705.12315 320.6164,689.81926 C 261.7534,656.80627 204.5774,621.05063 148.8564,583.40043 C 122.2334,614.45413 97.240405,646.77761 74.794405,680.71786 C 54.224405,668.25079 33.327405,656.34577 12.731405,643.94757 C 38.100405,609.89162 65.395405,577.21158 93.762405,545.37555 C 29.594405,498.91183 -34.619595,452.47798 -98.793595,406.05931 C -115.0096,393.51587 -131.4226,380.68869 -142.7996,363.82381 C -146.9316,347.69432 -124.9396,332.72026 -110.5496,342.34699 C -66.407595,360.66852 -32.845595,395.34593 6.5914047,420.84463 C 46.711405,450.27304 86.804405,479.73433 127.1064,508.93373 C 163.6584,470.17013 200.8224,431.97066 238.2314,393.96285 C 258.6574,405.93311 279.0884,417.89452 299.5124,429.86696 C 258.9364,467.96789 218.7544,506.67708 181.0124,547.31704 C 244.0664,592.45803 311.8524,631.21205 378.5924,671.23523 C 393.8734,682.98013 406.1694,701.00793 404.3564,720.56489 C 403.6584,720.51505 402.9604,720.46521 402.2624,720.41558 z "/>\r
+    <glyph unicode="y" horiz-adv-x="450" d="M 56.675615,717.30011 C 25.547615,713.53594 3.8896153,687.62012 2.9136153,662.12558 C -0.23438467,624.3655 11.454615,587.21502 21.393615,550.82471 C 46.901615,476.7692 103.47962,408.79641 183.61262,369.93813 C 207.60562,358.24245 236.07962,352.93164 263.83162,355.4483 C 245.36362,349.00475 225.93562,344.75323 207.91262,337.34631 C 139.22762,312.56501 74.265615,277.55267 26.267615,228.95862 C 11.815615,212.92891 6.4186153,191.07358 14.362615,171.83188 C 23.808615,144.9013 50.352615,125.32998 77.027615,109.88438 C 105.83262,92.897141 137.53762,78.833171 171.26262,70.128181 C 209.36162,66.538921 245.89762,84.871781 267.76862,110.01382 C 306.02562,151.82783 321.76862,203.96214 337.33662,254.23914 C 345.65862,282.82259 352.61662,311.6314 360.14362,340.38091 C 420.58762,351.79879 482.58362,357.7475 542.55062,371.06682 C 563.63762,381.29504 580.87762,396.02157 597.09962,411.05858 C 599.76862,414.2712 606.62962,419.58804 606.63662,421.41477 C 527.75762,406.52613 447.68462,395.6135 368.95662,380.0443 C 371.94362,398.4553 373.17162,418.70667 388.17762,433.51665 C 426.95962,485.15175 450.71162,545.84996 448.76862,607.34018 C 447.62362,618.64714 439.59562,631.31929 424.98762,632.93367 C 406.99462,635.48466 389.90662,626.25861 378.01862,615.79254 C 366.22962,603.36844 364.43162,586.98935 357.95562,572.48828 C 340.34462,522.90538 329.96462,471.73557 320.58162,420.62621 C 299.14062,398.16959 257.52062,390.48509 227.89362,405.92641 C 179.09162,426.56015 141.48762,461.95849 113.20662,500.60899 C 86.186615,539.14068 68.050615,583.37136 69.353615,628.57311 C 71.647615,650.23679 75.326615,672.65647 69.956615,694.01665 C 77.801615,702.52967 70.513615,718.14975 56.675615,717.30011 z M 301.51862,326.57362 C 296.12662,307.78494 292.25962,288.72313 286.30662,269.99343 C 271.87662,221.79673 252.97462,173.82394 220.95862,131.75397 C 214.03962,123.78791 205.23962,115.9902 193.17562,113.97754 C 174.97562,117.96031 159.31962,127.76361 142.20762,134.17772 C 113.77762,147.57673 84.782615,164.59508 71.675615,190.6266 C 66.748615,204.49881 74.347615,219.87376 87.853615,228.38678 C 140.39762,275.89793 212.52962,304.9319 285.73762,323.3712 C 290.66562,324.27411 298.05462,327.16284 301.51862,326.57362 z "/>\r
+    <glyph unicode="z" horiz-adv-x="450" d="M 87.354795,765.50427 C 68.417795,762.25055 51.917795,749.6094 42.636795,733.84169 C 40.850795,723.42348 50.980795,714.08329 61.386795,714.03772 C 82.286795,694.4921 112.78979,691.23609 139.72979,683.62972 C 216.30679,665.5808 295.81179,660.88698 372.21279,642.26341 C 382.20379,639.24817 391.93379,635.48785 401.26179,630.93855 C 303.05079,553.72484 180.83879,511.10426 79.474795,437.96436 C 55.523795,421.52169 30.298795,403.46642 18.448795,376.92144 C 14.194795,359.34135 31.247795,341.63182 49.691795,342.60652 C 74.340795,340.29754 98.953795,345.15013 123.63479,344.09802 C 199.94579,346.08602 276.44979,342.34276 352.63679,347.43934 C 376.85379,356.53253 394.17079,376.01894 414.25279,391.01777 C 420.90279,396.84454 427.46779,402.74008 433.82379,408.88263 C 388.25879,395.6374 340.21779,392.84606 292.72979,393.14092 C 235.37679,394.18346 178.02179,393.32051 120.67079,392.46639 C 110.14879,392.32593 99.627795,392.18308 89.104795,392.06561 C 128.51879,424.79393 172.91279,451.06622 217.50979,476.78768 C 297.88479,521.32655 384.11379,559.18235 453.66779,619.07994 C 463.30079,627.66912 467.61979,641.85472 462.04279,653.61002 C 455.91979,669.56284 439.17079,678.43295 423.13679,683.54014 C 369.89579,703.54335 311.41879,701.27432 256.34379,714.2585 C 225.08379,720.89465 195.66479,733.0062 165.63779,743.11747 C 144.78779,749.70971 123.18579,754.69703 101.44879,757.0211 C 98.679795,761.84945 93.368795,765.81224 87.354795,765.50427 z "/>\r
+    \r
+    \r
+    <glyph unicode="." horiz-adv-x="200" d="M 55.585367,409.10362 C 7.8423655,411.14062 85.866367,350.69062 60.458367,406.13862 C 65.830367,440.55062 89.644367,459.41062 119.88037,472.10162 C 80.964367,504.83162 122.45637,495.51562 113.96737,424.62762 C 107.41337,401.79862 92.039367,391.06362 73.733367,379.31162 L 119.43237,348.73762 C 138.42437,362.06562 154.83937,374.48762 161.86337,398.47062 C 176.55137,465.10762 137.48937,488.96562 74.687367,503.25462 C 42.857367,490.12062 17.270366,465.93762 11.301366,430.76562 C 22.070366,394.54662 60.182367,363.52862 100.50637,376.46662 L 55.585367,409.10362 z "/>\r
+    <glyph unicode=":" horiz-adv-x="250" d="M 93.641678,456.21979 C 54.940408,456.41772 40.825408,471.39867 38.624728,508.50166 C 46.156858,546.87169 86.934438,577.41105 125.40007,568.83668 C 123.54235,570.58054 121.55407,572.40791 119.4502,574.31785 L 175.81946,609.18641 C 197.02002,592.18206 205.10579,579.42474 200.08255,550.95966 C 164.8335,433.23425 168.51049,521.17249 94.105308,456.21979 C 93.952738,456.22006 93.793498,456.21898 93.641678,456.21979 z M 145.49053,494.29286 C 145.71801,494.32322 145.95638,494.30298 146.18597,494.33496 C 152.13101,497.47754 158.01906,500.65155 163.91972,503.86375 C 165.97167,504.98076 167.0683,505.58763 167.35822,505.76114 C 166.27074,505.24102 156.75182,500.23707 145.49053,494.29286 z M 120.37745,495.13612 C 128.10715,505.04728 136.64392,516.39453 138.88392,523.80682 C 142.96679,539.38493 141.45698,548.734 136.14074,556.86245 L 99.630248,532.57668 C 100.87907,511.62454 106.58513,499.41433 120.37745,495.13612 z M 69.108198,687.06116 C 53.911278,687.50708 40.106348,696.57107 27.265887,720.03247 C 8.4168309,814.85909 49.200348,817.01634 77.337498,824.38532 L 121.65248,852.9717 C 134.05318,849.08746 147.89495,848.92002 157.66077,839.35318 C 183.40759,803.69492 198.83781,767.52235 162.41288,731.6694 C 125.61828,711.09719 95.298498,686.29252 69.108198,687.06116 z M 133.8613,722.94163 C 133.91718,722.95499 133.95378,722.97617 133.97715,722.98386 C 133.95526,722.98103 133.90556,722.95 133.8613,722.94163 z M 114.62082,724.92335 C 132.42542,751.40834 120.305,779.09911 99.823358,806.71918 C 99.615408,806.89795 99.416238,807.05446 99.205198,807.22513 C 94.689848,790.13281 84.277178,763.86289 86.803258,749.96805 C 95.418418,735.05888 105.79029,728.08239 114.62082,724.92335 z M 33.795348,790.27569 C 33.798563,790.27528 33.828977,790.27488 33.833922,790.27569 C 33.83726,790.2765 33.83009,790.3167 33.833922,790.31778 C 33.845296,790.32102 33.895986,790.31239 33.911193,790.31778 C 35.866706,791.07455 60.917718,804.87589 79.385238,814.7722 C 79.121898,814.81727 78.837548,814.85464 78.573838,814.89876 C 64.100918,807.34872 46.711598,798.14711 37.349818,792.55248 C 35.103763,791.21028 34.014427,790.48792 33.833922,790.31778 C 33.826257,790.30915 33.795843,790.28014 33.795348,790.27569 z M 39.822488,795.88327 C 56.085748,804.0159 68.592278,810.24911 78.032938,814.98309 C 75.515138,815.39783 72.968408,815.77696 70.460378,816.24797 L 39.822488,795.88327 z M 88.271408,828.09565 C 90.989738,829.36148 93.370678,830.86935 95.341638,832.81788 L 88.271408,828.09565 z "/>\r
+    <glyph unicode='"' horiz-adv-x="250" d="M 53.753525,994.54472 L 4.2855255,973.39822 C 10.451525,944.95025 26.532525,918.19815 39.222525,891.28055 C 52.768525,865.73985 64.463525,839.51335 77.472525,813.80565 L 125.03553,836.52625 C 111.82153,862.02915 99.887525,888.02985 86.441525,913.47565 C 74.152525,939.85925 58.226525,966.42162 53.753525,994.54472 z M 150.81653,994.54472 L 101.31653,973.39822 C 114.55053,946.19865 133.61753,919.95695 152.72253,894.95355 C 167.87253,872.71905 176.97653,847.83835 186.59753,823.59225 L 234.66053,846.02315 C 224.74753,870.46145 215.38653,895.52525 199.84753,917.88325 C 181.34753,942.11255 162.18853,967.78502 150.81653,994.54472 z "/>\r
+    <glyph unicode="!" horiz-adv-x="500" d="M 92.734266,951.7327 L 9.8907663,929.0028 C 11.383066,921.1715 13.629766,913.3889 16.484766,905.6525 L -49.978434,879.6249 C -23.266534,877.4202 3.6477663,876.0291 30.719366,875.2257 C 52.550566,836.0936 86.036166,798.0412 113.35357,760.5907 C 176.79817,690.2033 213.34417,615.1411 256.17087,541.0511 L 336.18807,564.9371 C 323.56407,586.2103 311.26607,607.5214 298.66507,628.7829 L 320.12207,634.6202 C 324.98307,673.2721 334.67107,711.4773 352.51607,749.1133 C 383.90607,813.5526 436.15707,873.3863 508.52207,927.5655 C 484.57407,933.0234 362.14207,915.2763 275.37717,904.3839 C 219.96817,902.8996 163.22737,901.5706 107.38757,903.4814 C 99.768566,919.3992 94.436566,935.4749 92.734266,951.7327 z M 424.26507,907.8253 C 353.68307,852.9013 302.16107,793.0123 271.71387,728.2732 C 266.47557,717.03 261.88057,705.7423 257.89787,694.4052 C 237.93507,724.6347 216.08727,754.5402 190.38807,783.7437 C 168.80567,813.3218 143.27417,843.553 123.66317,874.4642 C 150.34237,874.7094 176.99627,875.2769 203.52367,875.9586 C 278.66947,882.6935 353.79807,892.229 424.26507,907.8253 z M 328.49507,485.6378 L 320.33107,482.7615 C 252.07247,480.6576 190.60627,458.2568 156.52837,427.066 C 162.32697,396.0012 208.22927,371.7593 245.23327,349.1486 C 343.46807,363.3092 385.59907,389.6223 391.03407,442.491 C 387.59407,464.8297 359.67907,474.0084 328.49507,485.6378 z M 258.00257,456.2528 C 284.75407,446.7777 306.05607,439.1261 309.44607,419.8468 C 307.57207,408.6858 303.09107,398.7422 298.09007,390.377 C 269.72157,407.047 242.92307,425.6371 240.10467,447.9346 C 242.25927,449.5927 244.10887,451.1182 245.70417,452.5026 C 247.33347,452.7998 249.01937,453.0961 250.78057,453.4328 L 258.00257,456.2528 z "/>\r
+    <glyph unicode="(" horiz-adv-x="200" d="M 157.29553,964.41684 C 85.906534,943.05645 143.27553,964.96935 149.35353,967.96624 C 121.71953,946.03653 101.42953,917.03868 82.038534,888.59322 C 63.019534,847.07698 62.965534,802.58042 62.774534,758.20223 C 62.204534,705.23461 64.148534,651.67258 82.721534,601.57272 C 101.35653,557.79366 119.61453,513.53181 142.06253,471.36352 C 162.28253,443.06815 185.72653,417.51732 209.96853,392.30641 C 217.20353,381.23083 229.92353,377.56805 240.56853,371.59688 L 188.08653,337.9019 C 176.81953,344.9292 163.83953,349.97325 155.89353,361.2646 C 131.44853,386.91462 107.69953,412.77852 87.444534,441.61231 C 64.948534,484.01721 46.816534,528.55933 27.933534,572.50137 C 7.2315644,622.70456 7.2335644,677.98057 6.8235644,731.33487 C 6.9055644,776.44643 6.5735644,821.47147 24.500564,864.14847 C 42.874534,893.44944 63.912534,922.55558 90.661534,945.49597 C 128.52153,967.64442 163.46653,996.41667 209.08253,999.88759 L 157.29553,964.41684 z "/>\r
+    <glyph unicode=")" horiz-adv-x="500" d="M 102.8884,1008.6982 C 100.3294,978.11179 118.5824,954.08432 133.7864,928.76702 C 149.3334,875.98072 168.7994,823.8434 183.8644,770.69509 C 196.9504,729.21591 203.5204,686.02444 206.5114,642.8773 C 201.4774,609.63395 193.9474,577.152 190.2554,543.66899 C 181.9254,511.44678 164.3934,483.40216 144.5814,456.504 C 129.2864,429.24969 104.9144,411.03574 79.569396,392.94916 C -7.1526043,342.08863 12.494396,353.92035 51.591396,372.97586 L -6.6406043,348.65054 C 98.020396,415.32875 32.414396,372.71003 20.524396,370.79131 C 45.745396,388.4546 71.494396,405.2614 86.465396,432.54868 C 106.3464,458.80898 124.1954,485.88766 133.1674,517.41682 C 137.4384,550.35014 143.4694,582.78107 150.3244,615.35728 C 147.8114,658.22366 141.2074,701.07702 128.8484,742.4077 C 114.3944,795.21097 94.022396,846.54497 78.916396,898.97608 C 63.266396,924.87724 44.816396,949.89979 45.853396,981.04365 L 102.8884,1008.6982 z "/>\r
+    <glyph unicode=";" horiz-adv-x="200" d="M 90.716083,550.68412 C 58.772083,550.00152 34.833083,523.48452 11.966083,509.15352 L 46.435083,522.40232 C 49.479083,522.34362 54.384083,522.41242 61.716083,522.63822 C 86.717083,508.23082 96.056083,490.53822 85.091083,463.34542 C 83.224083,460.83592 81.616083,458.54062 80.216083,456.44512 C 64.804083,472.80622 54.337083,486.92652 57.904083,509.12662 L 8.4350828,487.95492 C 5.5640828,464.24702 18.080083,448.72132 34.622083,430.99682 C 76.185083,408.08562 116.08208,453.68972 135.12208,482.41902 C 144.81008,510.75782 134.74608,533.62622 107.06008,548.76912 C 101.37308,550.20642 95.943083,550.79662 90.716083,550.68412 z M 129.06008,400.48432 L 79.591083,379.33872 C 105.73208,338.64932 124.87008,294.27682 143.71608,250.54652 C 167.35808,195.28922 164.90208,136.21212 164.34108,78.387517 C 158.25708,62.455417 154.05108,55.809617 155.06008,55.352017 L 142.90408,47.875017 C 185.24208,65.215917 208.27008,63.434317 212.84108,99.113417 C 212.68308,157.34092 214.90008,216.73962 190.71608,272.29662 C 172.00308,315.54072 152.78908,359.49262 129.06008,400.48432 z M 187.31008,75.239217 L 161.65408,59.444817 C 166.71308,62.982717 174.92608,68.562317 187.31008,75.239217 z "/>\r
+    <glyph unicode="@" horiz-adv-x="790" d="M 372.51951,998.42995 C 245.58351,996.80885 125.45851,954.01125 53.62251,898.70875 C -30.54049,826.11735 -2.9044902,741.27625 35.89651,662.64855 C 97.20851,555.94645 185.88051,448.68105 362.62951,384.51795 C 438.80951,358.49615 531.26151,341.32585 620.24251,354.67375 C 680.20051,370.04665 712.28651,382.36955 716.56151,415.88585 L 659.12051,399.85225 C 655.48551,387.63345 646.31951,377.77305 641.24051,371.98345 C 563.26651,363.92215 481.47951,380.57045 414.40251,402.46575 C 237.33751,465.23525 148.95651,572.10015 88.84951,678.20875 C 50.69351,756.44425 25.83651,840.67095 111.17851,912.21025 C 197.09051,976.70255 180.06551,965.26285 320.89851,978.50585 C 400.88551,974.02945 470.79651,959.33645 521.37351,923.77755 C 614.30751,858.30975 671.55351,781.31835 707.58451,701.36425 C 730.91551,639.27225 760.59351,563.28415 698.53151,505.62495 C 689.61451,506.90775 677.52851,509.35835 663.07651,514.16645 L 661.78251,513.65265 C 631.07651,535.36085 605.04651,559.42555 595.55351,586.41115 C 588.57851,600.05705 587.83851,614.58715 592.62551,628.50255 C 599.84851,672.87165 600.60751,717.58005 594.71651,761.99955 C 590.85151,778.25575 583.28851,794.58665 568.08751,808.82445 L 566.90951,808.65985 L 566.26151,808.57755 C 537.41551,805.22945 507.25751,795.73675 498.51151,779.61825 C 496.23751,778.04835 490.81051,779.72915 487.55551,778.91895 C 443.52151,778.33465 396.88351,781.96235 355.66751,771.57125 C 312.71951,761.91565 273.12051,745.59995 250.97851,723.14035 C 229.29751,693.86715 236.22551,661.04595 250.90351,631.30155 C 271.99251,591.20655 309.91351,552.15505 370.12251,525.44575 C 397.11051,514.05395 430.45451,504.83155 465.52951,506.22265 C 489.01051,509.60525 506.58351,519.51355 523.92251,528.12225 C 531.47851,532.46275 538.36651,537.13055 544.57951,542.05625 C 560.64451,519.96605 586.18951,500.16625 613.54751,481.79105 C 622.87251,479.21455 630.79151,483.78085 637.81751,486.64865 C 676.07251,481.10095 702.23051,495.20695 749.35351,511.79985 C 817.21051,572.45865 787.06251,651.41215 761.56451,717.00665 C 724.31651,797.20505 667.61651,874.85805 575.65851,941.25265 C 524.65951,977.66805 454.01051,993.37255 372.51951,998.42995 z M 495.31551,770.17095 L 495.16351,769.51275 L 495.04951,768.87465 C 491.28151,747.82715 497.67851,726.75635 496.57051,705.68625 C 499.32351,668.31135 514.40451,631.59205 519.66251,594.39765 C 514.54051,574.34675 495.26851,556.24535 478.12151,538.66025 C 436.35551,543.02505 404.57051,560.29705 379.48151,577.93165 C 329.96751,613.70555 300.73751,658.74135 305.98651,703.75195 C 308.15851,716.08815 314.46851,729.15235 330.94151,738.22705 C 341.27651,740.56765 352.42351,741.82945 362.13451,744.87535 C 384.49051,748.89595 408.39551,745.81235 431.48251,746.62495 C 440.60151,746.27905 449.80451,747.65595 455.67651,751.72945 C 468.88051,757.88075 482.09551,764.02795 495.31551,770.17095 z "/>\r
+    <glyph unicode="," horiz-adv-x="150" d="M 56.558839,440.71354 C 86.225839,405.72043 115.40984,365.35833 131.88884,323.09893 C 151.40584,267.79053 164.45184,211.10443 113.97284,166.73193 C -51.063161,88.352727 215.24984,212.71053 41.207839,132.67323 L 84.327839,161.20013 C -30.366161,103.00193 183.12484,209.58813 63.251839,149.80503 C 117.38484,190.45663 103.44184,247.32913 85.123839,301.50583 C 68.260839,344.84743 39.088839,383.11223 7.0848387,419.55023 L 56.558839,440.71354 z "/>\r
+    <glyph unicode="00" horiz-adv-x="500" d=""/>\r
+    </font>\r
+  </defs>\r
+  \r
+  <text y="50"  font-family="SVGraffiti" font-size="10px" >ABCDEFGHIJKLMNOPQRSTUVWXYZ</text>\r
+  <text y="60"  font-family="SVGraffiti" font-size="10px" >abcdefghijklmnopqrstuvwxyz</text>\r
+  <text y="70"  font-family="SVGraffiti" font-size="10px" >.:"!();@,</text>\r
+  <text y="80"  font-family="SVGraffiti" font-size="5px" >09.06.2006 Holger Will ( holger@treebuilder.de )</text>\r
+</svg>
\ No newline at end of file
index 955ec6d..fbdee60 100644 (file)
@@ -1,3 +1,41 @@
+2014-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Laying out a TextRun using an SVG font is O(n^2)
+        https://bugs.webkit.org/show_bug.cgi?id=136584
+
+        Reviewed by Andreas Kling.
+
+        Caching the version of the run with normalized spaces leads to a 5x speedup on the
+        performance test this patch adds.
+
+        Note that SVGFontData::applySVGGlyphSelection() is still unnecesarrily O(n), so more
+        work can be done here. In particular, the call to collectGlyphsForString() can likely
+        be sped up.
+
+        No new correctness tests because there is no behavior change.
+        Performance Test: SVG/SVG-Text.html
+
+        * platform/graphics/Font.h:
+        (WebCore::Font::treatAsSpace): Make inline.
+        (WebCore::Font::treatAsZeroWidthSpace): Ditto.
+        (WebCore::Font::treatAsZeroWidthSpaceInComplexScript): Ditto.
+        * platform/graphics/SimpleFontData.h: Add String cache argument.
+        * platform/graphics/TextRun.h: Move member variables around for better packing.
+        (WebCore::TextRun::TextRun): Ditto.
+        * platform/graphics/WidthIterator.cpp: Add String cache argument.
+        (WebCore::WidthIterator::glyphDataForCharacter): Ditto.
+        (WebCore::WidthIterator::advanceInternal): Create String cache and pass it to
+        glyphDataForCharacter.
+        * platform/graphics/WidthIterator.h: Add String cache argument.
+        * rendering/svg/SVGTextRunRenderingContext.cpp: Ditto.
+        (WebCore::SVGTextRunRenderingContext::glyphDataForCharacter): Ditto.
+        * rendering/svg/SVGTextRunRenderingContext.h: Ditto.
+        * svg/SVGFontData.cpp:
+        (WebCore::SVGFontData::applySVGGlyphSelection): Call computeNormalizedSpaces
+        to consult with the cache.
+        (WebCore::computeNormalizedSpaces): Compute cached String value.
+        * svg/SVGFontData.h: Add String cache argument.
+
 2014-09-05  David Kilzer  <ddkilzer@apple.com>
 
         REGRESSION (r169407): Calls to RenderStyle::getRoundedBorderFor() in computeRoundedRectForBoxShape() still include RenderView pointer
index 58c40ab..c9f469d 100644 (file)
@@ -268,9 +268,9 @@ public:
     }
 
     FontSelector* fontSelector() const;
-    static bool treatAsSpace(UChar c) { return c == ' ' || c == '\t' || c == '\n' || c == noBreakSpace; }
-    static bool treatAsZeroWidthSpace(UChar c) { return treatAsZeroWidthSpaceInComplexScript(c) || c == 0x200c || c == 0x200d; }
-    static bool treatAsZeroWidthSpaceInComplexScript(UChar c) { return c < 0x20 || (c >= 0x7F && c < 0xA0) || c == softHyphen || c == zeroWidthSpace || (c >= 0x200e && c <= 0x200f) || (c >= 0x202a && c <= 0x202e) || c == zeroWidthNoBreakSpace || c == objectReplacementCharacter; }
+    static inline bool treatAsSpace(UChar c) { return c == ' ' || c == '\t' || c == '\n' || c == noBreakSpace; }
+    static inline bool treatAsZeroWidthSpace(UChar c) { return treatAsZeroWidthSpaceInComplexScript(c) || c == 0x200c || c == 0x200d; }
+    static inline bool treatAsZeroWidthSpaceInComplexScript(UChar c) { return c < 0x20 || (c >= 0x7F && c < 0xA0) || c == softHyphen || c == zeroWidthSpace || (c >= 0x200e && c <= 0x200f) || (c >= 0x202a && c <= 0x202e) || c == zeroWidthNoBreakSpace || c == objectReplacementCharacter; }
     static bool canReceiveTextEmphasis(UChar32 c);
 
     static inline UChar normalizeSpaces(UChar character)
index 04a8253..61296d2 100644 (file)
@@ -89,7 +89,7 @@ public:
         virtual void initializeFontData(SimpleFontData*, float fontSize) = 0;
         virtual float widthForSVGGlyph(Glyph, float fontSize) const = 0;
         virtual bool fillSVGGlyphPage(GlyphPage*, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData*) const = 0;
-        virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength) const = 0;
+        virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) const = 0;
     };
 
     // Used to create platform fonts.
index af52db4..3961a4c 100644 (file)
@@ -64,6 +64,7 @@ public:
     TextRun(const LChar* c, unsigned len, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
         : m_charactersLength(len)
         , m_len(len)
+        , m_tabSize(0)
         , m_xpos(xpos)
         , m_horizontalGlyphStretch(1)
         , m_expansion(expansion)
@@ -76,7 +77,6 @@ public:
         , m_applyRunRounding((roundingHacks & RunRounding) && s_allowsRoundingHacks)
         , m_applyWordRounding((roundingHacks & WordRounding) && s_allowsRoundingHacks)
         , m_disableSpacing(false)
-        , m_tabSize(0)
     {
         m_data.characters8 = c;
     }
@@ -84,6 +84,7 @@ public:
     TextRun(const UChar* c, unsigned len, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
         : m_charactersLength(len)
         , m_len(len)
+        , m_tabSize(0)
         , m_xpos(xpos)
         , m_horizontalGlyphStretch(1)
         , m_expansion(expansion)
@@ -96,7 +97,6 @@ public:
         , m_applyRunRounding((roundingHacks & RunRounding) && s_allowsRoundingHacks)
         , m_applyWordRounding((roundingHacks & WordRounding) && s_allowsRoundingHacks)
         , m_disableSpacing(false)
-        , m_tabSize(0)
     {
         m_data.characters16 = c;
     }
@@ -104,6 +104,7 @@ public:
     explicit TextRun(const String& s, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
         : m_charactersLength(s.length())
         , m_len(s.length())
+        , m_tabSize(0)
         , m_xpos(xpos)
         , m_horizontalGlyphStretch(1)
         , m_expansion(expansion)
@@ -115,7 +116,6 @@ public:
         , m_applyRunRounding((roundingHacks & RunRounding) && s_allowsRoundingHacks)
         , m_applyWordRounding((roundingHacks & WordRounding) && s_allowsRoundingHacks)
         , m_disableSpacing(false)
-        , m_tabSize(0)
     {
         if (!m_charactersLength || s.is8Bit()) {
             m_data.characters8 = s.characters8();
@@ -129,6 +129,7 @@ public:
     explicit TextRun(StringView s, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
         : m_charactersLength(s.length())
         , m_len(s.length())
+        , m_tabSize(0)
         , m_xpos(xpos)
         , m_horizontalGlyphStretch(1)
         , m_expansion(expansion)
@@ -141,7 +142,6 @@ public:
         , m_applyRunRounding((roundingHacks & RunRounding) && s_allowsRoundingHacks)
         , m_applyWordRounding((roundingHacks & WordRounding) && s_allowsRoundingHacks)
         , m_disableSpacing(false)
-        , m_tabSize(0)
     {
         if (s.is8Bit())
             m_data.characters8 = s.characters8();
@@ -217,7 +217,7 @@ public:
         virtual ~RenderingContext() { }
 
 #if ENABLE(SVG_FONTS)
-        virtual GlyphData glyphDataForCharacter(const Font&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength) = 0;
+        virtual GlyphData glyphDataForCharacter(const Font&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) = 0;
         virtual void drawSVGGlyphs(GraphicsContext*, const SimpleFontData*, const GlyphBuffer&, int from, int to, const FloatPoint&) const = 0;
         virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int& charsConsumed, String& glyphName) const = 0;
         virtual bool applySVGKerning(const SimpleFontData*, WidthIterator&, GlyphBuffer*, int from) const = 0;
@@ -238,9 +238,14 @@ private:
         const LChar* characters8;
         const UChar* characters16;
     } m_data;
+
+    RefPtr<RenderingContext> m_renderingContext;
+
     unsigned m_charactersLength; // Marks the end of the characters buffer. Default equals to m_len.
     unsigned m_len;
 
+    unsigned m_tabSize;
+
     // m_xpos is the x position relative to the left start of the text line, not relative to the left
     // start of the containing block. In the case of right alignment or center alignment, left start of
     // the text line is not the same as left start of the containing block.
@@ -257,8 +262,6 @@ private:
     unsigned m_applyRunRounding : 1;
     unsigned m_applyWordRounding : 1;
     unsigned m_disableSpacing : 1;
-    unsigned m_tabSize;
-    RefPtr<RenderingContext> m_renderingContext;
 };
 
 inline void TextRun::setTabSize(bool allow, unsigned size)
index cd524f7..7c51de7 100644 (file)
@@ -68,13 +68,13 @@ WidthIterator::WidthIterator(const Font* font, const TextRun& run, HashSet<const
     }
 }
 
-GlyphData WidthIterator::glyphDataForCharacter(UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength)
+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);
+        return renderingContext->glyphDataForCharacter(*m_font, *this, character, mirror, currentCharacter, advanceLength, normalizedSpacesStringCache);
 #else
     UNUSED_PARAM(currentCharacter);
     UNUSED_PARAM(advanceLength);
@@ -172,10 +172,11 @@ inline unsigned WidthIterator::advanceInternal(TextIterator& textIterator, Glyph
     UChar32 character = 0;
     unsigned clusterLength = 0;
     CharactersTreatedAsSpace charactersTreatedAsSpace;
+    String normalizedSpacesStringCache;
     while (textIterator.consume(character, clusterLength)) {
         unsigned advanceLength = clusterLength;
         int currentCharacter = textIterator.currentCharacter();
-        const GlyphData& glyphData = glyphDataForCharacter(character, rtl, currentCharacter, advanceLength);
+        const GlyphData& glyphData = glyphDataForCharacter(character, rtl, currentCharacter, advanceLength, normalizedSpacesStringCache);
         Glyph glyph = glyphData.glyph;
         const SimpleFontData* fontData = glyphData.fontData;
 
index cd06d7c..6897086 100644 (file)
@@ -87,7 +87,7 @@ public:
 #endif
 
 private:
-    GlyphData glyphDataForCharacter(UChar32, bool mirror, int currentCharacter, unsigned& advanceLength);
+    GlyphData glyphDataForCharacter(UChar32, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache);
     template <typename TextIterator>
     inline unsigned advanceInternal(TextIterator&, GlyphBuffer*);
 
index e928f1b..4218af4 100644 (file)
@@ -290,7 +290,7 @@ void SVGTextRunRenderingContext::drawSVGGlyphs(GraphicsContext* context, const S
     }
 }
 
-GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const Font& font, WidthIterator& iterator, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength)
+GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const Font& font, WidthIterator& iterator, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache)
 {
     const SimpleFontData* primaryFont = font.primaryFont();
     ASSERT(primaryFont);
@@ -305,7 +305,7 @@ GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const Font& font, Wi
         return glyphData;
     }
 
-    // Save data fromhe font fallback list because we may modify it later. Do this before the
+    // Save data from the font fallback list because we may modify it later. Do this before the
     // potential change to glyphData.fontData below.
     FontGlyphs* glyph = font.glyphs();
     ASSERT(glyph);
@@ -337,7 +337,7 @@ GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const Font& font, Wi
         // The returned glyph by glyphDataAndPageForCharacter() 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))
+        if (svgFontData->applySVGGlyphSelection(iterator, glyphData, mirror, currentCharacter, advanceLength, normalizedSpacesStringCache))
             return glyphData;
     }
 
index d0b91f6..51b434c 100644 (file)
@@ -42,7 +42,7 @@ public:
     RenderSVGResource* activePaintingResource() const { return m_activePaintingResource; }
     void setActivePaintingResource(RenderSVGResource* object) { m_activePaintingResource = object; }
 
-    virtual GlyphData glyphDataForCharacter(const Font&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength) override;
+    virtual GlyphData glyphDataForCharacter(const Font&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) override;
     virtual void drawSVGGlyphs(GraphicsContext*, const SimpleFontData*, const GlyphBuffer&, int from, int to, const FloatPoint&) const override;
     virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int& charsConsumed, String& glyphName) const override;
     virtual bool applySVGKerning(const SimpleFontData*, WidthIterator&, GlyphBuffer*, int from) const override;
index 80710ce..5ce003c 100644 (file)
@@ -42,6 +42,7 @@ 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)
@@ -130,27 +131,11 @@ float SVGFontData::widthForSVGGlyph(Glyph glyph, float fontSize) const
     return svgGlyph.horizontalAdvanceX * scaleEmToUnits(fontSize, svgFontFaceElement->unitsPerEm());
 }
 
-bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& glyphData, bool mirror, int currentCharacter, unsigned& advanceLength) const
+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(int(run.charactersLength()) >= currentCharacter);
-
-    // Associate text with arabic forms, if needed.
-    String remainingTextInRun;
-
-    if (run.is8Bit()) {
-        remainingTextInRun = String(run.data8(currentCharacter), run.charactersLength() - currentCharacter);
-        remainingTextInRun = Font::normalizeSpaces(remainingTextInRun.characters8(), remainingTextInRun.length());
-    } else {
-        remainingTextInRun = String(run.data16(currentCharacter), run.charactersLength() - currentCharacter);
-        remainingTextInRun = Font::normalizeSpaces(remainingTextInRun.characters16(), remainingTextInRun.length());
-    }
-
-    if (mirror)
-        remainingTextInRun = createStringWithMirroredCharacters(remainingTextInRun);
-    if (!currentCharacter && arabicForms.isEmpty())
-        arabicForms = charactersWithArabicForm(remainingTextInRun, mirror);
+    ASSERT(run.charactersLength() >= currentCharacter);
 
     SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
     ASSERT(svgFontFaceElement);
@@ -202,8 +187,16 @@ bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& gly
             advanceLength = svgGlyph.unicodeStringLength;
             return true;
         }
-    } else
+    } 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);
+    }
 
     size_t glyphsSize = glyphs.size();
     for (size_t i = 0; i < glyphsSize; ++i) {
@@ -289,6 +282,21 @@ bool SVGFontData::fillNonBMPGlyphs(SVGFontElement* fontElement, GlyphPage* pageT
     return haveGlyphs;
 }
 
+void computeNormalizedSpaces(const TextRun& run, bool mirror, String& normalizedSpacesStringCache)
+{
+    if (normalizedSpacesStringCache.length() == static_cast<unsigned>(run.charactersLength()))
+        return;
+    if (run.is8Bit()) {
+        normalizedSpacesStringCache = String(run.data8(0), run.charactersLength());
+        normalizedSpacesStringCache = Font::normalizeSpaces(normalizedSpacesStringCache.characters8(), normalizedSpacesStringCache.length());
+    } else {
+        normalizedSpacesStringCache = String(run.data16(0), run.charactersLength());
+        normalizedSpacesStringCache = Font::normalizeSpaces(normalizedSpacesStringCache.characters16(), normalizedSpacesStringCache.length());
+    }
+    if (mirror)
+        normalizedSpacesStringCache = createStringWithMirroredCharacters(normalizedSpacesStringCache);
+}
+
 String createStringWithMirroredCharacters(StringView string)
 {
     unsigned length = string.length();
index 72728a1..027baaa 100644 (file)
@@ -36,7 +36,7 @@ public:
     virtual void initializeFontData(SimpleFontData*, float fontSize) override;
     virtual float widthForSVGGlyph(Glyph, float fontSize) const override;
     virtual bool fillSVGGlyphPage(GlyphPage*, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData*) const override;
-    virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength) const override;
+    virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength, String& normalizedSpacesStringCache) const override;
 
     SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement; }