structify glyphrun

main
Matthew Butterick 6 years ago
parent 3c32182d51
commit d0d5634d24

@ -5,7 +5,7 @@
"subset.rkt"
"glyph.rkt"
"bbox.rkt"
"glyphrun.rkt"
(except-in "glyphrun.rkt" advanceWidth)
"directory.rkt"
"db.rkt"
xenomorph
@ -275,7 +275,7 @@ https://github.com/mbutterick/fontkit/blob/master/src/TTFFont.js
(define positions (for/list ([pos (in-list posns)])
(match pos
[(list xad yad xoff yoff _) (+GlyphPosition xad yad xoff yoff)])))
(+GlyphRun glyphs positions)]))
(glyphrun glyphs positions)]))
(define (harfbuzz-layout this codepoints userFeatures script language)

@ -12,20 +12,26 @@ https://github.com/mbutterick/fontkit/blob/master/src/layout/GlyphRun.js
;; Represents a run of Glyph and GlyphPosition objects.
;; Returned by the font layout method.
(define-subclass object% (GlyphRun
glyphs ; An array of Glyph objects in the run
positions) ; An array of GlyphPosition objects for each glyph in the run
#;(define-subclass object% (GlyphRun
glyphs ; An array of Glyph objects in the run
positions) ; An array of GlyphPosition objects for each glyph in the run
(define/public (advanceWidth)
(for/sum ([pos (in-list positions)])
(· pos xAdvance))))
(define/public (advanceWidth)
(for/sum ([pos (in-list positions)])
(· pos xAdvance))))
(struct glyphrun (glyphs positions) #:transparent)
(define (advanceWidth gr)
(for/sum ([pos (in-list (glyphrun-positions gr))])
(· pos xAdvance)))
(define (append-glyphruns . grs)
(for/fold ([glyphss null]
[positionss null]
#:result (make-object GlyphRun
#:result (make-object glyphrun
(apply append (reverse glyphss))
(apply append (reverse positionss))))
([gr (in-list grs)])

@ -7,4 +7,5 @@
"glyph-position.rkt"
"subset.rkt"
"bbox.rkt"
"tables.rkt")
"tables.rkt"
"glyphrun.rkt")
Loading…
Cancel
Save