| __author__ = 'thoth'
import bpy
#http://blender.stackexchange.com/questions/52966/what-workflow-should-we-use-to-create-a-text-object-that-requires-characters-fro
#http://www.fonts101.com/search/greek
from math import *
def construct_glyph(code_point, font, prefix, body = None):
    if body is None:
        body = chr(code_point)
    name = prefix + chr(code_point)
    curve = bpy.data.curves.new(name, 'FONT')
    curve.body = body
    curve.font = font
    curve.font_italic = font
    curve.font_bold = font
    curve.font_bold_italic = font
    obj = bpy.data.objects.get(name)
    if obj is None:
        obj = bpy.data.objects.new(name, curve)
    else:
        obj.data = curve
    try:
        bpy.context.scene.objects.link(obj)
    except:
        pass
    obj.layers = [j == 19 for j in range(len(obj.layers))]
    b = code_point % 16
    a = floor(code_point / 16)
    obj.location = (a, -b, -8)
def construct_font_objects(font, prefix, start, end, bodies = None):
    for code_point in range(start, end+1):
        if bodies is None:
            body = None
        else:
            body = bodies[code_point-start]
        construct_glyph(code_point, font, prefix, body)
def mission1():
    f1 = bpy.data.fonts[0]
    f2 = bpy.data.fonts['StandardGreekItalic']
    construct_font_objects(f1, "my_font_", 32, 126) # english ASCII
    construct_font_objects(f2, "my_font_", 0x390, 0x3af,
                           "@ABGDEZHQIKLMNXO"
                           +"PR?STUFCYW??\u00ae\u0161\u00bb\u2026")
    construct_font_objects(f2, "my_font_", 0x390, 0x3c9,
                           "@ABGDEZHQIKLMNXO"
                           +"PR?STUFCYW??\u00ae\u0161\u00bb\u2026"
                           +"@abgdezhqiklmnxo"
                           +"pr?stufcyw")
def mission2():
    name = "demo"
    curve = bpy.data.curves.get(name)
    if curve is None:
        curve = bpy.data.curves.new(name, 'FONT')
    curve.body = "psi = '\u03a8'? xi='\u039e'"
    curve.body = "Greeks call it ελληνικά, right?"
    # \u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac
    curve.family = "my_font_"
    curve.size = 2
    # as of 2.77 this technique seems to not work well for unicode code points
    
    obj = bpy.data.objects.get(name)
    if obj is None:
        obj = bpy.data.objects.new(name, curve)
    else:
        obj.data = curve
    obj.dupli_type = 'VERTS'
    try:
        bpy.context.scene.objects.link(obj)
    except:
        pass
def mission3():
    str = "ελληνικά"
    out = ""
    for i in str:
        out += "\\u%04x"%ord(i)
    print(out)
#
#
#
mission1()
mission2()
 | 
Blender python API quick-start
Syntax highlighting by Pygments.