From 5465704f0edabdd020b00dc2e0b6ef805f38f13c Mon Sep 17 00:00:00 2001 From: ac79b0c6 <105047743+ac79b0c6@users.noreply.github.com> Date: Thu, 21 Jul 2022 12:10:53 +0800 Subject: update mkvlib:add font subset restore. --- mkvlib/ass.go | 17 +++++++++++++++++ mkvlib/shared.go | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) 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++ diff --git a/mkvlib/shared.go b/mkvlib/shared.go index 5737c0d..7c6ef5e 100644 --- a/mkvlib/shared.go +++ b/mkvlib/shared.go @@ -12,7 +12,7 @@ import ( ) const libName = "mkvlib" -const libVer = "v2.1.7" +const libVer = "v2.1.8" const LibFName = libName + " " + libVer -- cgit v1.2.1