diff --git a/fonts.js b/fonts.js
index 5d77f8980..ec510a7d1 100755
--- a/fonts.js
+++ b/fonts.js
@@ -394,25 +394,11 @@ var Font = (function() {
         
         var subtype = properties.subtype;
         if (subtype === 'Type1C') {
-          var cff = new Type2CFF(file);
+          var cff = new Type2CFF(file, properties);
         } else {
           var cff = new CFF(name, file, properties);
         }
 
-        var widths = properties.glyphWidths;
-        if (widths) {
-          var charstrings = cff.charstrings;
-          for (var i = 0, ii = charstrings.length; i < ii; ++i) {
-            var charstring  = charstrings[i];
-            var unicode = charstring.unicode;
-            var width = widths[unicode];
-            if (width)
-              charstring.width = width;
-            else
-              charstring.width = 0;
-          }
-        }
-
         // Wrap the CFF data inside an OTF font file
         data = this.convert(name, cff, properties);
         break;
@@ -2011,9 +1997,10 @@ CFF.prototype = {
 var Type2CFF = (function() {
 
   // TODO: replace parsing code with the Type2Parser in font_utils.js
-  function constructor(file) {
+  function constructor(file, properties) {
     var bytes = file.getBytes();
     this.bytes = bytes;
+    this.properties = properties;
    
     // Other classes expect this.data to be a Javascript array
     var data = []
@@ -2056,10 +2043,11 @@ var Type2CFF = (function() {
       // charstrings contains info about glyphs (one element per glyph
       // containing mappings for {unicode, width}
       this.charstrings = this.getCharStrings(encoding, charset, charStrings,
-          privDict);
+          privDict, this.properties);
     },
     getCharStrings: function cff_charstrings(encoding, charsets, charStrings,
-                                             privDict) {
+                                             privDict, properties) {
+      var widths = properties.glyphWidths;
 
       var defaultWidth = privDict['defaultWidthX'];
       var nominalWidth = privDict['nominalWidthX'];
@@ -2069,7 +2057,10 @@ var Type2CFF = (function() {
         var charName = charsets[i];
         var charCode = GlyphsUnicode[charName];
         if (charCode) {
-          charstrings.push({unicode: charCode, width: 0});
+          var width = widths[charCode];
+          if (!width)
+            width = defaultWidth;
+          charstrings.push({unicode: charCode, width: width});
         }
       }
       return charstrings;