main
Matthew Butterick 8 years ago
parent cf7e0a633b
commit 46a766e497

@ -20,22 +20,29 @@ https://github.com/mbutterick/fontkit/blob/master/src/tables/GPOS.js
'xAdvDevice uint16be ;; pointer
'yAdvDevice uint16be)) ;; pointer
(require racket/dict)
(define-subclass RestructureBase (ValueRecord [key 'valueFormat])
(define/public (buildStruct parent)
(define struct parent)
(while (and (not (· struct (· this key))) (· struct parent))
(hash-set! struct (hash-ref struct parent)))
(report parent)
(while (and (not (with-handlers ([exn:fail:object? (λ (exn) #f)])
(get-field key struct))) (· struct parent))
(set! struct (· struct parent)))
(cond
[(not (hash-ref struct (· this key))) (void)]
[else (define fields (mhash))
(hash-set! fields 'rel (λ () (hash-ref struct (error '_startOffset-not-available))))
(define format (hash-ref struct (· this key)))
[(report (with-handlers ([exn:fail:object? (λ (exn) #f)])
(get-field key struct))) (void)]
[else (report (get-field key struct))
(define fields empty)
(set! fields (dictify 'rel (λ () (hash-ref struct (error '_startOffset-not-available)))))
(define format (get-field key struct))
(report* format fields)
(for ([key (in-list format)])
(when (hash-ref format key)
(hash-set! fields key (hash-ref types key))))
(when (dict-ref format key)
(set! fields (append fields (list (cons key (dict-ref types key)))))))
(+Struct fields)]))
(define/override (size val ctx)

Loading…
Cancel
Save