diff options
| author | Omar Rizwan <omar@omar.website> | 2023-10-13 22:15:54 +0000 |
|---|---|---|
| committer | Omar Rizwan <omar@omar.website> | 2023-10-13 22:15:54 +0000 |
| commit | 3f3eece201d0c5dc8087788846f4a30e7bd297df (patch) | |
| tree | 2d8988fe1e8e1a41079423d63d3adf3c17934b19 /virtual-programs | |
| parent | display: nit (diff) | |
| download | folk-3f3eece201d0c5dc8087788846f4a30e7bd297df.tar.gz folk-3f3eece201d0c5dc8087788846f4a30e7bd297df.zip | |
text: Restore font support
Diffstat (limited to 'virtual-programs')
| -rw-r--r-- | virtual-programs/display/text.folk | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/virtual-programs/display/text.folk b/virtual-programs/display/text.folk index 64c96885..95901380 100644 --- a/virtual-programs/display/text.folk +++ b/virtual-programs/display/text.folk @@ -27,8 +27,18 @@ On process "display" { namespace export * namespace ensemble create } - set font [font load "PTSans-Regular"] - Claim the GPU has loaded 1 fonts + set ::FontCache [dict create] + # load all fonts into the fontCache + foreach fontPath [list {*}[glob vendor/fonts/*.png]] { + set fontName "" + regexp {vendor/fonts/(.*).png} $fontPath -> fontName + if {!($fontName eq "")} { + puts "Loaded $fontName into font cache" + set fontdata [font load $fontName] + dict set ::FontCache $fontName $fontdata + } + } + Claim the GPU has loaded [dict size $::FontCache] fonts set rotate $::rotate set invBilinear $::invBilinear @@ -78,7 +88,7 @@ On process "display" { return mix(vec4(0, 0, 0, 0), vec4(1, 1, 1, 1), opacity); }] - fn textExtent {text scale} { + fn textExtent {text scale font} { set em [* $scale 25.0] set x 0; set y 0 set width 0 @@ -111,14 +121,20 @@ On process "display" { set y0 [dict get $options y] } set scale [dict_getdef $options scale 1.0] + set font [dict_getdef $options font "PTSans-Regular"] set text [dict get $options text] set radians [dict get $options radians] + if {!([dict exists $::FontCache $font])} { + throw {DISPLAY FONT {font doesn't exist}} "$font doesn't exist" + } + set font [dict get $::FontCache $font] + set fontAtlas [font gpuAtlasImage $font] set fontAtlasSize [list [::image width [font atlasImage $font]] \ [::image height [font atlasImage $font]]] - set extent [vec2 rotate [textExtent $text $scale] $radians] + set extent [vec2 rotate [textExtent $text $scale $font] $radians] set em [* $scale 25.0] |
