@@ -124,7 +124,8 @@ extension ValueType {
124124 " words " : . list( . string) ,
125125 " characters " : . list( . string) ,
126126 " linespacing " : . optional( . number) ,
127- " font " : . optional( . string) ,
127+ " font " : . optional( . font) ,
128+ " name " : . string,
128129 ]
129130}
130131
@@ -201,6 +202,8 @@ extension Value {
201202 members += color. members
202203 }
203204 return members
205+ case . font:
206+ return [ " name " ]
204207 case . text:
205208 return [ " string " , " font " , " color " , " linespacing " ]
206209 case let . object( values) :
@@ -438,12 +441,19 @@ extension Value {
438441 default :
439442 return nil
440443 }
444+ case let . font( font) :
445+ switch name {
446+ case " name " :
447+ return . string( font)
448+ default :
449+ return nil
450+ }
441451 case let . text( text) :
442452 switch name {
443453 case " string " :
444454 return . string( text. string)
445455 case " font " :
446- return text. font. map { . string ( $0) } ?? . void
456+ return text. font. map { . font ( $0) } ?? . void
447457 case " color " :
448458 return text. color. map { . color( $0) } ?? . void
449459 case " linespacing " :
@@ -470,7 +480,7 @@ extension Value {
470480 guard let values = range. stride. map ( Array . init) else { fallthrough }
471481 return - values. endIndex ..< values. endIndex
472482 case . boolean, . texture, . number, . radians, . halfturns, . material, . rotation,
473- . string, . text, . path, . mesh, . polygon, . point, . bounds, . object:
483+ . string, . font , . text, . path, . mesh, . polygon, . point, . bounds, . object:
474484 return 0 ..< 0
475485 }
476486 }
@@ -501,7 +511,7 @@ extension Value {
501511 let index = index < 0 ? values. count + index : index
502512 return values. indices. contains ( index) ? . number( values [ index] ) : nil
503513 case . boolean, . texture, . number, . radians, . halfturns, . material, . rotation,
504- . string, . text, . path, . mesh, . polygon, . point, . bounds, . object:
514+ . string, . font , . text, . path, . mesh, . polygon, . point, . bounds, . object:
505515 return nil
506516 }
507517 }
@@ -515,7 +525,7 @@ private extension [Value] {
515525 return values. flattened
516526 case . color, . texture, . material, . boolean, . number,
517527 . radians, . halfturns, . vector, . size, . rotation,
518- . string, . text, . path, . mesh, . polygon, . point,
528+ . string, . font , . text, . path, . mesh, . polygon, . point,
519529 . range, . bounds, . object:
520530 return [ $0]
521531 }
0 commit comments