How to print string on screen according the fixed length?

Problem:
entry_name="joke:hello:yellow:blue:default"

print("%d %-12s\t%-10s\t%-5s\n", $i, $entry_name....);

I just want to print the output like this

index entry value ....
1 joke:hello:y 0 123 567
ellow:blue:d
efault

My step:
get the length of the entry_name
i=0
entry_length=$(echo "$entry_name" | awk '{print length($entry_name)}')
((j=entry_length/12))
while((i<j))
do
tmp=$(echo "$entry_name" | awk '{print substring($entry_name, i*12, 12)}')
printf("%-12s\n", tmp);
((i=i+1))
done

$ entry_name="joke:hello:yellow:blue:default"
$ echo $entry_name|awk '{ i=1; while(i<=length) { print substr($0,i,12); i+=12} }'
joke:hello:y
ellow:blue:d
efault