| @@ -1,8 +1,21 @@ | |||||
| #!/usr/bin/php5 | #!/usr/bin/php5 | ||||
| <?php | <?php | ||||
| function unistr_to_ords($str, $encoding = 'UTF-8'){ | |||||
| $str = mb_convert_encoding($str, "UCS-4BE", $encoding); | |||||
| $result = array(); | |||||
| for ($i = 0; $i < mb_strlen($str, "UCS-4BE"); $i++){ | |||||
| $c = mb_substr($str, $i, 1, "UCS-4BE"); | |||||
| $val = unpack("N", $c); | |||||
| $result[] = $val[1]; | |||||
| } | |||||
| return $result; | |||||
| } | |||||
| if ($argc < 3) { | if ($argc < 3) { | ||||
| die("Too few arguments.\nUsage: cmd <path of font> <string>\n"); | |||||
| die("Too few arguments.\nUsage: cmd <path of font> <utf8 string>\n"); | |||||
| } | } | ||||
| $cv = caca_create_canvas(0, 0); | $cv = caca_create_canvas(0, 0); | ||||
| @@ -11,14 +24,13 @@ if (!caca_canvas_set_figfont($cv, $argv[1])) { | |||||
| die("Could not open font\n"); | die("Could not open font\n"); | ||||
| } | } | ||||
| $str = $argv[2]; | |||||
| $chars = unistr_to_ords($argv[2]); | |||||
| $color = 0; | $color = 0; | ||||
| for ($i = 0; $i < strlen($str); $i++) { | |||||
| foreach ($chars as $c) { | |||||
| caca_set_color_ansi($cv, 1 + (($color += 4) % 15), CACA_TRANSPARENT); | caca_set_color_ansi($cv, 1 + (($color += 4) % 15), CACA_TRANSPARENT); | ||||
| caca_put_figchar($cv, ord($str[$i])); | |||||
| caca_put_figchar($cv, $c); | |||||
| } | } | ||||
| echo caca_export_string($cv, "utf8"); | echo caca_export_string($cv, "utf8"); | ||||