Skip to content

Commit af43445

Browse files
committed
⚡ Improve system font loading #13356
1 parent c7746d1 commit af43445

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

kernel/api/system.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ func setFollowSystemLockScreen(c *gin.Context) {
548548
func getSysFonts(c *gin.Context) {
549549
ret := gulu.Ret.NewResult()
550550
defer c.JSON(http.StatusOK, ret)
551-
ret.Data = util.GetSysFonts()
551+
ret.Data = util.LoadSysFonts()
552552
}
553553

554554
func version(c *gin.Context) {

kernel/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ func main() {
4848
util.PushClearAllMsg()
4949

5050
job.StartCron()
51+
52+
go util.LoadSysFonts()
5153
go model.AutoGenerateFileHistory()
5254
go cache.LoadAssets()
5355
go util.CheckFileSysStatus()

kernel/util/font.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"os"
2121
"sort"
2222
"strings"
23+
"sync"
24+
"time"
2325

2426
"github.com/88250/gulu"
2527
"github.com/ConradIrwin/font/sfnt"
@@ -30,7 +32,20 @@ import (
3032
"golang.org/x/text/transform"
3133
)
3234

33-
func GetSysFonts() (ret []string) {
35+
var (
36+
sysFonts []string
37+
sysFontsLock = sync.Mutex{}
38+
)
39+
40+
func LoadSysFonts() (ret []string) {
41+
sysFontsLock.Lock()
42+
defer sysFontsLock.Unlock()
43+
44+
if 0 < len(sysFonts) {
45+
return sysFonts
46+
}
47+
48+
start := time.Now()
3449
fonts := loadFonts()
3550
ret = []string{}
3651
for _, font := range fonts {
@@ -39,6 +54,8 @@ func GetSysFonts() (ret []string) {
3954
ret = gulu.Str.RemoveDuplicatedElem(ret)
4055
ret = removeUnusedFonts(ret)
4156
sort.Strings(ret)
57+
sysFonts = ret
58+
logging.LogInfof("loaded system fonts [%d] in [%dms]", len(sysFonts), time.Since(start).Milliseconds())
4259
return
4360
}
4461

0 commit comments

Comments
 (0)