从路径创建文件对象

时间:2014-08-24 17:37:52

标签: javascript

我正在使用一个在文档中具有此功能的库:

  

opentype.parse(缓冲液)

     

解析包含OpenType字体数据的ArrayBuffer

当我尝试将参数作为参数传递给我的文件的URL位置时,它似乎失败并抛出此错误:

  

Uncaught TypeError:DataView构造函数的第一个参数必须是   ArrayBuffer

根据我的理解,这个函数需要像File Object这样的东西。如何仅使用位于我的应用程序根目录中的文件路径来完成此工作?

1 个答案:

答案 0 :(得分:1)

var opentype = require('opentype.js');
var fs = require('fs');

function toArrayBuffer(buffer) {
    var ab = new ArrayBuffer(buffer.length);
    var view = new Uint8Array(ab);
    for (var i = 0; i < buffer.length; ++i) {
        view[i] = buffer[i];
    }
    return ab;
}

fs.readFile('font.otf', function(err, buffer) {
  if (err) throw errr;

  var font = opentype.parse(toArrayBuffer(buffer));

  console.log(font); // this is a Font object

});

请注意,您将使用加载方法获得相同的结果:

opentype.load('font.otf', function (err, font) {
  if (err) throw err;

  console.log(font); // this is a Font object
});