summaryrefslogtreecommitdiff
path: root/mkvlib
diff options
context:
space:
mode:
authorb5f0d6c3 <[email protected]>2022-04-28 14:10:04 +0800
committerb5f0d6c3 <[email protected]>2022-04-28 14:10:04 +0800
commit91b875f580af3422fbecac0a27c82138d3bd23fd (patch)
tree049795d281fa42e6f1fbcbc8f2bd3e536f15af2a /mkvlib
parent2b40de0a0c3a82c90bdcb2c93574ce3a497fe16e (diff)
update mkvlib:fix fallback bug
Diffstat (limited to 'mkvlib')
-rw-r--r--mkvlib/ass.go48
-rw-r--r--mkvlib/shared.go2
2 files changed, 22 insertions, 28 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go
index 43a984b..de3e3b6 100644
--- a/mkvlib/ass.go
+++ b/mkvlib/ass.go
@@ -31,7 +31,6 @@ type fontInfo struct {
oldName string
newName string
sFont string
- rand string
}
type fontCache struct {
@@ -82,7 +81,8 @@ func (self *assProcessor) parse() bool {
reg, _ := regexp.Compile(`\\fn@?([^\r\n\\\}]*)`)
_reg, _ := regexp.Compile(`\\([bir])([^\r\n\\\}]*)`)
__reg, _ := regexp.Compile(`nd\d+`)
- m := make(map[string]map[rune]bool)
+ ___reg, _ := regexp.Compile(`\s`)
+ m := make(map[string]string)
for k, v := range self.subtitles {
subtitle, err := astisub.ReadFromSSAWithOptions(strings.NewReader(v), opt)
if err != nil {
@@ -150,13 +150,7 @@ func (self *assProcessor) parse() bool {
arr = append(arr, "Regular")
}
_name := fmt.Sprintf("%s^%s", name, strings.Join(arr, " "))
- if m[_name] == nil {
- m[_name] = make(map[rune]bool)
- }
- str := __item.Text
- for _, char := range str {
- m[_name][char] = true
- }
+ m[_name] += __item.Text
}
}
}
@@ -164,21 +158,10 @@ func (self *assProcessor) parse() bool {
self.m = make(map[string]*fontInfo)
reg, _ = regexp.Compile("[A-Za-z0-9]")
for k, v := range m {
- str := ""
- for _k, _ := range v {
- str += string(_k)
- }
- str = strings.TrimSpace(str)
- if str != "" {
- str = reg.ReplaceAllString(str, "")
- str += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- reg, _ = regexp.Compile("[1234567890]")
- if reg.MatchString(str) {
- str = reg.ReplaceAllString(str, "")
- str += "1234567890"
- }
+ v = ___reg.ReplaceAllLiteralString(v, "")
+ if v != "" {
self.m[k] = new(fontInfo)
- self.m[k].str = str
+ self.m[k].str = v
self.m[k].oldName = strings.Split(k, "^")[0]
}
}
@@ -390,7 +373,6 @@ func (self *assProcessor) matchFonts() bool {
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)
n := self.fg[_k[0]]
if n == "" {
n = randomStr(8)
@@ -409,7 +391,6 @@ func (self *assProcessor) matchFonts() bool {
}
if f, i := self.matchCache(fmt.Sprintf("%s^%s", _k[0], _k[1])); f != "" {
self.m[k].file, self.m[k].index = f, i
- self.m[k].rand = randomStr(4)
n := self.fg[_k[0]]
if n == "" {
n = randomStr(8)
@@ -431,9 +412,21 @@ func (self *assProcessor) matchFonts() bool {
return ok
}
+func (self *assProcessor) reMap() {
+ m := make(map[string]*fontInfo)
+ for _, v := range self.m {
+ if _, ok := m[v.newName]; !ok {
+ m[v.newName] = v
+ } else {
+ m[v.newName].str += v.str
+ }
+ }
+ self.m = m
+}
+
func (self *assProcessor) createFontSubset(font *fontInfo) bool {
ok := false
- fn := fmt.Sprintf(`%s.%s.txt`, font.newName, font.rand)
+ fn := fmt.Sprintf(`%s.txt`, font.newName)
_, fn, _, _ = splitPath(fn)
fn = path.Join(self.tDir, fn)
_, n, e, _ := splitPath(font.file)
@@ -446,7 +439,7 @@ func (self *assProcessor) createFontSubset(font *fontInfo) bool {
return false
}
if os.WriteFile(fn, []byte(font.str), os.ModePerm) == nil {
- _fn := fmt.Sprintf("%s.%s%s", font.newName, font.rand, e)
+ _fn := fmt.Sprintf("%s%s", font.newName, e)
_fn = path.Join(self.output, _fn)
args := make([]string, 0)
args = append(args, "--text-file="+fn)
@@ -471,6 +464,7 @@ func (self *assProcessor) createFontSubset(font *fontInfo) bool {
}
func (self *assProcessor) createFontsSubset() bool {
+ self.reMap()
err := os.RemoveAll(self.output)
if !(err == nil || err == os.ErrNotExist) {
printLog(self.lcb, "Failed to clean the output folder.")
diff --git a/mkvlib/shared.go b/mkvlib/shared.go
index c66b479..5f9ea5a 100644
--- a/mkvlib/shared.go
+++ b/mkvlib/shared.go
@@ -11,7 +11,7 @@ import (
)
const libName = "mkvlib"
-const libVer = "v1.5.6"
+const libVer = "v1.5.7"
const LibFName = libName + " " + libVer