# Font Drawing (blf)

This module provides access to blenders text drawing functions.

## Hello World 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.

    # import game engine modules
    from bge import render
    from bge import logic
    # import stand alone modules
    import bgl
    import blf

    def init():
        """init function - runs once"""
        # create a new font object, use external ttf file
        font_path = logic.expandPath('//Zeyada.ttf')
        # store the font indice - to use later
        logic.font_id = blf.load(font_path)

        # set the font drawing routine to run every frame
        scene = logic.getCurrentScene()
        scene.post_draw = [write]

    def write():
        """write on screen"""
        width = render.getWindowWidth()
        height = render.getWindowHeight()

        # OpenGL setup
        bgl.glMatrixMode(bgl.GL_PROJECTION)
        bgl.glLoadIdentity()
        bgl.gluOrtho2D(0, width, 0, height)
        bgl.glMatrixMode(bgl.GL_MODELVIEW)
        bgl.glLoadIdentity()

        # BLF drawing routine
        font_id = logic.font_id
        blf.position(font_id, (width * 0.2), (height * 0.3), 0)
        blf.size(font_id, 50, 72)
        blf.draw(font_id, "Hello World")

`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.

`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