Ejemplo n.º 1
0
    def apply(self, info, glyph, startx, starty, size, maxsize, glyphimage, previmage):
        factor = self.factor
        face = info.face
        flags = ft.LOAD_RENDER | ft.LOAD_TARGET_MONO
        
        face.set_char_size( width=0, height=(info.size*factor)*64, hres=info.dpi, vres=info.dpi )
        face.load_char( glyph.unicode, flags )

        bitmap = fu.make_array_from_bitmap(face.glyph.contents.bitmap) * 255
        
        metrics = face.glyph.contents.metrics
        bearingY = (metrics.horiBearingY >> 6) + info.internalpadding[1]*factor + info.extrapadding[1]*factor
        
        # Due to the down scaling, we need to make sure that the bitmap start at the correct pixels
        offset_y = bearingY - glyph.bearingY * factor
        
        bitmap = fu.pad_bitmap(bitmap, info.extrapadding[0]*factor, info.extrapadding[1]*factor - offset_y, info.extrapadding[2]*factor, info.extrapadding[3]*factor + offset_y, 0, debug=glyph.unicode=='r')
        
        # TODO: Work out how to eliminate this issue
        e = np.empty( bitmap.shape, bitmap.dtype, order='F' )
        e[:, :] = bitmap
        bitmap = e
        
        i = utils.calculate_sedt(bitmap, self.size)
        #i = bitmap
        
        while factor > 1:
            i = utils.half_size(i)
            factor /= 2
        
        i = i.astype(np.float64) / 255.0
        
        a = np.zeros_like(i)
        a[i > 0] = 1.0
        
        return np.dstack( (i, i, i, a) )
Ejemplo n.º 2
0
    def apply(self, glyph, info, image):
        for n in xrange(self.factor):
            out = utils.half_size(image)
            image = out

        return out