summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mkvlib/ass.go12
-rw-r--r--mkvlib/shared.go2
-rw-r--r--mkvlib/utils.go15
3 files changed, 23 insertions, 6 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go
index 5b04ebb..8ba585c 100644
--- a/mkvlib/ass.go
+++ b/mkvlib/ass.go
@@ -347,9 +347,11 @@ func (self *assProcessor) getFontsName(files []string) map[string][]map[string]b
func (self *assProcessor) checkFontMissing(f *fontInfo, v map[string]bool, i int, c bool) bool {
_str := ""
_runes := make([]rune, 0)
+ _m := make(map[rune]bool)
for _, _v := range f.runes {
if !v[string(_v)] {
- if _v == '\u0020' || _v == '\u00a0' {
+ if (_v == '\u0020' || _v == '\u00a0') && !_m[_v] {
+ _m[_v] = true
_runes = append(_runes, _v)
} else {
_str += string(_v)
@@ -361,6 +363,7 @@ func (self *assProcessor) checkFontMissing(f *fontInfo, v map[string]bool, i int
h = "C"
}
if _str != "" {
+ _str = stringDeduplication(_str)
printLog(self.lcb, `{%s%02d}Font [%s] missing nomal char(s): "%s"`, h, i, f.oldName, _str)
}
if len(_runes) > 0 {
@@ -512,7 +515,9 @@ func (self *assProcessor) createFontSubset(font *fontInfo) bool {
printLog(self.lcb, "Failed to create the output folder.")
return false
}
- if os.WriteFile(fn, []byte(string(font.runes)), os.ModePerm) == nil {
+ str := string(font.runes)
+ str = stringDeduplication(str)
+ if os.WriteFile(fn, []byte(str), os.ModePerm) == nil {
n := font.newName
if !self.rename {
n = font.oldName
@@ -870,9 +875,6 @@ func (self *assProcessor) matchCache(k string) (string, string) {
_count := 0
_k := strings.Split(k, "^")
for _, v := range self.cache {
- if ok != "" {
- break
- }
for q, list := range v.Names {
if self.matchFontName(list, _k) {
if self.check {
diff --git a/mkvlib/shared.go b/mkvlib/shared.go
index 5249b00..52c13cf 100644
--- a/mkvlib/shared.go
+++ b/mkvlib/shared.go
@@ -11,7 +11,7 @@ import (
)
const libName = "mkvlib"
-const libVer = "v1.6.7"
+const libVer = "v1.6.8"
const LibFName = libName + " " + libVer
diff --git a/mkvlib/utils.go b/mkvlib/utils.go
index 802b94e..3f9d935 100644
--- a/mkvlib/utils.go
+++ b/mkvlib/utils.go
@@ -196,3 +196,18 @@ func findFonts(dir string) []string {
list, _ := findPath(dir, `\.((?i)(ttf)|(otf)|(ttc))$`)
return list
}
+
+func stringDeduplication(str string) string {
+ _s := ""
+ _m := make(map[rune]int)
+ _rs := []rune(str)
+ for i, r := range _rs {
+ if _, ok := _m[r]; !ok {
+ _m[r] = i
+ }
+ }
+ for _, v := range _m {
+ _s += string(_rs[v])
+ }
+ return _s
+}