def GenerateAsianSymbolFont(font): asianSymbol = [ 0x00B7, # MIDDLE DOT 0x2014, # EM DASH 0x2015, # HORIZONTAL BAR 0x2018, # LEFT SINGLE QUOTATION MARK 0x2019, # RIGHT SINGLE QUOTATION MARK 0x201C, # LEFT DOUBLE QUOTATION MARK 0x201D, # RIGHT DOUBLE QUOTATION MARK 0x2026, # HORIZONTAL ELLIPSIS 0x2027, # HYPHENATION POINT 0x2E3A, # TWO-EM DASH 0x2E3B, # THREE-EM DASH ] font = copy.deepcopy(font) if 'cmap_uvs' in font: del font['cmap_uvs'] rm = [] for k in font['cmap']: if int(k) not in asianSymbol: rm.append(k) for k in rm: del font['cmap'][k] NowarRemoveFeatures(font) Gc(font) return font
'rb') as asianFile: asianFont = json.loads(asianFile.read().decode('UTF-8', errors='replace')) # pre-apply `palt` in UI family if "UI" in param["feature"]: ApplyPalt(asianFont) else: NowarApplyPaltMultiplied(asianFont, 0.4) asianSymbolFont = GenerateAsianSymbolFont(asianFont) MergeAbove(baseFont, asianSymbolFont) # pseudo-simplified font if "Simp" in param["feature"]: Simplify(asianFont) NowarRemoveFeatures(asianFont) MergeBelow(baseFont, asianFont) # remap `丶` to `·` in RP variant if "RP" in param["feature"]: baseFont['cmap'][str(ord('丶'))] = baseFont['cmap'][str(ord('·'))] Gc(baseFont) Consolidate(baseFont) outStr = json.dumps(baseFont, ensure_ascii=False, separators=(',', ':')) with codecs.open( "build/nowar/{}.otd".format(configure.GenerateFilename(param)), 'w', 'UTF-8') as outFile: outFile.write(outStr)