Exemple #1
0
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
Exemple #2
0
            '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)