diff --git a/quad/quad/typewriter.rkt b/quad/quad/typewriter.rkt index dc675237..98c2669f 100644 --- a/quad/quad/typewriter.rkt +++ b/quad/quad/typewriter.rkt @@ -26,11 +26,19 @@ (define (break . xs) ($break (hasheq 'printable? #f) xs)) (define line-height 16) +(define consolidate-into-runs? #t) (define (line-wrap xs size [debug #f]) (wrap xs size debug #:break-val (break #\newline) #:optional-break-proc optional-break? - #:finish-wrap-proc (λ (pcs) (list ($line (hasheq 'size (list +inf.0 line-height) 'out 'sw) pcs))))) + #:finish-wrap-proc (λ (pcs) (list ($line (hasheq 'size (list +inf.0 line-height) 'out 'sw) + ;; consolidate chars into a single run (naively) + ;; by taking attributes from first (including origin) + ;; this only works because there's only one run per line + ;; that is, it suffices to position the first letter + (if consolidate-into-runs? + (list ($char (attrs (car pcs)) (append-map elems pcs))) + pcs)))))) (define (page-wrap xs size [debug #f]) (wrap xs size debug @@ -52,7 +60,7 @@ (define q (typeset (map hyphenate (list . ARGS)))) ;q (let ([doc (make-object PDFDocument - (hasheq 'compress #f + (hasheq 'compress #t 'size '(300 400)))]) (send* doc [pipe (open-output-file PS #:exists 'replace)]