foliojs / fontkit

An advanced font engine for Node and the browser
1.46k stars 219 forks source link

TypeError: format.probe is not a function #235

Closed nmassi closed 4 years ago

nmassi commented 4 years ago
push../node_modules/fontkit/base.js.fontkit.create
src/base.js:43
  40 | fontkit.create = function(buffer, postscriptName) {
  41 |   for (let i = 0; i < formats.length; i++) {
  42 |     let format = formats[i];
> 43 |     if (format.probe(buffer)) {
  44 |       let font = new format(new r.DecodeStream(buffer));
  45 |       if (postscriptName) {
  46 |         return font.getFont(postscriptName);

This is how I fetch and save the stream.

    useEffect(() => {
        async function fetchFont() {
            const font = await fetch(url)
            const response = await font.blob()

            blobToBuffer(response, (err, buffer) => {
                if (err) {
                    throw err
                }
                setFont(fk.create(buffer))

                // console.log(buffer)
                // console.log('FONT:', fk.create(buffer))
            })
        }
        fetchFont()
    }, [url])
(anonymous function)
src/Components/Loader.js:18
  15 | if (err) {
  16 |  throw err
  17 | }
> 18 | setFont(fk.create(buffer))
     | ^  19 | 
  20 | // console.log(buffer)
  21 | // console.log('FONT:', fk.create(buffer))
blikblum commented 4 years ago

push../node_modules/fontkit/base.js.fontkit.create

You should not import base.js but index.js

nmassi commented 4 years ago

push../node_modules/fontkit/base.js.fontkit.create

You should not import base.js but index.js

I got a webpack error when using 'fontkit'.

TypeError: __webpack_require__(...).readFileSync is not a function
(anonymous function)
src/opentype/shapers/ArabicShaper.js:5
  2 | import unicode from 'unicode-properties';
  3 | import UnicodeTrie from 'unicode-trie';
  4 | 
> 5 | const trie = new UnicodeTrie(require('fs').readFileSync(__dirname + '/data.trie'));
  6 | const FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];
  7 | 
  8 | const ShapingClasses = {
blikblum commented 4 years ago

Add this line to webpack config: https://github.com/blikblum/pdfkit-webpack-example/blob/master/webpack.config.js#L13 (together withtransform-loader and brfs as dev dependencies)

Or use fontkit-next https://www.npmjs.com/package/fontkit-next

nmassi commented 4 years ago

Add this line to webpack config: https://github.com/blikblum/pdfkit-webpack-example/blob/master/webpack.config.js#L13 (together withtransform-loader and brfs as dev dependencies)

Or use fontkit-next https://www.npmjs.com/package/fontkit-next

fontkit-next solved the issue. Thanks @blikblum :)