to implement something like what you asked for in the later comments, you first need a translation function char2int for the addressing of your array. example:
function char2int (chr: character) return integer is
variable i: integer;
begin
case chr is
when 'H' => i:=0;
when 'A' => i:=1;
when 'L' => i:=2;
when 'O' => i:=3;
when others => i:=4;
end case;
return i;
end char2int;
then the main function is as you suggested in your C-example:
function string_to_bitfile(constant txt_str: string) return text_type is
variable txt: text_type;
begin
for i in 0 to (txt_str'length-1) loop
for j in 0 to 5 loop
txt(6*i+j):=font(char2int(txt_str(i)),j);
end loop;
end loop;
return txt;
end string_to_bitfile;