Font Drawing (blf)

This module provides access to blenders text drawing functions.

Text Example

Blender Game Engine example of using the blf module. For this module to work we need to use the OpenGL wrapper bgl as well.

"""
Hello World Text Example
++++++++++++++++++++++++

Example of using the blf module. For this module to work we
need to use the OpenGL wrapper :class:`~bgl` as well.
"""
# import stand alone modules
import bgl
import blf
import bpy

font_info = {
    "font_id": 0,
    "handler": None,
}

def init():
    """init function - runs once"""
    import os
    # Create a new font object, use external ttf file.
    font_path = bpy.path.abspath('//Zeyada.ttf')
    # Store the font indice - to use later.
    if os.path.exists(font_path):
        font_info["font_id"] = blf.load(font_path)
    else:
        # Default font.
        font_info["font_id"] = 0

    # set the font drawing routine to run every frame
    font_info["handler"] = bpy.types.SpaceView3D.draw_handler_add(
        draw_callback_px, (None, None), 'WINDOW', 'POST_PIXEL')


def draw_callback_px(self, context):
    """Draw on the viewports"""
    # BLF drawing routine
    font_id = font_info["font_id"]
    blf.position(font_id, 2, 80, 0)
    blf.size(font_id, 50, 72)
    blf.draw(font_id, "Hello World")


if __name__ == '__main__':
    init()

Functions

blf.aspect(fontid, aspect)

Set the aspect for drawing text.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • aspect (float) – The aspect ratio for text drawing to use.

blf.blur(fontid, radius)

Set the blur radius for drawing text.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • radius (int) – The radius for blurring text (in pixels).

blf.clipping(fontid, xmin, ymin, xmax, ymax)

Set the clipping, enable/disable using CLIPPING.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • xmin (float) – Clip the drawing area by these bounds.

  • ymin (float) – Clip the drawing area by these bounds.

  • xmax (float) – Clip the drawing area by these bounds.

  • ymax (float) – Clip the drawing area by these bounds.

blf.dimensions(fontid, text)

Return the width and height of the text.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • text (string) – the text to draw.

Returns

the width and height of the text.

Return type

tuple of 2 floats

blf.disable(fontid, option)

Disable option.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • option (int) – One of ROTATION, CLIPPING, SHADOW or KERNING_DEFAULT.

blf.draw(fontid, text)

Draw text in the current context.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • text (string) – the text to draw.

blf.enable(fontid, option)

Enable option.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • option (int) – One of ROTATION, CLIPPING, SHADOW or KERNING_DEFAULT.

blf.load(filename)

Load a new font.

Parameters

filename (string) – the filename of the font.

Returns

the new font’s fontid or -1 if there was an error.

Return type

integer

blf.position(fontid, x, y, z)

Set the position for drawing text.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • x (float) – X axis position to draw the text.

  • y (float) – Y axis position to draw the text.

  • z (float) – Z axis position to draw the text.

blf.rotation(fontid, angle)

Set the text rotation angle, enable/disable using ROTATION.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • angle (float) – The angle for text drawing to use.

blf.shadow(fontid, level, r, g, b, a)

Shadow options, enable/disable using SHADOW .

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • level (int) – The blur level, can be 3, 5 or 0.

  • r (float) – Shadow color (red channel 0.0 - 1.0).

  • g (float) – Shadow color (green channel 0.0 - 1.0).

  • b (float) – Shadow color (blue channel 0.0 - 1.0).

  • a (float) – Shadow color (alpha channel 0.0 - 1.0).

blf.shadow_offset(fontid, x, y)

Set the offset for shadow text.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • x (float) – Vertical shadow offset value in pixels.

  • y (float) – Horizontal shadow offset value in pixels.

blf.size(fontid, size, dpi)

Set the size and dpi for drawing text.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • size (int) – Point size of the font.

  • dpi (int) – dots per inch value to use for drawing.

blf.unload(filename)

Unload an existing font.

Parameters

filename (string) – the filename of the font.

blf.word_wrap(fontid, wrap_width)

Set the wrap width, enable/disable using WORD_WRAP.

Parameters
  • fontid (int) – The id of the typeface as returned by blf.load(), for default font use 0.

  • wrap_width (int) – The width (in pixels) to wrap words at.

Constants

blf.CLIPPING

constant value 2

blf.KERNING_DEFAULT

constant value 8

blf.ROTATION

constant value 1

blf.SHADOW

constant value 4

blf.WORD_WRAP

constant value 128