Fix character width calculations when weight & style are not defaults,
use a common shared function to determine the correct weight & style,
add the file to build.js
diff --git a/player/js/utils/FontManager.js b/player/js/utils/FontManager.js
index bb4457b..5bf2da1 100644
--- a/player/js/utils/FontManager.js
+++ b/player/js/utils/FontManager.js
@@ -94,9 +94,11 @@
         var tHelper = createNS('text');
         tHelper.style.fontSize = '100px';
         //tHelper.style.fontFamily = fontData.fFamily;
+
+        var fontProps = getFontProperties(fontData);
         tHelper.setAttribute('font-family', fontData.fFamily);
-        tHelper.setAttribute('font-style', fontData.fStyle);
-        tHelper.setAttribute('font-weight', fontData.fWeight);
+        tHelper.setAttribute('font-style', fontProps.style);
+        tHelper.setAttribute('font-weight', fontProps.weight);
         tHelper.textContent = '1';
         if(fontData.fClass){
             tHelper.style.fontFamily = 'inherit';
diff --git a/player/js/utils/getFontProperties.js b/player/js/utils/getFontProperties.js
new file mode 100644
index 0000000..295904d
--- /dev/null
+++ b/player/js/utils/getFontProperties.js
@@ -0,0 +1,37 @@
+function getFontProperties(fontData) {
+	var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];
+
+	var fWeight = 'normal', fStyle = 'normal';
+	var len = styles.length;
+	var styleName;
+	for (var i = 0; i < len; i += 1) {
+		styleName = styles[i].toLowerCase();
+		switch (styleName) {
+			case 'italic':
+				fStyle = 'italic';
+				break;
+			case 'bold':
+				fWeight = '700';
+				break;
+			case 'black':
+				fWeight = '900';
+				break;
+			case 'medium':
+				fWeight = '500';
+				break;
+			case 'regular':
+			case 'normal':
+				fWeight = '400';
+				break;
+			case 'light':
+			case 'thin':
+				fWeight = '200';
+				break;
+		}
+	}
+
+	return {
+		style: fStyle,
+		weight: fontData.fWeight || fWeight
+	};
+}
\ No newline at end of file
diff --git a/player/js/utils/text/TextProperty.js b/player/js/utils/text/TextProperty.js
index 01605f4..f6ed5ad 100644
--- a/player/js/utils/text/TextProperty.js
+++ b/player/js/utils/text/TextProperty.js
@@ -177,38 +177,10 @@
     var j, jLen;
     var fontData = fontManager.getFontByName(documentData.f);
     var charData, cLength = 0;
-    var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];
 
-    var fWeight = 'normal', fStyle = 'normal';
-    len = styles.length;
-    var styleName;
-    for(i=0;i<len;i+=1){
-        styleName = styles[i].toLowerCase();
-        switch(styleName) {
-            case 'italic':
-            fStyle = 'italic';
-            break;
-            case 'bold':
-            fWeight = '700';
-            break;
-            case 'black':
-            fWeight = '900';
-            break;
-            case 'medium':
-            fWeight = '500';
-            break;
-            case 'regular':
-            case 'normal':
-            fWeight = '400';
-            break;
-            case 'light':
-            case 'thin':
-            fWeight = '200';
-            break;
-        }
-    }
-    documentData.fWeight = fontData.fWeight || fWeight;
-    documentData.fStyle = fStyle;
+    var fontProps = getFontProperties(fontData);
+    documentData.fWeight = fontProps.weight;
+    documentData.fStyle = fontProps.style;
     documentData.finalSize = documentData.s;
     documentData.finalText = this.buildFinalText(documentData.t);
     len = documentData.finalText.length;
diff --git a/tasks/build.js b/tasks/build.js
index f7c8ce8..aa0f58a 100644
--- a/tasks/build.js
+++ b/tasks/build.js
@@ -73,6 +73,10 @@
 		builds: ['canvas_worker']
 	},
 	{
+		src: 'js/utils/getFontProperties.js',
+		builds: defaultBuilds
+	},
+	{
 		src: 'js/utils/FontManager.js',
 		builds: defaultBuilds
 	},