From 44bed5068c796e9b6de92e29216c547be834fa61 Mon Sep 17 00:00:00 2001 From: b5f0d6c3 Date: Tue, 3 May 2022 17:58:55 +0800 Subject: update mkvtool:\u0020 --- mkvlib/ass.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'mkvlib/ass.go') 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 } -- cgit v1.2.1