diff options
Diffstat (limited to 'mkvlib')
| -rw-r--r-- | mkvlib/ass.go | 20 | ||||
| -rw-r--r-- | mkvlib/shared.go | 2 |
2 files changed, 17 insertions, 5 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go index 77ed8ac..4b38dc1 100644 --- a/mkvlib/ass.go +++ b/mkvlib/ass.go @@ -167,6 +167,7 @@ func (self *assProcessor) parse() bool { if ___reg.MatchString(v) { v += "0123456789" } + v += "\u0020\u00a0" self.m[k] = new(fontInfo) self.m[k].runes = []rune(v) self.m[k].oldName = strings.Split(k, "^")[0] @@ -266,14 +267,22 @@ func (self *assProcessor) getFontName(p string) [][]map[string]bool { for i := 0; i < l; i++ { _f, err := c.Font(i) if err == nil { - fonts = append(fonts, _f) + if g, _ := _f.GlyphIndex(nil, '\u0020'); g == 0 { + printLog(self.lcb, `Font: "%s"[%d] is not defined '\u0020',skip.`, p, i) + } else { + fonts = append(fonts, _f) + } } } } } else { _f, err := sfnt.Parse(data) if err == nil { - fonts = append(fonts, _f) + if g, _ := _f.GlyphIndex(nil, '\u0020'); g == 0 { + printLog(self.lcb, `Font: "%s" is not defined '\u0020',skip.`, p) + } else { + fonts = append(fonts, _f) + } } } for _, _font := range fonts { @@ -322,12 +331,16 @@ func (self *assProcessor) checkFontMissing(f *fontInfo, i int, c bool) bool { } else { _font, _ = sfnt.Parse(data) } + _m := make(map[rune]bool) if _font != nil { for _, r := range f.runes { n, _ := _font.GlyphIndex(nil, r) if n == 0 { if r == '\u0020' || r == '\u00a0' { - _runes = append(_runes, r) + if !_m[r] { + _m[r] = true + _runes = append(_runes, r) + } } else { _str += string(r) } @@ -473,7 +486,6 @@ func (self *assProcessor) reMap() { } else { m[v.newName].runes = append(m[v.newName].runes, v.runes...) } - m[v.newName].runes = append(m[v.newName].runes, '\u00a0', '\u0020') } self.m = m } diff --git a/mkvlib/shared.go b/mkvlib/shared.go index 32df5ef..3efc510 100644 --- a/mkvlib/shared.go +++ b/mkvlib/shared.go @@ -11,7 +11,7 @@ import ( ) const libName = "mkvlib" -const libVer = "v1.8.0" +const libVer = "v1.8.1" const LibFName = libName + " " + libVer |
