summaryrefslogtreecommitdiff
path: root/mkvlib
diff options
context:
space:
mode:
Diffstat (limited to 'mkvlib')
-rw-r--r--mkvlib/ass.go17
-rw-r--r--mkvlib/shared.go2
2 files changed, 18 insertions, 1 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++
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