study line height

main
Matthew Butterick 6 years ago
parent 8b2d7a3eb3
commit 7c4965ef8e

@ -22,7 +22,7 @@ Goes here
What?! What?!
1. Yes 1. Yes. We said `raco pkg install hyphenate` dude. We said `raco pkg install hyphenate` dude
2. Indeed 2. Indeed

@ -23,7 +23,7 @@
hrbr) hrbr)
(define-tag-function (blockquote attrs exprs) (define-tag-function (blockquote attrs exprs)
(qexpr (list* '(container "bq") '(font "fira") '(fontsize "10") '(left-inset "5") attrs) exprs)) (qexpr (list* '(container "bq") '(font "fira") '(fontsize "10") '(line-height "11") '(left-inset "5") attrs) exprs))
(define id (default-tag-function 'id)) (define id (default-tag-function 'id))
(define class (default-tag-function 'class)) (define class (default-tag-function 'class))
@ -60,7 +60,7 @@
[str (in-list (string-split (string-join (get-elements expr) "") "\n"))]) [str (in-list (string-split (string-join (get-elements expr) "") "\n"))])
`(,(get-tag expr) ,(get-attrs expr) ,str)) `(,(get-tag expr) ,(get-attrs expr) ,str))
lbr)) lbr))
(qexpr (list* '(container "codeblock") '(line-height "11") '(left-inset "12") '(right-inset "12") attrs) new-exprs)) (qexpr (list* '(container "codeblock") '(line-height "13") '(left-inset "12") '(right-inset "12") attrs) new-exprs))
(define (list-base attrs exprs [bullet-val #f]) (define (list-base attrs exprs [bullet-val #f])
(qexpr (list* '(left-inset "20") attrs) (qexpr (list* '(left-inset "20") attrs)
@ -137,7 +137,11 @@
(font-size doc fontsize) (font-size doc fontsize)
(font doc (path->string (hash-ref (quad-attrs q) 'font))) (font doc (path->string (hash-ref (quad-attrs q) 'font)))
(define str (if (pair? (quad-elems q)) (unsafe-car (quad-elems q)) "")) (define str (if (pair? (quad-elems q)) (unsafe-car (quad-elems q)) ""))
(pt (string-width doc str) (current-line-height doc)))])])) (define line-height (cond
[(and (pair? (quad-elems q))
(string->number (quad-ref q 'line-height "NaN")))]
[else (current-line-height doc)]))
(pt (string-width doc str) line-height))])]))
(define draw-debug? #t) (define draw-debug? #t)
(define (draw-debug q doc [fill-color "#f99"] [stroke-color "#fcc"]) (define (draw-debug q doc [fill-color "#f99"] [stroke-color "#fcc"])
@ -146,11 +150,11 @@
(line-width doc 0.5) (line-width doc 0.5)
(apply rect doc (append (quad-origin q) (size q))) (apply rect doc (append (quad-origin q) (size q)))
(stroke doc stroke-color) (stroke doc stroke-color)
(apply rect doc (append (quad-origin q) (size q))) (circle doc (pt-x (in-point q)) (pt-y (in-point q)) 2)
(clip doc) (circle doc (pt-x (out-point q)) (pt-y (out-point q)) 2)
(circle doc (pt-x (in-point q)) (pt-y (in-point q)) 3)
(circle doc (pt-x (out-point q)) (pt-y (out-point q)) 3)
(fill doc fill-color) (fill doc fill-color)
(rect-centered doc (pt-x (inner-point q)) (pt-y (inner-point q)) 2)
(fill doc stroke-color)
(restore doc))) (restore doc)))
(define line-height 20) (define line-height 20)
@ -244,8 +248,7 @@
(λ (q) (string->number (quad-ref q 'line-height "NaN"))) (λ (q) (string->number (quad-ref q 'line-height "NaN")))
pcs)) pcs))
(match-define (list w h) (quad-size q:line)) (match-define (list w h) (quad-size q:line))
;; when `line-heights` is empty, this is just h (pt w (if (empty? line-heights) h (apply max line-heights))))]
(pt w (apply max (cons h line-heights))))]
[elems new-elems] [elems new-elems]
[offset (pt [offset (pt
(string->number (quad-ref (car new-elems) 'left-inset "0")) (string->number (quad-ref (car new-elems) 'left-inset "0"))
@ -267,10 +270,11 @@
(define top-margin 60) (define top-margin 60)
(define bottom-margin 120) (define bottom-margin 120)
(define side-margin 120) (define side-margin 120)
(define page-offset (pt side-margin top-margin)) (define page-offset (pt (/ side-margin 3) (/ top-margin 3)))
(require racket/date) (require racket/date)
(define q:page (q #:offset page-offset (define q:page (q #:offset page-offset
#:draw-start (λ (q doc) (add-page doc)) #:draw-start (λ (q doc) (add-page doc)
(scale doc 2 2))
#:draw-end (λ (q doc) #:draw-end (λ (q doc)
(font-size doc 10) (font-size doc 10)
(font doc charter) (font doc charter)
@ -296,7 +300,8 @@
(save doc) (save doc)
(match-define (list left top) (quad-origin q)) (match-define (list left top) (quad-origin q))
(match-define (list right bottom) (size q)) (match-define (list right bottom) (size q))
(rect doc (- left 4) (+ top 6) right (+ bottom 2)) #;(rect doc (- left 4) (+ top 6) right (+ bottom 2))
(rect doc left top right (+ bottom 4))
(line-width doc 1) (line-width doc 1)
(fill-and-stroke doc "#eee" "#999") (fill-and-stroke doc "#eee" "#999")
(restore doc)))) (restore doc))))
@ -380,7 +385,8 @@
(define pdf (time-name make-pdf (make-pdf #:compress #t (define pdf (time-name make-pdf (make-pdf #:compress #t
#:auto-first-page #f #:auto-first-page #f
#:output-path path #:output-path path
#:size "letter"))) #:width 350
#:height 400)))
(define line-width (- (pdf-width pdf) (* 2 side-margin))) (define line-width (- (pdf-width pdf) (* 2 side-margin)))
(define vertical-height (- (pdf-height pdf) top-margin bottom-margin)) (define vertical-height (- (pdf-height pdf) top-margin bottom-margin))
(let* ([x (time-name atomize (atomize (qexpr->quad xs)))] (let* ([x (time-name atomize (atomize (qexpr->quad xs)))]

Loading…
Cancel
Save