diff options
| author | ac79b0c6 <[email protected]> | 2022-07-21 12:10:53 +0800 |
|---|---|---|
| committer | ac79b0c6 <[email protected]> | 2022-07-21 12:10:53 +0800 |
| commit | 5465704f0edabdd020b00dc2e0b6ef805f38f13c (patch) | |
| tree | 1fd3c07f4120b6bd4432b12442d8e02c86697b17 /mkvlib/ass.go | |
| parent | 94de4aca61a37f2a93354fd126712ad8bc8cd210 (diff) | |
update mkvlib:add font subset restore.
Diffstat (limited to 'mkvlib/ass.go')
| -rw-r--r-- | mkvlib/ass.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go index 27a348f..80bd742 100644 --- a/mkvlib/ass.go +++ b/mkvlib/ass.go @@ -88,6 +88,22 @@ func (self *assProcessor) getLength(p string) time.Duration { return 0 } +func restoreSubsetted(str string) string { + reg := regexp.MustCompile(`; Font subset: (\w+) - ([\S ]+)`) + for _, v := range reg.FindAllStringSubmatch(str, -1) { + if len(v) > 2 { + _reg, _ := regexp.Compile(fmt.Sprintf(`(Style:[^,\r\n]+,|\\fn)(@?)%s([,\\\}])`, v[1])) + if _reg.MatchString(str) { + r := fmt.Sprintf("${1}${2}%s${3}", v[2]) + str = _reg.ReplaceAllString(str, r) + str = reg.ReplaceAllString(str, "; ♻ Font subset: ${1} - ${2}") + printLog(nil, logWarning, `Font subset restore: "%s" -> "%s".`, v[1], v[2]) + } + } + } + return str +} + func (self *assProcessor) parse() bool { ec := 0 self.seps = []string{"-", " "} @@ -100,6 +116,7 @@ func (self *assProcessor) parse() bool { data, err := io.ReadAll(f) if err == nil { str := toUTF8(data) + str = restoreSubsetted(str) self.subtitles[file] = str } else { ec++ |
