mathvariant = entry.get("mathvariant")
    baseChar = parseCodePoint(entry.get("baseChar"))
    transformedChar = parseCodePoint(entry.get("transformedChar"))
    if mathvariant not in mathvariantTransforms:
        mathvariantTransforms[mathvariant] = {}
    mathvariantTransforms[mathvariant][baseChar] = transformedChar

# There is no "isolated" mathvariant.
del mathvariantTransforms["isolated"]

# Create a WOFF font for each mathvariant.
for mathvariant in mathvariantTransforms:
    font = mathfont.create("mathvariant-%s" % mathvariant)
    for baseChar in mathvariantTransforms[mathvariant]:
        if baseChar not in font:
            mathfont.createGlyphFromValue(font, baseChar)
        transformedChar = mathvariantTransforms[mathvariant][baseChar]
        mathfont.createGlyphFromValue(font, transformedChar)
    mathfont.save(font)

# Create a test font for each mathvariant.
for mathvariant in mathvariantTransforms:
    print("Generating test for %s..." % mathvariant, end="")
    reftest = open("../relations/css-styling/mathvariant-%s.html" % mathvariant, "w")
    reftestReference = open("../relations/css-styling/mathvariant-%s-ref.html" % mathvariant, "w")
    source = '\
<!DOCTYPE html>\n\
<html>\n\
<head>\n\
<meta charset="utf-8"/>\n\
<title>mathvariant %s</title>\n'
Пример #2
0
# There is no "isolated" mathvariant.
del mathvariantTransforms["isolated"]

# Automatic mathvariant uses the same transform as italic.
# It is handled specially (see below).
mathvariantTransforms["auto"] = mathvariantTransforms["italic"]

# Create a WOFF font for each mathvariant.
for mathvariant in mathvariantTransforms:
    if mathvariant == "auto":
        continue
    font = mathfont.create("mathvariant-%s" % mathvariant,
                           "Copyright (c) 2016 MathML Association")
    for baseChar in mathvariantTransforms[mathvariant]:
        if baseChar not in font:
            mathfont.createGlyphFromValue(font, baseChar)
        transformedChar = mathvariantTransforms[mathvariant][baseChar]
        mathfont.createGlyphFromValue(font, transformedChar)
    mathfont.save(font)

# Create a MathML and CSS test for each mathvariant.
for mathvariant in mathvariantTransforms:
    print("Generating tests for %s..." % mathvariant, end="")
    reftest = open(
        "../relations/css-styling/mathvariant-%s.html" % mathvariant, "w")
    reftestReference = open(
        "../relations/css-styling/mathvariant-%s-ref.html" % mathvariant, "w")
    CSSreftest = open(
        "../../css/css-text/text-transform/math/text-transform-math-%s-001.tentative.html"
        % mathvariant, "w")
    CSSreftestReference = open(
# Convert the Python structure into JSON
jsonFileName = "../relations/css-styling/mathvariant-transforms.json"
print("Generating %s..." % jsonFileName, end="")
jsonFile = open(jsonFileName, "w")
jsonFile.write(json.dumps(mathvariantTransforms,sort_keys=True, indent=4))
jsonFile.close()
print(" done.")

# Encode each transformed
font = mathfont.create("mathvariant-transforms")

transformedCharIndex = 1  # Index of the transformedChar.
numberOfBits = 11 # Number of bits to encode transformedCharIndex.
glyphWidth = 2 * mathfont.em # width of the mathvariant glyphs
rectangleWidth = glyphWidth / numberOfBits
assert rectangleWidth > 100

for mathvariant in mathvariantTransforms:
    for baseChar in mathvariantTransforms[mathvariant]:
        if baseChar not in font:
            g = font.createChar(baseChar)
            mathfont.drawRectangleGlyph(g, glyphWidth, mathfont.em, 0)
        transformedChar = mathvariantTransforms[mathvariant][baseChar]
        mathfont.createGlyphFromValue(font,
                                      transformedChar,
                                      glyphWidth,
                                      transformedCharIndex,
                                      numberOfBits)
        transformedCharIndex += 1
mathfont.save(font)