*/
var Fonts = new Dict();
+
+var Base64Encoder = {
+ encode: function(aData) {
+ var str = [];
+ var count = aData.length;
+ for (var i = 0; i < count; i++)
+ str.push(aData.getChar());
+
+ return window.btoa(str.join(""));
+ }
+};
+
+
+var TrueTypeFont = function(aFontName, aFontFile) {
+ if (Fonts.get(aFontName))
+ return;
+
+ //log("Loading a TrueType font: " + aFontName);
+ var fontData = Base64Encoder.encode(aFontFile);
+ Fonts.set(aFontName, fontData);
+
+ // Add the css rule
+ var url = "url(data:font/ttf;base64," + fontData + ");";
+ document.styleSheets[0].insertRule("@font-face { font-family: '" + aFontName + "'; src: " + url + " }", 0);
+};
+
var Type1Parser = function(aAsciiStream, aBinaryStream) {
var lexer = new Lexer(aAsciiStream);
this.parser.parse();
var end = Date.now();
- dump("Time to parse font is:" + (end - start));
+ //log("Time to parse font is:" + (end - start));
};
break;
case "TrueType":
- TODO("implement TrueType support");
+ var fontDescriptor = font.get("FontDescriptor");
+ if (fontDescriptor.num) {
+ var fontDescriptor = this.xref.fetchIfRef(fontDescriptor);
+ var fontFile = this.xref.fetchIfRef(fontDescriptor.get("FontFile2"));
+ fontName = fontDescriptor.get("FontName").name;
+ fontName = fontName.replace("+", ""); // no + are allowed in the font name
+ font = new TrueTypeFont(fontName, fontFile);
+ }
break;
default: