main
Matthew Butterick 5 years ago
parent 83acf28272
commit d6d4906c3c

@ -102,10 +102,7 @@ https://github.com/mbutterick/pdfkit/blob/master/lib/mixins/text.coffee
(send this addContent (format "1 0 0 1 ~a ~a Tm" (numberizer x) (numberizer y))) ; text position
(send this addContent (format "/~a ~a Tf" (get-field id (get-field current-font this))
(numberizer (get-field current-font-size this)))) ; font and font size
(let ([mode (cond
[(and (hash-ref options 'fill #f) (hash-ref options 'stroke #f)) 2]
[(hash-ref options 'stroke #f) 1]
[else 0])])
(let ([mode (+ (if (hash-ref options 'fill #f) 1 0) (if (hash-ref options 'stroke #f) 1 0))])
(when (and mode (not (zero? mode)))
(send this addContent (format "~a Tr" mode))))
(when (not (zero? character-spacing))
@ -118,7 +115,7 @@ https://github.com/mbutterick/pdfkit/blob/master/lib/mixins/text.coffee
;; 180321: the first call to this operation is very slow from Quad
;; 181126: because `encode` calls `layout`
(match-define (list encoded-char-strs positions)
(send (get-field current-font this) encode text (hash-ref options 'features #f)))
(map list->vector (send (get-field current-font this) encode text (hash-ref options 'features #f))))
(define scale (/ (get-field current-font-size this) 1000.0))
(define commands empty)
@ -127,8 +124,8 @@ https://github.com/mbutterick/pdfkit/blob/master/lib/mixins/text.coffee
(define last-segment 0)
(define (add-segment cur)
(when (< last-segment cur)
(define hex (string-append* (sublist encoded-char-strs last-segment cur)))
(define posn (list-ref positions (sub1 cur)))
(define hex (string-append* (for/list ([str (in-vector encoded-char-strs last-segment cur)]) str)))
(define posn (vector-ref positions (sub1 cur)))
(define advance (- (glyph-position-x-advance posn) (glyph-position-advance-width posn)))
(set! commands (cons (format "<~a> ~a" hex (numberizer (- advance))) commands)))
(set! last-segment cur))
@ -164,6 +161,6 @@ https://github.com/mbutterick/pdfkit/blob/master/lib/mixins/text.coffee
#false]))
(values having-offset (+ x (* (glyph-position-x-advance posn) scale))))
(flush (length positions))
(flush (vector-length positions))
(send this addContent "ET") ; end the text object
(send this restore)))) ; restore flipped coordinate system

Loading…
Cancel
Save