# How can I make a non-handwriting text appearing like if someone writes it?

I followed this tutorial https://www.youtube.com/watch?v=Y59O7wunijo making a text with a Grease Pencil and then converting it to Bezier curve so I can control the text appearing by tweaking Bevel factor End parameter. However I need a printed text with fonts, I thought if I create a text and then convert it to Bezier Curve it would give me the same result, but it doesnt work, nothing changes. Is there a way to achieve it?

This is how I did it (this may not be the best solution).

Bevel factor works with non-cyclic curves. So you need to do this one character at a time.

• Create the text object of the character
• convert to curve (alt + c)
• uncheck cyclic (U) option in curve object data
• Extrude the unconnected node to have a closing edge manually
• increase depth to a non-zero value

Now you should be able to control the curve length with bevel factor.

• Thanks! Slightly unusual method but works for sure! The only thing that bothers me though is the text has no body but the edges\contours, but for my particular project its totally fine – Blender Enthusiast Oct 28 '18 at 14:51
• Glad that it helped :) – Blender Dadaist Oct 28 '18 at 16:23

I could not resist the temptation of writing a script for this :) especially since the last segment could be difficult to replicate manually.

You might want to give it a try. Please be careful and backup your file before running it because the script deletes the original curve objects and replaces them with the new ones. Also it's not thoroughly tested.

import bpy

depth = 0.01

def createSpline(curveData, srcSpline):
spline = curveData.splines.new('BEZIER')
spline.use_cyclic_u = False

for i in range(0, len(srcSpline.bezier_points)):
spline.bezier_points[i].co = srcSpline.bezier_points[i].co
spline.bezier_points[i].handle_left = srcSpline.bezier_points[i].handle_left
spline.bezier_points[i].handle_left_type = srcSpline.bezier_points[i].handle_left_type
spline.bezier_points[i].handle_right = srcSpline.bezier_points[i].handle_right
spline.bezier_points[i].handle_right_type = srcSpline.bezier_points[i].handle_right_type

if(srcSpline.use_cyclic_u == True):
spline.bezier_points[-1].co = srcSpline.bezier_points[0].co
spline.bezier_points[-1].handle_left = srcSpline.bezier_points[0].handle_left
spline.bezier_points[-1].handle_left_type = srcSpline.bezier_points[0].handle_left_type
spline.bezier_points[-1].handle_right = srcSpline.bezier_points[0].handle_right
spline.bezier_points[-1].handle_right_type = srcSpline.bezier_points[0].handle_right_type

for obj in bpy.context.selected_objects:
if(obj.type != 'CURVE'):
continue

curveData = obj.data
if(len(curveData.splines) > 1 or curveData.splines[0].use_cyclic_u == True):
for i, spline in enumerate(obj.data.splines):
objCopy = obj.copy()
dataCopy = obj.data.copy()
dataCopy.splines.clear()
dataCopy.bevel_depth = depth
objCopy.data = dataCopy
objCopy.name = obj.name+'_'+str(i)
createSpline(dataCopy, spline)

• wow thats smth new to me! Ill definitely give it a try, never dealt with Text-like scripts, just opened up a console and pasted, every line is red and errors are everywhere. Will investigate further! – Blender Enthusiast Oct 29 '18 at 15:33