Support TrueType Font

This commit is contained in:
Vivien Nicolas 2011-06-07 19:17:46 +02:00
parent c166db13fd
commit 4d261759d9
2 changed files with 35 additions and 2 deletions

View File

@ -4,6 +4,32 @@
*/
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);
@ -608,6 +634,6 @@ var Type1Font = function(aFontName, aFontFile) {
this.parser.parse();
var end = Date.now();
dump("Time to parse font is:" + (end - start));
//log("Time to parse font is:" + (end - start));
};

9
pdf.js
View File

@ -2292,7 +2292,14 @@ var CanvasGraphics = (function() {
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: