Exemple #1
0
 def _cloneTypeface(typeface, ttFont, variations):
     fvar = ttFont.get("fvar")
     defaultLocation = {a.axisTag: variations.get(a.axisTag, a.defaultValue) for a in fvar.axes}
     tags = [a.axisTag for a in fvar.axes]
     location = [(tag, variations.get(tag, defaultLocation[tag])) for tag in tags]
     makeCoord = skia.FontArguments.VariationPosition.Coordinate
     rawCoords = [makeCoord(tagToInt(tag), value) for tag, value in location]
     coords = skia.FontArguments.VariationPosition.Coordinates(rawCoords)
     pos = skia.FontArguments.VariationPosition(coords)
     fontArgs = skia.FontArguments()
     fontArgs.setVariationDesignPosition(pos)
     return typeface.makeClone(fontArgs)
 def _setFontVariationDesignPosition(self, location):
     from .font import tagToInt
     makeCoord = skia.FontArguments.VariationPosition.Coordinate
     rawCoords = [
         makeCoord(tagToInt(tag), value) for tag, value in location
     ]
     coords = skia.FontArguments.VariationPosition.Coordinates(rawCoords)
     pos = skia.FontArguments.VariationPosition(coords)
     fontArgs = skia.FontArguments()
     fontArgs.setVariationDesignPosition(pos)
     tf = self.font.getTypeface().makeClone(fontArgs)
     self.font.setTypeface(tf)
Exemple #3
0
        def draw(pen, state, data):
            if state != 0:
                return

            if not pen.visible:
                return

            if isinstance(pen, DATText):
                if isinstance(pen.style.font, str):
                    font = skia.Typeface(pen.style.font)
                else:
                    font = skia.Typeface.MakeFromFile(str(pen.style.font.path))
                    if len(pen.style.variations) > 0:
                        fa = skia.FontArguments()
                        # h/t https://github.com/justvanrossum/drawbot-skia/blob/master/src/drawbot_skia/gstate.py
                        to_int = lambda s: struct.unpack(
                            ">i", bytes(s, "ascii"))[0]
                        makeCoord = skia.FontArguments.VariationPosition.Coordinate
                        rawCoords = [
                            makeCoord(to_int(tag), value)
                            for tag, value in pen.style.variations.items()
                        ]
                        coords = skia.FontArguments.VariationPosition.Coordinates(
                            rawCoords)
                        fa.setVariationDesignPosition(
                            skia.FontArguments.VariationPosition(coords))
                        font = font.makeClone(fa)
                pt = pen.frame.point("SW")
                canvas.drawString(
                    pen.text, pt.x, rect.h - pt.y,
                    skia.Font(font, pen.style.fontSize),
                    skia.Paint(AntiAlias=True, Color=pen.style.fill.skia()))

            if state == 0:
                SkiaPen(pen,
                        rect,
                        canvas,
                        scale,
                        style=style,
                        alpha=pen.calc_alpha())
Exemple #4
0
def test_Typeface_makeClone(typeface):
    assert isinstance(typeface.makeClone(skia.FontArguments()), skia.Typeface)
Exemple #5
0
def fontarguments():
    return skia.FontArguments()