diff options
| author | ac79b0c6 <[email protected]> | 2022-05-12 14:16:47 +0800 |
|---|---|---|
| committer | ac79b0c6 <[email protected]> | 2022-05-12 14:16:47 +0800 |
| commit | 5ed63f9a14320665dd5c4e945403a76457a65313 (patch) | |
| tree | 08837f6ba3560ac3f956ab65550270bb30402342 | |
| parent | b5244b304b1a06b2ea8b9de1e159ae70cd63930b (diff) | |
update mkvlib:add list missing fonts
| -rw-r--r-- | mkvlib/ass.go | 16 | ||||
| -rw-r--r-- | mkvlib/c/README.md | 7 | ||||
| -rw-r--r-- | mkvlib/c/exports.go | 4 | ||||
| -rw-r--r-- | mkvlib/c/sdk.cs | 8 | ||||
| -rw-r--r-- | mkvlib/c/sdk.py | 4 | ||||
| -rw-r--r-- | mkvlib/mkv.go | 7 | ||||
| -rw-r--r-- | mkvlib/shared.go | 2 |
7 files changed, 28 insertions, 20 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go index dc58d4f..ae54e12 100644 --- a/mkvlib/ass.go +++ b/mkvlib/ass.go @@ -208,12 +208,16 @@ func (self *assProcessor) parse() bool { return ec == 0 } -func (self *assProcessor) getFontsList() []string { +func (self *assProcessor) getFontsList() [][]string { list := make([]string, 0) for k, _ := range self.m { list = append(list, k) } - return list + list2 := make([]string, 0) + if self.check { + list2 = self.matchFonts() + } + return [][]string{list, list2} } func (self *assProcessor) dumpFont(file, out string) bool { @@ -403,7 +407,7 @@ func (self *assProcessor) checkFontMissing(f *fontInfo, i int, c bool) bool { return _str == "" && len(_runes) == 0 } -func (self *assProcessor) matchFonts() bool { +func (self *assProcessor) matchFonts() []string { self.fg = make(map[string]string) fonts := findFonts(self._fonts) m := self.getFontsName(fonts) @@ -460,14 +464,14 @@ func (self *assProcessor) matchFonts() bool { } w(false) w(true) - ok := true + el := make([]string, 0) for k, _ := range self.m { if self.m[k].file == "" { - ok = false + el = append(el, k) printLog(self.lcb, `Missing the font: "%s".`, k) } } - return ok + return el } func (self *assProcessor) fontNameToMap(m []map[string]bool) map[string]map[string]bool { diff --git a/mkvlib/c/README.md b/mkvlib/c/README.md index 79d7b97..7ac28dd 100644 --- a/mkvlib/c/README.md +++ b/mkvlib/c/README.md @@ -195,10 +195,11 @@ //return: 是否全程无错 ``` - ```c - char* GetFontsList(char* files, logCallback lcb); - //取得数组内字幕需要的全部字体 + char* GetFontsList(char* files, char* fonts, logCallback lcb); + //取得数组内字幕需要的全部字体,如果设置了Check则会试图匹配字体,并输出匹配失败的列表. //files: 字幕文件路径的json的数组 - //return: json格式的数组 + //fonts: 字体文件夹路径 + //return: json格式的二维数组(第一个成员是需要的字体名称,第二个成员是没有匹配成功的字体名称.) ``` - ```c void NRename(bool n); diff --git a/mkvlib/c/exports.go b/mkvlib/c/exports.go index b24b345..f1537e3 100644 --- a/mkvlib/c/exports.go +++ b/mkvlib/c/exports.go @@ -132,14 +132,14 @@ func A2P(a2p, apc bool, pr, pf *C.char) { } //export GetFontsList -func GetFontsList(files *C.char, lcb C.logCallback) *C.char { +func GetFontsList(files, fonts *C.char, lcb C.logCallback) *C.char { if !checkInstance() { return cs("") } obj := make([]string, 0) if json.Unmarshal([]byte(gs(files)), &obj) == nil { _files := obj - list := getter.GetProcessorInstance().GetFontsList(_files, _lcb(lcb)) + list := getter.GetProcessorInstance().GetFontsList(_files, gs(fonts), _lcb(lcb)) data, _ := json.Marshal(list) return cs(string(data)) } diff --git a/mkvlib/c/sdk.cs b/mkvlib/c/sdk.cs index 50be1e8..379396b 100644 --- a/mkvlib/c/sdk.cs +++ b/mkvlib/c/sdk.cs @@ -50,7 +50,7 @@ public static class mkvlib static extern void A2P(bool a2p, bool apc, IntPtr pr, IntPtr pf); [DllImport("mkvlib.so")] - static extern IntPtr GetFontsList(IntPtr files, logCallback lcb); + static extern IntPtr GetFontsList(IntPtr files, IntPtr fonts, logCallback lcb); [DllImport("mkvlib.so")] static extern void Cache(IntPtr ccs); @@ -155,11 +155,11 @@ public static class mkvlib A2P(a2p, apc, cs(pr), cs(pf)); } - public static string[] GetFontsList(string[] files, Action<string> lcb) + public static string[][] GetFontsList(string[] files, string fonts, Action<string> lcb) { string _files = JsonSerializer.Serialize<string[]>(files); - string result = css(GetFontsList(cs(_files), _lcb(lcb))); - return JsonSerializer.Deserialize<string[]>(result); + string result = css(GetFontsList(cs(_files), cs(fonts), _lcb(lcb))); + return JsonSerializer.Deserialize<string[][]>(result); } public static void Cache(string[] ccs) diff --git a/mkvlib/c/sdk.py b/mkvlib/c/sdk.py index 0e83fdd..73de70d 100644 --- a/mkvlib/c/sdk.py +++ b/mkvlib/c/sdk.py @@ -90,11 +90,11 @@ def a2p(en, apc, pr, pf): call(en, apc, pr.encode(), pf.encode()) -def getFontsList(files, lcb): +def getFontsList(files, fonts, lcb): call = lib.GetFontsList call.restype = c_char_p _files = dumps(files) - return loads(call(_files.encode(), lcb).decode()) + return loads(call(_files.encode(), fonts.encode(), lcb).decode()) def cache(ccs): diff --git a/mkvlib/mkv.go b/mkvlib/mkv.go index ca6a083..d10ece9 100644 --- a/mkvlib/mkv.go +++ b/mkvlib/mkv.go @@ -331,7 +331,7 @@ func (self *mkvProcessor) ASSFontSubset(files []string, fonts, output string, di } obj.fonts = findFonts(obj._fonts) obj.loadCache(self.caches) - r := obj.parse() && obj.matchFonts() && obj.createFontsSubset() && obj.changeFontsName() && obj.replaceFontNameInAss() + r := obj.parse() && len(obj.matchFonts()) == 0 && obj.createFontsSubset() && obj.changeFontsName() && obj.replaceFontNameInAss() if !r { _ = os.RemoveAll(obj.output) } @@ -355,11 +355,14 @@ func (self *mkvProcessor) ass2Pgs(input []string, resolution, frameRate, fontsDi return self.a2p && ass2Pgs(input, resolution, frameRate, fontsDir, output, lcb) } -func (self *mkvProcessor) GetFontsList(files []string, lcb logCallback) []string { +func (self *mkvProcessor) GetFontsList(files []string, fonts string, lcb logCallback) [][]string { if len(files) > 0 { obj := new(assProcessor) obj.files = files obj.lcb = lcb + obj._fonts = fonts + obj.check = self.check + obj.loadCache(self.caches) if obj.parse() { return obj.getFontsList() } diff --git a/mkvlib/shared.go b/mkvlib/shared.go index 807936c..f924f83 100644 --- a/mkvlib/shared.go +++ b/mkvlib/shared.go @@ -11,7 +11,7 @@ import ( ) const libName = "mkvlib" -const libVer = "v2.0.0" +const libVer = "v2.0.1" const LibFName = libName + " " + libVer |
