From 111a986b5d83237ba4c1f86031410742bdcce424 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Tue, 13 Jun 2017 17:46:01 -0700 Subject: [PATCH] next: implement pointers (brings table data in) --- pitfall/fontkit/directory.rkt | 2 +- pitfall/fontkit/font.rkt | 2 +- pitfall/fontkit/subset.rkt | 4 +++- pitfall/pdfkit/node_modules/fontkit/index.js | 4 +++- pitfall/pitfall/test/out.bin | Bin 0 -> 4199 bytes pitfall/pitfall/test/test12.pdf | Bin 6345 -> 6345 bytes 6 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 pitfall/pitfall/test/out.bin diff --git a/pitfall/fontkit/directory.rkt b/pitfall/fontkit/directory.rkt index 8db39fb2..b0ed0d99 100644 --- a/pitfall/fontkit/directory.rkt +++ b/pitfall/fontkit/directory.rkt @@ -29,7 +29,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/tables/directory.js (mhash 'tag tag 'checkSum 0 - 'offset #xdeadbeef ; todo + 'offset 16909060 ; todo \1\2\3\4 octal-be 'length (let ([tag (hash-ref table-decoders tag (λ () (raise-argument-error 'directory:preEncode "valid table tag" tag)))]) (send tag size table)))))) (define numTables (length tables)) diff --git a/pitfall/fontkit/font.rkt b/pitfall/fontkit/font.rkt index 7487ae10..6875786e 100644 --- a/pitfall/fontkit/font.rkt +++ b/pitfall/fontkit/font.rkt @@ -281,5 +281,5 @@ https://github.com/mbutterick/fontkit/blob/master/src/TTFFont.js #;(send f _getTable 'maxp) (define subset (make-object TTFSubset f)) (send subset encode (+EncodeStream)) - +(file->bytes "../pitfall/test/out.bin") ) \ No newline at end of file diff --git a/pitfall/fontkit/subset.rkt b/pitfall/fontkit/subset.rkt index c9b51d11..66849ad3 100644 --- a/pitfall/fontkit/subset.rkt +++ b/pitfall/fontkit/subset.rkt @@ -87,6 +87,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/subset/TTFSubset.js (mhash 'tables (mhash 'head head + #| 'hhea hhea 'loca (· this loca) 'maxp maxp @@ -95,9 +96,10 @@ https://github.com/mbutterick/fontkit/blob/master/src/subset/TTFSubset.js 'glyf (· this glyf) 'hmtx (· this hmtx) 'fpgm (send (· this font) _getTable 'fpgm) +|# ))) - (report* (send stream dump)) + (report* (bytes-length (send stream dump)) (send stream dump)) (unfinished) ) diff --git a/pitfall/pdfkit/node_modules/fontkit/index.js b/pitfall/pdfkit/node_modules/fontkit/index.js index 8d7e9fc1..afeed046 100644 --- a/pitfall/pdfkit/node_modules/fontkit/index.js +++ b/pitfall/pdfkit/node_modules/fontkit/index.js @@ -11979,6 +11979,8 @@ var TTFSubset = function (_Subset) { // cmap: cmap } }); + + stream.pipe(fs.createWriteStream('out.bin')); }; return TTFSubset; @@ -12285,7 +12287,7 @@ var TTFFont = (_class = function () { }; TTFFont.prototype._decodeDirectory = function _decodeDirectory() { - console.log("Directory.decode="+Directory.decode) + //console.log("Directory.decode="+Directory.decode) return this.directory = Directory.decode(this.stream, { _startOffset: 0 }); }; diff --git a/pitfall/pitfall/test/out.bin b/pitfall/pitfall/test/out.bin new file mode 100644 index 0000000000000000000000000000000000000000..f22176fe1693c4cccef0a05a9fc7347302d9613b GIT binary patch literal 4199 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 literal 0 HcmV?d00001 diff --git a/pitfall/pitfall/test/test12.pdf b/pitfall/pitfall/test/test12.pdf index 74a772a1025ef8be5d06da446d3dc37caf72065b..d84fe023a6077fb78cf4440b1784fae2d53a942c 100644 GIT binary patch delta 56 zcmX?Uc+zl#3=^lBp^1TkiHWhvWK||hHWyzH=LqM?DNI+O%*}SpZ<%0hL$(=00L2dw A1ONa4 delta 56 zcmX?Uc+zl#3=^lRv7w=*vAMDFWK||hHb3`3-!PxaDNI+O%*}SpZ<%0hL$(=00L`Kh AX8-^I