]> source.dussan.org Git - svg.js.git/commitdiff
text font() method can be used as a getter
authorwout <wout@impinc.co.uk>
Fri, 21 Dec 2012 10:11:00 +0000 (11:11 +0100)
committerwout <wout@impinc.co.uk>
Fri, 21 Dec 2012 10:11:00 +0000 (11:11 +0100)
README.md
dist/svg.js
dist/svg.min.js
src/text.js

index 57fa85f67c6b6cd322bd574a2357b28dc89c520a..60ca2aa3e1ba0ba5b053d26a60ff4012ce89815b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -102,8 +102,15 @@ var text = draw.text({
   y:    0
 });
 ```
-Styling text can be done using the 'font()' method:
+Styling text can be done using the 'font()' method which is both a setter and a getter:
 ```javascript
+// get a single font property
+text.font('size');
+
+// set a single font property
+text.font('anchor', 'start');
+
+// set multiple font properties at once
 text.font({
   family: 'Helvetica',
   size: 36,
@@ -115,6 +122,17 @@ Changing text afterwards is also possible with the 'text()' method:
 ```javascript
 text.text('Brilliant!');
 ```
+To get the raw text content:
+```javascript
+text.content;
+```
+Setting attributes like fill, opacity, x and y is the same as other elements:
+```javascript
+text.attr({
+  fill: '#333',
+  x: 100
+});
+```
 
 
 ### Image element
index db34602c63170890a528178ab8aeaf3b3d4c2ce6..6560668a12cb171ab1a7001e11a7c707bb3fea89 100644 (file)
   SVG.Text = function Text() {
     this.constructor.call(this, SVG.create('text'));
     
-    this.style = { 'font-size':  16 };
+    this.style = { 'font-size':  16, 'font-family': 'Helvetica' };
     this.leading = 1.2;
     this.anchor = 'start';
+    this._s = ('size family weight stretch variant style').split(' ');
+    this._p = ('leading anchor').split(' ');
   };
   
   // inherit from SVG.Element
       return this;
     },
     
-    font: function(o) {
-      var i, a = ('size family weight stretch variant style').split(' ');
-      
-      for (i = a.length - 1; i >= 0; i--)
-        if (o[a[i]] != null)
-          this.style['font-' + a[i]] = o[a[i]];
-     
-      a = ('leading anchor').split(' ');
-      
-      for (i = a.length - 1; i >= 0; i--)
-        if (o[a[i]] != null)
-          this[a[i]] = o[a[i]];
+    font: function(a, v) {
+      if (typeof a == 'object') {
+        var i, s = this._s;
+  
+        for (i = s.length - 1; i >= 0; i--)
+          if (a[s[i]] != null)
+            this.style['font-' + s[i]] = a[s[i]];
+  
+        s = this._p;
+  
+        for (i = s.length - 1; i >= 0; i--)
+          if (a[s[i]] != null)
+            this[s[i]] = a[s[i]];
+        
+      } else if (v != null) {
+        var s = {};
+        s[a] = v;
+        this.font(s);
+        
+      } else {
+        return this._p.indexOf(a) > -1 ? this[a] : this._s.indexOf(a) > -1 ? this.style['font-' + a] : void 0;
+      }
       
       return this.text(this.content);
     },
     
     _style: function() {
-      var i, s = '', a = ('size family weight stretch variant style').split(' ');
+      var i, o = '', s = this._s;
       
-      for (i = a.length - 1; i >= 0; i--)
-        if (this.style['font-' + a[i]] != null)
-          s += 'font-' + a[i] + ':' + this.style['font-' + a[i]] + ';';
+      for (i = s.length - 1; i >= 0; i--)
+        if (this.style['font-' + s[i]] != null)
+          o += 'font-' + s[i] + ':' + this.style['font-' + s[i]] + ';';
       
       if (this.anchor != null)
-        s += 'text-anchor:' + this.anchor + ';';
+        o += 'text-anchor:' + this.anchor + ';';
         
-      return s;
+      return o;
     }
     
   });
index 6a0e45d10a9bd68b24ccd89921582c16815febe7..3ae86547768e049d9b0af38ddd53a44d4a096b90 100644 (file)
@@ -1,2 +1,2 @@
 /* svg.js 0.1a - svg container element group arrange clip doc defs shape rect circle ellipse path image text sugar - svgjs.com/license */
