diff options
| author | b5f0d6c3 <[email protected]> | 2022-04-27 21:57:27 +0800 |
|---|---|---|
| committer | b5f0d6c3 <[email protected]> | 2022-04-27 21:57:27 +0800 |
| commit | b02315947a362ade3f20dc84b7bac1437494ab96 (patch) | |
| tree | 5c994f3d6d9c75cab2b2b9b33bd0edd2017e4dde | |
| parent | 7abbe66bf97cb2372200ad4805d8039bc1ae26dd (diff) | |
update mkvlib:fix fallback bug
| -rw-r--r-- | mkvlib/ass.go | 36 | ||||
| -rw-r--r-- | mkvlib/shared.go | 2 |
2 files changed, 25 insertions, 13 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go index a0c0677..b9cd911 100644 --- a/mkvlib/ass.go +++ b/mkvlib/ass.go @@ -355,7 +355,8 @@ func (self *assProcessor) matchFonts() bool { printLog(self.lcb, `Font fallback:[%s^%s] -> [%s^Regular]`, _k[0], _k[1], _k[0]) _k[1] = "Regular" } - seps := make([]string, 0) + seps0 := make([]string, 0) + seps1 := make([]string, 0) for _, v := range self.seps { l := strings.LastIndex(_k[0], v) tk := "" @@ -363,11 +364,16 @@ func (self *assProcessor) matchFonts() bool { tk = _k[0][l+1:] } if tk != "" { - seps = append(seps, tk) + seps0 = append(seps0, _k[0][:l]) + seps1 = append(seps1, tk) } } - _tk := func(qk map[string]bool) bool { - for _, v := range seps { + _tk := func(q1 bool, qk map[string]bool) bool { + arr := seps0 + if q1 { + arr = seps1 + } + for _, v := range arr { if qk[v] { return true } @@ -377,7 +383,7 @@ func (self *assProcessor) matchFonts() bool { } for __k, v := range m { for ___k, _v := range v { - if _v[0][_k[0]] && (_v[1][_k[1]] || _tk(_v[1])) { + if (_v[0][_k[0]] || _tk(false, _v[0])) && (_v[1][_k[1]] || _tk(true, _v[1])) { self.m[k].file = __k self.m[k].index = reg.FindStringSubmatch(___k)[1] self.m[k].rand = randomStr(4) @@ -755,7 +761,8 @@ func (self *assProcessor) matchCache(k string) (string, string) { ok := "" i := -1 _k := strings.Split(k, "^") - seps := make([]string, 0) + seps0 := make([]string, 0) + seps1 := make([]string, 0) for _, v := range self.seps { l := strings.LastIndex(_k[0], v) tk := "" @@ -763,12 +770,17 @@ func (self *assProcessor) matchCache(k string) (string, string) { tk = _k[0][l+1:] } if tk != "" { - seps = append(seps, tk) + seps0 = append(seps0, _k[0][:l]) + seps1 = append(seps1, tk) } } - _tk := func(qk string) bool { - for _, v := range seps { - if qk == v { + _tk := func(q1 bool, qk string) bool { + arr := seps0 + if q1 { + arr = seps1 + } + for _, v := range arr { + if v == qk { return true } } @@ -777,9 +789,9 @@ func (self *assProcessor) matchCache(k string) (string, string) { for _, v := range self.cache { for q, _v := range v.Fonts { for _, __v := range _v { - if __v == _k[0] { + if __v == _k[0] || _tk(false, _k[0]) { for _, ___v := range v.Types[q] { - if ___v == _k[1] || _tk(___v) { + if ___v == _k[1] || _tk(true, _k[1]) { ok = v.File i = q break diff --git a/mkvlib/shared.go b/mkvlib/shared.go index 857ba3c..71e47d0 100644 --- a/mkvlib/shared.go +++ b/mkvlib/shared.go @@ -11,7 +11,7 @@ import ( ) const libName = "mkvlib" -const libVer = "v1.5.3" +const libVer = "v1.5.4" const LibFName = libName + " " + libVer |
