diff --git a/fonts.js b/fonts.js
index d09e2ad83..7d9a96236 100644
--- a/fonts.js
+++ b/fonts.js
@@ -616,43 +616,65 @@ var Font = (function () {
       var otf = new Uint8Array(kMaxFontFileSize);
 
       function createNameTable(name) {
-        var names = [
-          "See original licence",  // Copyright
-          fontName,                // Font family
-          "undefined",             // Font subfamily (font weight)
-          "uniqueID",              // Unique ID
-          fontName,                // Full font name
-          "0.1",                   // Version
-          "undefined",             // Postscript name
-          "undefined",             // Trademark
-          "undefined",             // Manufacturer
-          "undefined"              // Designer
+  	    // All the strings of the name table should be an odd number of bytes
+        if (name.length % 2)
+          name = name.slice(0, name.length - 1);
+
+        var strings = [
+          "Original licence",// 0.Copyright
+          name,                // 1.Font family
+          "Unknown",           // 2.Font subfamily (font weight)
+          "uniqueID",          // 3.Unique ID
+          name,                // 4.Full font name
+          "Version 0.11",      // 5.Version
+          "Unknown",           // 6.Postscript name
+          "Unknown",           // 7.Trademark
+          "Unknown",           // 8.Manufacturer
+          "Unknown"            // 9.Designer
         ];
 
+        var platforms = ["\x00\x01", "\x00\x03"];
+        var encodings = ["\x00\x00", "\x00\x01"];
+        var languages = ["\x00\x00", "\x04\x09"];
+
+        // Mac want 1-byte per character strings while Windows want
+        // 2-bytes per character, so duplicate the names table
+        var stringsUnicode = [];
+        var names = [strings, stringsUnicode];
+        for (var i = 0; i < strings.length; i++) {
+          var str = strings[i];
+
+          var strUnicode = "";
+          for (var j = 0; j < str.length; j++)
+            strUnicode += string16(str.charCodeAt(j));
+          stringsUnicode.push(strUnicode);
+        }
+
+        var namesRecordCount = platforms.length * names.length;
         var nameTable =
-          "\x00\x00" + // format
-          "\x00\x0A" + // Number of names Record
-          "\x00\x7E";  // Storage
+          "\x00\x00" +                           // format
+          string16(namesRecordCount) +           // Number of names Record
+          string16(namesRecordCount * 12 + 6);   // Storage
 
         // Build the name records field
         var strOffset = 0;
-        for (var i = 0; i < names.length; i++) {
-          var str = names[i];
-
-          var nameRecord =
-            "\x00\x01" + // platform ID
-            "\x00\x00" + // encoding ID
-            "\x00\x00" + // language ID
-            "\x00\x00" + // name ID
-            string16(str.length) +
-            string16(strOffset);
-          nameTable += nameRecord;
-
-          strOffset += str.length;
+        for (var i = 0; i < platforms.length; i++) {
+          var names = strings[i];
+          for (var j = 0; j < names.length; j++) {
+            var str = names[j];
+            var nameRecord =
+              platforms[i] + // platform ID
+              encodings[i] + // encoding ID
+              languages[i] + // language ID
+              string16(i) + // name ID
+              string16(str.length) +
+              string16(strOffset);
+            nameTable += nameRecord;
+            strOffset += str.length;
+          }
         }
 
-        nameTable += names.join("");
-        return nameTable;
+        return nameTable + strings.join("") + stringsUnicode.join("");
       }
 
       // Required Tables
@@ -758,7 +780,7 @@ var Font = (function () {
       createTableEntry(otf, offsets, "maxp", maxp);
 
       /** NAME */
-      name = stringToArray(createNameTable(name));
+      name = stringToArray(createNameTable(fontName));
       createTableEntry(otf, offsets, "name", name);
 
       /** POST */