summaryrefslogtreecommitdiff
path: root/mkvlib/ass.go
diff options
context:
space:
mode:
authorac79b0c6 <[email protected]>2023-04-27 17:52:31 +0800
committerac79b0c6 <[email protected]>2023-04-27 17:52:31 +0800
commit474cc82d5675fe9c515a4c3cb7e42044f8125f9a (patch)
treebd9b1b31814022240479ee956900086f10bf63c6 /mkvlib/ass.go
parent65d4b3492cf4ccc05b0aeeb973f26d9c4fffced2 (diff)
update mkvlib:fix bug.
Diffstat (limited to 'mkvlib/ass.go')
-rw-r--r--mkvlib/ass.go37
1 files changed, 21 insertions, 16 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go
index 2b21488..3c0c7dd 100644
--- a/mkvlib/ass.go
+++ b/mkvlib/ass.go
@@ -25,12 +25,13 @@ const (
)
type fontInfo struct {
- file string
- runes []rune
- index int
- oldName string
- newName string
- sFont string
+ file string
+ runes []rune
+ index int
+ oldName string
+ oldNames []string
+ newName string
+ sFont string
}
type fontCache struct {
@@ -576,12 +577,14 @@ func (self *assProcessor) reMap() {
for _, v := range self.m {
if _, ok := m[v.file]; !ok {
m[v.file] = v
+ m[v.file].oldNames = []string{v.oldName}
} else {
m[v.file].runes = append(m[v.file].runes, v.runes...)
+ m[v.file].oldNames = append(m[v.file].oldNames, v.oldName)
}
}
for _, v := range m {
- printLog(self.lcb, logInfo, `Font selected:[%s] -> "%s"[%d]`, v.oldName, v.file, v.index)
+ printLog(self.lcb, logInfo, `Font selected:[%s] -> "%s"[%d]`, strings.Join(v.oldNames, ","), v.file, v.index)
}
self.m = m
}
@@ -752,19 +755,21 @@ func (self *assProcessor) changeFontsName() bool {
func (self *assProcessor) replaceFontNameInAss() bool {
ec := 0
m := make(map[string]map[string]bool)
- if self.rename {
- for _, v := range self.m {
+ for _, v := range self.m {
+ if self.rename || len(v.oldNames) > 1 {
for f, s := range self.subtitles {
if m[f] == nil {
m[f] = make(map[string]bool)
}
- n := regexp.QuoteMeta(v.oldName)
- reg, _ := regexp.Compile(fmt.Sprintf(`(Style:[^,\r\n]+,|\\fn)(@?)%s([,\\\}])`, n))
- if reg.MatchString(s) {
- r := fmt.Sprintf("${1}${2}%s${3}", v.newName)
- s = reg.ReplaceAllString(s, r)
- m[f][v.oldName] = true
- self.subtitles[f] = s
+ for _, _v := range v.oldNames {
+ n := regexp.QuoteMeta(_v)
+ reg, _ := regexp.Compile(fmt.Sprintf(`(Style:[^,\r\n]+,|\\fn)(@?)%s([,\\\}])`, n))
+ if reg.MatchString(s) {
+ r := fmt.Sprintf("${1}${2}%s${3}", v.newName)
+ s = reg.ReplaceAllString(s, r)
+ m[f][v.oldName] = true
+ self.subtitles[f] = s
+ }
}
}
}