From e1b237fb53414fdb5b39cc3e424d4d130312a320 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Thu, 23 May 2019 07:26:51 -0700 Subject: [PATCH] new size regime --- fontland/fontland/directory.rkt | 3 ++- fontland/fontland/table/cff/cff-dict.rkt | 2 +- fontland/fontland/table/cff/cff-index.rkt | 2 +- fontland/fontland/table/hmtx.rkt | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fontland/fontland/directory.rkt b/fontland/fontland/directory.rkt index b020608f..1ab26478 100644 --- a/fontland/fontland/directory.rkt +++ b/fontland/fontland/directory.rkt @@ -2,6 +2,7 @@ (require xenomorph "tables.rkt" racket/dict + racket/class racket/match sugar/unstable/dict racket/string) @@ -40,7 +41,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/tables/directory.js (mhash 'tag (unescape-tag tag) 'checkSum 0 'offset (x:void-pointer table-codec table) - 'length (size table-codec table)))) + 'length (send table-codec x:size table)))) (define numTables (length tables)) ;; patch from https://github.com/foliojs/fontkit/pull/178 (define max-exponent-for-2 (floor (log numTables 2))) diff --git a/fontland/fontland/table/cff/cff-dict.rkt b/fontland/fontland/table/cff/cff-dict.rkt index 0f576f73..9ff220f6 100644 --- a/fontland/fontland/table/cff/cff-dict.rkt +++ b/fontland/fontland/table/cff/cff-dict.rkt @@ -99,7 +99,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/cff/CFFDict.js #:when (and val (not (equal? val (fourth field))))) (define operands (encode-operands (third field) #false ctx val)) (define operand-size (for/sum ([op (in-list operands)]) - (size CFFOperand op))) + (send CFFOperand x:size op))) (define key (if (list? (first field)) (first field) (list (first field)))) (+ operand-size (length key))) (if include-pointers (hash-ref ctx x:pointer-size-key) 0))) diff --git a/fontland/fontland/table/cff/cff-index.rkt b/fontland/fontland/table/cff/cff-index.rkt index 8861adac..727bca61 100644 --- a/fontland/fontland/table/cff/cff-index.rkt +++ b/fontland/fontland/table/cff/cff-index.rkt @@ -101,7 +101,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/cff/CFFIndex.js [else (error 'cff-index-encode-bad-offset!)])) ;; write offset size - (send uint8 x:encode (size offsetType) stream) + (send uint8 x:encode (send offsetType x:size) stream) ;; write elements (for/fold ([offset 1]) diff --git a/fontland/fontland/table/hmtx.rkt b/fontland/fontland/table/hmtx.rkt index 66ec4eb7..9f1d9d80 100644 --- a/fontland/fontland/table/hmtx.rkt +++ b/fontland/fontland/table/hmtx.rkt @@ -16,7 +16,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/tables/hmtx.js (hash-ref (hash-ref (hash-ref arr 'parent) 'hhea) 'numberOfMetrics)))))) (module+ test - (require rackunit racket/serialize racket/stream "../helper.rkt") + (require rackunit racket/serialize racket/stream racket/class "../helper.rkt") ;; same as hmtx but doesn't require resolution of function to get length (define hmtx-test (x:struct 'metrics (x:lazy-array hmtx-entry (λ (t) 229)) @@ -29,7 +29,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/tables/hmtx.js (check-equal? hmtx-length 916) (define hmtx-bytes (peek-bytes hmtx-length hmtx-offset ip)) (define hmtx-data (decode hmtx-test hmtx-bytes)) - (check-equal? (size hmtx-test) (* 229 (size hmtx-entry))) + (check-equal? (send hmtx-test x:size) (* 229 (send hmtx-entry x:size))) (define H-gid 41) (define OE-gid 142) (check-equal? (stream-ref (hash-ref hmtx-data 'metrics) H-gid) (make-hasheq '((bearing . 33) (advance . 738)))) (check-equal? (stream-ref (hash-ref hmtx-data 'metrics) OE-gid) (make-hasheq '((bearing . 43) (advance . 993))))) \ No newline at end of file