From 649e0ed45291fab6a0072289e61e23705eceb147 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 9 Mar 2018 21:28:06 -0800 Subject: [PATCH] minor caching --- quad/quad/typewriter.rkt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/quad/quad/typewriter.rkt b/quad/quad/typewriter.rkt index a0a0fbb3..64773959 100644 --- a/quad/quad/typewriter.rkt +++ b/quad/quad/typewriter.rkt @@ -7,12 +7,15 @@ (struct $shim $quad () #:transparent) (struct $char $quad () #:transparent) (define util-doc (make-object PDFDocument)) +(define char-sizes (make-hasheqv)) (define (charify q) ($char (hash-set* (attrs q) - 'size (delay (send util-doc fontSize 12) - (list - (send util-doc widthOfString (apply string (elems q))) - (send util-doc currentLineHeight))) + 'size (hash-ref! char-sizes (car (elems q)) + (λ () + (send util-doc fontSize 12) + (list + (send util-doc widthOfString (apply string (elems q))) + (send util-doc currentLineHeight)))) 'printable? (case (car (elems q)) [(#\u00AD) (λ (sig) (memq sig '(end)))] [(#\space) (λ (sig) (not (memq sig '(start end))))]