#!/usr/bin/env python # -*- coding: utf-8 -*- # ----------------------------------------------------------------------------- # # FreeType high-level python API - Copyright 2011 Nicolas P. Rougier # Distributed under the terms of the new BSD license. # # ----------------------------------------------------------------------------- ''' Glyph bitmap monochrome rendring ''' from freetype import * def bits(x): data = [] for i in range(8): data.insert(0, int((x & 1) == 1)) x = x >> 1 return data if __name__ == '__main__': import numpy import matplotlib.pyplot as plt face = Face('./Vera.ttf') face.set_char_size( 48*64 ) face.load_char('S', FT_LOAD_RENDER | FT_LOAD_TARGET_MONO ) bitmap = face.glyph.bitmap width = face.glyph.bitmap.width rows = face.glyph.bitmap.rows pitch = face.glyph.bitmap.pitch data = [] for i in range(bitmap.rows): row = [] for j in range(bitmap.pitch): row.extend(bits(bitmap.buffer[i*bitmap.pitch+j])) data.extend(row[:bitmap.width]) Z = numpy.array(data).reshape(bitmap.rows, bitmap.width) plt.imshow(Z, interpolation='nearest', cmap=plt.cm.gray, origin='lower') plt.show()