summaryrefslogtreecommitdiff
path: root/third_party/freetype-py/examples/hello-world.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/freetype-py/examples/hello-world.py')
-rw-r--r--third_party/freetype-py/examples/hello-world.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/third_party/freetype-py/examples/hello-world.py b/third_party/freetype-py/examples/hello-world.py
new file mode 100644
index 0000000..72126ae
--- /dev/null
+++ b/third_party/freetype-py/examples/hello-world.py
@@ -0,0 +1,54 @@
+#!/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.
+#
+# -----------------------------------------------------------------------------
+from freetype import *
+
+if __name__ == '__main__':
+ import numpy
+ import matplotlib.pyplot as plt
+
+ face = Face('./Vera.ttf')
+ text = 'Hello World !'
+ face.set_char_size( 48*64 )
+ slot = face.glyph
+
+ # First pass to compute bbox
+ width, height, baseline = 0, 0, 0
+ previous = 0
+ for i,c in enumerate(text):
+ face.load_char(c)
+ bitmap = slot.bitmap
+ height = max(height,
+ bitmap.rows + max(0,-(slot.bitmap_top-bitmap.rows)))
+ baseline = max(baseline, max(0,-(slot.bitmap_top-bitmap.rows)))
+ kerning = face.get_kerning(previous, c)
+ width += (slot.advance.x >> 6) + (kerning.x >> 6)
+ previous = c
+
+ Z = numpy.zeros((height,width), dtype=numpy.ubyte)
+
+ # Second pass for actual rendering
+ x, y = 0, 0
+ previous = 0
+ for c in text:
+ face.load_char(c)
+ bitmap = slot.bitmap
+ top = slot.bitmap_top
+ left = slot.bitmap_left
+ w,h = bitmap.width, bitmap.rows
+ y = height-baseline-top
+ kerning = face.get_kerning(previous, c)
+ x += (kerning.x >> 6)
+ Z[y:y+h,x:x+w] += numpy.array(bitmap.buffer).reshape(h,w)
+ x += (slot.advance.x >> 6)
+ previous = c
+
+ plt.figure(figsize=(10, 10*Z.shape[0]/float(Z.shape[1])))
+ plt.imshow(Z, interpolation='nearest', origin='upper', cmap=plt.cm.gray)
+ plt.xticks([]), plt.yticks([])
+ plt.show()