diff options
Diffstat (limited to 'third_party/freetype-py/examples/glyph-monochrome.py')
-rw-r--r-- | third_party/freetype-py/examples/glyph-monochrome.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/third_party/freetype-py/examples/glyph-monochrome.py b/third_party/freetype-py/examples/glyph-monochrome.py new file mode 100644 index 0000000..3714ceb --- /dev/null +++ b/third_party/freetype-py/examples/glyph-monochrome.py @@ -0,0 +1,43 @@ +#!/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() |