-(function(){function t(){this.constructor.call(this,SVG.create("tspan"))}this.SVG={ns:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",create:function(e){return document.createElementNS(this.ns,e)},extend:function(e,t){for(var n in t)e.prototype[n]=t[n]}},this.svg=function(e){return new SVG.Doc(e)},SVG.Container={add:function(e,t){return this.has(e)||(t=t==null?this.children().length:t,this.children().splice(t,0,e),this.node.insertBefore(e.node,this.node.childNodes[t]),e.parent=this),this},has:function(e){return this.children().indexOf(e)>=0},children:function(){return this._children||(this._children=[])},remove:function(e){return this.removeAt(this.children().indexOf(e))},removeAt:function(e){if(0<=e&&e<this.children().length){var t=this.children()[e];this.children().splice(e,1),this.node.removeChild(t.node),t.parent=null}return this},defs:function(){return this._defs==null&&(this._defs=new SVG.Defs,this.add(this._defs,0)),this._defs},levelDefs:function(){var e=this.defs();return this.remove(e).add(e,0),this},group:function(){var e=new SVG.G;return this.add(e),e},rect:function(e){return this.place(new SVG.Rect,e)},circle:function(e){var t;return e!=null&&(t={x:e.x,y:e.y},e.r||e.radius?t.width=t.height=(e.r||e.radius)*2:t.width=t.height=e.width||e.height),this.place(new SVG.Circle,t)},ellipse:function(e){var t;return e!=null&&(t={x:e.x,y:e.y},e.width&&(t.width=e.width),e.height&&(t.height=e.height),e.rx&&(t.width=e.rx*2),e.ry&&(t.height=e.ry*2)),this.place(new SVG.Ellipse,t)},path:function(e){return this.place(new SVG.Path,e)},image:function(e){return this.place(new SVG.Image,e)},text:function(e){return this.place(new SVG.Text,e)},place:function(e,t){return t!=null&&(t.x!=null&&t.y!=null&&e.move(t.x,t.y),t.width!=null&&t.height!=null&&e.size(t.width,t.height),t.data!=null?e.data(t.data):t.src!=null?e.load(t.src):t.text!=null?e.text(t.text):void 0),this.add(e),e}},SVG.Element=function(t){this.node=t,this.attrs={}},SVG.extend(SVG.Element,{move:function(e,t){return this.attr({x:e,y:t})},size:function(e,t){return this.attr({width:e,height:t})},remove:function(){return this.parent!=null?this.parent.remove(this):void 0},parentDoc:function(){return this._parent(SVG.Doc)},mother:function(){return this.parentDoc()},attr:function(e,t,n){if(arguments.length<2){if(typeof e!="object")return this.attrs[e];for(t in e)this.attr(t,e[t])}else this.attrs[e]=t,n!=null?this.node.setAttributeNS(n,e,t):this.node.setAttribute(e,t);return this},transform:function(e,t){var n=[],r=this.attr("transform")||"",i=r.match(/([a-z]+\([^\)]+\))/g)||[];if(t!==!0){var s=e.match(/^([A-Za-z\-]+)/)[1],t=new RegExp("^"+s);for(var o=0,r=i.length;o<r;o++)t.test(i[o])||n.push(i[o])}else n=i;return n.push(e),this.attr("transform",n.join(" "))},bbox:function(){var e=this.node.getBBox();return e.cx=e.x+e.width/2,e.cy=e.y+e.height/2,e},_parent:function(e){var t=this;while(t!=null&&!(t instanceof e))t=t.parent;return t}}),SVG.G=function(){this.constructor.call(this,SVG.create("g"))},SVG.G.prototype=new SVG.Element,SVG.extend(SVG.G,SVG.Container),SVG.extend(SVG.Element,{siblings:function(){return this.mother().children()},forward:function(){var e=this.siblings().indexOf(this);return this.mother().remove(this).add(this,e+1),this},backward:function(){var e,t=this.mother();return t.levelDefs(),e=this.siblings().indexOf(this),e>1&&t.remove(this).add(this,e-1),this},front:function(){return this.mother().remove(this).add(this),this},back:function(){var e,t=this.mother();return t.levelDefs(),e=this.siblings().indexOf(this),e>1&&t.remove(this).add(this,0),this}});var e=0;SVG.Clip=function(){this.constructor.call(this,SVG.create("clipPath")),this.id="_"+e++,this.attr("id",this.id)},SVG.Clip.prototype=new SVG.Element,SVG.extend(SVG.Clip,SVG.Container),SVG.extend(SVG.Element,{clip:function(e){var t=this.mother().defs().clipPath();return e(t),this.clipTo(t)},clipTo:function(e){return this.attr("clip-path","url(#"+e.id+")")}}),SVG.Doc=function(t){this.constructor.call(this,SVG.create("svg")),this.attr("xmlns",SVG.ns),this.attr("version","1.1"),this.attr("xlink",SVG.xlink,SVG.ns),this.defs(),typeof t=="string"&&(t=document.getElementById(t)),t.appendChild(this.node)},SVG.Doc.prototype=new SVG.Element,SVG.extend(SVG.Doc,SVG.Container),SVG.Defs=function(){this.constructor.call(this,SVG.create("defs"))},SVG.Defs.prototype=new SVG.Element,SVG.extend(SVG.Defs,SVG.Container),SVG.extend(SVG.Defs,{clipPath:function(){var e=new SVG.Clip;return this.add(e),e}}),SVG.Shape=function(t){this.constructor.call(this,t)},SVG.Shape.prototype=new SVG.Element,SVG.Rect=function(){this.constructor.call(this,SVG.create("rect"))},SVG.Rect.prototype=new SVG.Shape,SVG.Circle=function(){this.constructor.call(this,SVG.create("circle"))},SVG.Circle.prototype=new SVG.Shape,SVG.extend(SVG.Circle,{move:function(e,t){return this.attrs.x=e,this.attrs.y=t,this.center()},size:function(e){return this.attr("r",e/2).center()},center:function(e,t){var n=this.attrs.r||0;return this.attr({cx:e||(this.attrs.x||0)+n,cy:t||(this.attrs.y||0)+n})}}),SVG.Ellipse=function(){this.constructor.call(this,SVG.create("ellipse"))},SVG.Ellipse.prototype=new SVG.Shape,SVG.extend(SVG.Ellipse,{move:function(e,t){return this.attrs.x=e,this.attrs.y=t,this.center()},size:function(e,t){return this.attr({rx:e/2,ry:t/2}).center()},center:function(e,t){return this.attr({cx:e||(this.attrs.x||0)+(this.attrs.rx||0),cy:t||(this.attrs.y||0)+(this.attrs.ry||0)})}}),SVG.Path=function(){this.constructor.call(this,SVG.create("path"))},SVG.Path.prototype=new SVG.Shape,SVG.extend(SVG.Path,{data:function(e){return this.attr("d",e)}}),SVG.Image=function(){this.constructor.call(this,SVG.create("image"))},SVG.Image.prototype=new SVG.Shape,SVG.extend(SVG.Image,{load:function(e){return this.attr("href",e,SVG.xlink)}}),SVG.Text=function(){this.constructor.call(this,SVG.create("text")),this.style={"font-size":16},this.leading=1.2,this.anchor="start"},SVG.Text.prototype=new SVG.Shape,SVG.extend(SVG.Text,{text:function(e){this.content=e=e||"text";var n,r=this.parentDoc(),i=e.split("\n");while(this.node.hasChildNodes())this.node.removeChild(this.node.lastChild);for(n=0,l=i.length;n<l;n++)this.node.appendChild((new t).text(i[n]).attr("style",this._style()).attr({dy:this.style["font-size"]*this.leading,x:this.attr("x")||0}).node);return this},font:function(e){var t,n="size family weight stretch variant style".split(" ");for(t=n.length-1;t>=0;t--)e[n[t]]!=null&&(this.style["font-"+n[t]]=e[n[t]]);n="leading anchor".split(" ");for(t=n.length-1;t>=0;t--)e[n[t]]!=null&&(this[n[t]]=e[n[t]]);return this.text(this.content)},_style:function(){var e,t="",n="size family weight stretch variant style".split(" ");for(e=n.length-1;e>=0;e--)this.style["font-"+n[e]]!=null&&(t+="font-"+n[e]+":"+this.style["font-"+n[e]]+";");return this.anchor!=null&&(t+="text-anchor:"+this.anchor+";"),t}}),t.prototype=new SVG.Shape,SVG.extend(t,{text:function(e){return this.node.appendChild(document.createTextNode(e)),this}}),SVG.extend(SVG.Shape,{fill:function(e){return e.color!=null&&this.attr("fill",e.color),e.opacity!=null&&this.attr("fill-opacity",e.opacity),this},stroke:function(e){e.color&&this.attr("stroke",e.color);var t="width opacity linecap linejoin miterlimit dasharray dashoffset".split(" ");for(var n=t.length-1;n>=0;n--)e[t[n]]!=null&&this.attr("stroke-"+t[n],e[t[n]]);return this}}),SVG.extend(SVG.Element,{rotate:function(e){var t=this.bbox();return e.x==null&&(e.x=t.cx),e.y==null&&(e.y=t.cy),this.transform("rotate("+(e.deg||0)+" "+e.x+" "+e.y+")",e.relative)}}),SVG.extend(SVG.G,{move:function(e,t){return this.transform("translate("+e+" "+t+")")}})}).call(this);
\ No newline at end of file
+(function(){function t(){this.constructor.call(this,SVG.create("tspan"))}this.SVG={ns:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",create:function(e){return document.createElementNS(this.ns,e)},extend:function(e,t){for(var n in t)e.prototype[n]=t[n]}},this.svg=function(e){return new SVG.Doc(e)},SVG.Container={add:function(e,t){return this.has(e)||(t=t==null?this.children().length:t,this.children().splice(t,0,e),this.node.insertBefore(e.node,this.node.childNodes[t]),e.parent=this),this},has:function(e){return this.children().indexOf(e)>=0},children:function(){return this._children||(this._children=[])},remove:function(e){return this.removeAt(this.children().indexOf(e))},removeAt:function(e){if(0<=e&&e<this.children().length){var t=this.children()[e];this.children().splice(e,1),this.node.removeChild(t.node),t.parent=null}return this},defs:function(){return this._defs==null&&(this._defs=new SVG.Defs,this.add(this._defs,0)),this._defs},levelDefs:function(){var e=this.defs();return this.remove(e).add(e,0),this},group:function(){var e=new SVG.G;return this.add(e),e},rect:function(e){return this.place(new SVG.Rect,e)},circle:function(e){var t;return e!=null&&(t={x:e.x,y:e.y},e.r||e.radius?t.width=t.height=(e.r||e.radius)*2:t.width=t.height=e.width||e.height),this.place(new SVG.Circle,t)},ellipse:function(e){var t;return e!=null&&(t={x:e.x,y:e.y},e.width&&(t.width=e.width),e.height&&(t.height=e.height),e.rx&&(t.width=e.rx*2),e.ry&&(t.height=e.ry*2)),this.place(new SVG.Ellipse,t)},path:function(e){return this.place(new SVG.Path,e)},image:function(e){return this.place(new SVG.Image,e)},text:function(e){return this.place(new SVG.Text,e)},place:function(e,t){return t!=null&&(t.x!=null&&t.y!=null&&e.move(t.x,t.y),t.width!=null&&t.height!=null&&e.size(t.width,t.height),t.data!=null?e.data(t.data):t.src!=null?e.load(t.src):t.text!=null?e.text(t.text):void 0),this.add(e),e}},SVG.Element=function(t){this.node=t,this.attrs={}},SVG.extend(SVG.Element,{move:function(e,t){return this.attr({x:e,y:t})},size:function(e,t){return this.attr({width:e,height:t})},remove:function(){return this.parent!=null?this.parent.remove(this):void 0},parentDoc:function(){return this._parent(SVG.Doc)},mother:function(){return this.parentDoc()},attr:function(e,t,n){if(arguments.length<2){if(typeof e!="object")return this.attrs[e];for(t in e)this.attr(t,e[t])}else this.attrs[e]=t,n!=null?this.node.setAttributeNS(n,e,t):this.node.setAttribute(e,t);return this},transform:function(e,t){var n=[],r=this.attr("transform")||"",i=r.match(/([a-z]+\([^\)]+\))/g)||[];if(t!==!0){var s=e.match(/^([A-Za-z\-]+)/)[1],t=new RegExp("^"+s);for(var o=0,r=i.length;o<r;o++)t.test(i[o])||n.push(i[o])}else n=i;return n.push(e),this.attr("transform",n.join(" "))},bbox:function(){var e=this.node.getBBox();return e.cx=e.x+e.width/2,e.cy=e.y+e.height/2,e},_parent:function(e){var t=this;while(t!=null&&!(t instanceof e))t=t.parent;return t}}),SVG.G=function(){this.constructor.call(this,SVG.create("g"))},SVG.G.prototype=new SVG.Element,SVG.extend(SVG.G,SVG.Container),SVG.extend(SVG.Element,{siblings:function(){return this.mother().children()},forward:function(){var e=this.siblings().indexOf(this);return this.mother().remove(this).add(this,e+1),this},backward:function(){var e,t=this.mother();return t.levelDefs(),e=this.siblings().indexOf(this),e>1&&t.remove(this).add(this,e-1),this},front:function(){return this.mother().remove(this).add(this),this},back:function(){var e,t=this.mother();return t.levelDefs(),e=this.siblings().indexOf(this),e>1&&t.remove(this).add(this,0),this}});var e=0;SVG.Clip=function(){this.constructor.call(this,SVG.create("clipPath")),this.id="_"+e++,this.attr("id",this.id)},SVG.Clip.prototype=new SVG.Element,SVG.extend(SVG.Clip,SVG.Container),SVG.extend(SVG.Element,{clip:function(e){var t=this.mother().defs().clipPath();return e(t),this.clipTo(t)},clipTo:function(e){return this.attr("clip-path","url(#"+e.id+")")}}),SVG.Doc=function(t){this.constructor.call(this,SVG.create("svg")),this.attr("xmlns",SVG.ns),this.attr("version","1.1"),this.attr("xlink",SVG.xlink,SVG.ns),this.defs(),typeof t=="string"&&(t=document.getElementById(t)),t.appendChild(this.node)},SVG.Doc.prototype=new SVG.Element,SVG.extend(SVG.Doc,SVG.Container),SVG.Defs=function(){this.constructor.call(this,SVG.create("defs"))},SVG.Defs.prototype=new SVG.Element,SVG.extend(SVG.Defs,SVG.Container),SVG.extend(SVG.Defs,{clipPath:function(){var e=new SVG.Clip;return this.add(e),e}}),SVG.Shape=function(t){this.constructor.call(this,t)},SVG.Shape.prototype=new SVG.Element,SVG.Rect=function(){this.constructor.call(this,SVG.create("rect"))},SVG.Rect.prototype=new SVG.Shape,SVG.Circle=function(){this.constructor.call(this,SVG.create("circle"))},SVG.Circle.prototype=new SVG.Shape,SVG.extend(SVG.Circle,{move:function(e,t){return this.attrs.x=e,this.attrs.y=t,this.center()},size:function(e){return this.attr("r",e/2).center()},center:function(e,t){var n=this.attrs.r||0;return this.attr({cx:e||(this.attrs.x||0)+n,cy:t||(this.attrs.y||0)+n})}}),SVG.Ellipse=function(){this.constructor.call(this,SVG.create("ellipse"))},SVG.Ellipse.prototype=new SVG.Shape,SVG.extend(SVG.Ellipse,{move:function(e,t){return this.attrs.x=e,this.attrs.y=t,this.center()},size:function(e,t){return this.attr({rx:e/2,ry:t/2}).center()},center:function(e,t){return this.attr({cx:e||(this.attrs.x||0)+(this.attrs.rx||0),cy:t||(this.attrs.y||0)+(this.attrs.ry||0)})}}),SVG.Path=function(){this.constructor.call(this,SVG.create("path"))},SVG.Path.prototype=new SVG.Shape,SVG.extend(SVG.Path,{data:function(e){return this.attr("d",e)}}),SVG.Image=function(){this.constructor.call(this,SVG.create("image"))},SVG.Image.prototype=new SVG.Shape,SVG.extend(SVG.Image,{load:function(e){return this.attr("href",e,SVG.xlink)}}),SVG.Text=function(){this.constructor.call(this,SVG.create("text")),this.style={"font-size":16,"font-family":"Helvetica"},this.leading=1.2,this.anchor="start",this._s="size family weight stretch variant style".split(" "),this._p="leading anchor".split(" ")},SVG.Text.prototype=new SVG.Shape,SVG.extend(SVG.Text,{text:function(e){this.content=e=e||"text";var n,r=this.parentDoc(),i=e.split("\n");while(this.node.hasChildNodes())this.node.removeChild(this.node.lastChild);for(n=0,l=i.length;n<l;n++)this.node.appendChild((new t).text(i[n]).attr("style",this._style()).attr({dy:this.style["font-size"]*this.leading,x:this.attr("x")||0}).node);return this},font:function(e,t){if(typeof e=="object"){var n,r=this._s;for(n=r.length-1;n>=0;n--)e[r[n]]!=null&&(this.style["font-"+r[n]]=e[r[n]]);r=this._p;for(n=r.length-1;n>=0;n--)e[r[n]]!=null&&(this[r[n]]=e[r[n]])}else{if(t==null)return this._p.indexOf(e)>-1?this[e]:this._s.indexOf(e)>-1?this.style["font-"+e]:void 0;var r={};r[e]=t,this.font(r)}return this.text(this.content)},_style:function(){var e,t="",n=this._s;for(e=n.length-1;e>=0;e--)this.style["font-"+n[e]]!=null&&(t+="font-"+n[e]+":"+this.style["font-"+n[e]]+";");return this.anchor!=null&&(t+="text-anchor:"+this.anchor+";"),t}}),t.prototype=new SVG.Shape,SVG.extend(t,{text:function(e){return this.node.appendChild(document.createTextNode(e)),this}}),SVG.extend(SVG.Shape,{fill:function(e){return e.color!=null&&this.attr("fill",e.color),e.opacity!=null&&this.attr("fill-opacity",e.opacity),this},stroke:function(e){e.color&&this.attr("stroke",e.color);var t="width opacity linecap linejoin miterlimit dasharray dashoffset".split(" ");for(var n=t.length-1;n>=0;n--)e[t[n]]!=null&&this.attr("stroke-"+t[n],e[t[n]]);return this}}),SVG.extend(SVG.Element,{rotate:function(e){var t=this.bbox();return e.x==null&&(e.x=t.cx),e.y==null&&(e.y=t.cy),this.transform("rotate("+(e.deg||0)+" "+e.x+" "+e.y+")",e.relative)}}),SVG.extend(SVG.G,{move:function(e,t){return this.transform("translate("+e+" "+t+")")}})}).call(this);
\ No newline at end of file
index 655815d797eef3e2179cef98fcdb5faf6a5cb126..78675ed7dcae506d972ca7832a712dd65d244eca 100644 (file)
@@ -2,9 +2,11 @@
 SVG.Text = function Text() {
   this.constructor.call(this, SVG.create('text'));
   
-  this.style = { 'font-size':  16 };
+  this.style = { 'font-size':  16, 'font-family': 'Helvetica' };
   this.leading = 1.2;
   this.anchor = 'start';
+  this._s = ('size family weight stretch variant style').split(' ');
+  this._p = ('leading anchor').split(' ');
 };
 
 // inherit from SVG.Element
@@ -32,33 +34,43 @@ SVG.extend(SVG.Text, {
     return this;
   },
   
-  font: function(o) {
-    var i, a = ('size family weight stretch variant style').split(' ');
-    
-    for (i = a.length - 1; i >= 0; i--)
-      if (o[a[i]] != null)
-        this.style['font-' + a[i]] = o[a[i]];
-   
-    a = ('leading anchor').split(' ');
-    
-    for (i = a.length - 1; i >= 0; i--)
-      if (o[a[i]] != null)
-        this[a[i]] = o[a[i]];
+  font: function(a, v) {
+    if (typeof a == 'object') {
+      var i, s = this._s;
+
+      for (i = s.length - 1; i >= 0; i--)
+        if (a[s[i]] != null)
+          this.style['font-' + s[i]] = a[s[i]];
+
+      s = this._p;
+
+      for (i = s.length - 1; i >= 0; i--)
+        if (a[s[i]] != null)
+          this[s[i]] = a[s[i]];
+      
+    } else if (v != null) {
+      var s = {};
+      s[a] = v;
+      this.font(s);
+      
+    } else {
+      return this._p.indexOf(a) > -1 ? this[a] : this._s.indexOf(a) > -1 ? this.style['font-' + a] : void 0;
+    }
     
     return this.text(this.content);
   },
   
   _style: function() {
-    var i, s = '', a = ('size family weight stretch variant style').split(' ');
+    var i, o = '', s = this._s;
     
-    for (i = a.length - 1; i >= 0; i--)
-      if (this.style['font-' + a[i]] != null)
-        s += 'font-' + a[i] + ':' + this.style['font-' + a[i]] + ';';
+    for (i = s.length - 1; i >= 0; i--)
+      if (this.style['font-' + s[i]] != null)
+        o += 'font-' + s[i] + ':' + this.style['font-' + s[i]] + ';';
     
     if (this.anchor != null)
-      s += 'text-anchor:' + this.anchor + ';';
+      o += 'text-anchor:' + this.anchor + ';';
       
-    return s;
+    return o;
   }
   
 });