private function code_39_ascii_encode($data) {
$modules = array();
/* Start */
$modules[] = array(1, 1, 1);
$modules[] = array(0, 1, 2);
$modules[] = array(1, 1, 1);
$modules[] = array(0, 1, 1);
$modules[] = array(1, 1, 2);
$modules[] = array(0, 1, 1);
$modules[] = array(1, 1, 2);
$modules[] = array(0, 1, 1);
$modules[] = array(1, 1, 1);
/* Data */
$label = '';
for ($i = 0, $n = strlen($data); $i < $n; $i++) {
$char = substr($data, $i, 1);
$ch = ord($char);
if ($ch < 128) {
if ($ch < 32 || $ch >= 127) {
$label .= ' ';
} else {
$label .= $char;
}
$ch = $this->code_39_asciibet[$ch];
for ($j = 0, $m = strlen($ch); $j < $m; $j++) {
$c = substr($ch, $j, 1);
$b = $this->code_39_alphabet[$c];
$modules[] = array(0, 1, 3);
$modules[] = array(1, 1, $b[0]);
$modules[] = array(0, 1, $b[1]);
$modules[] = array(1, 1, $b[2]);
$modules[] = array(0, 1, $b[3]);
$modules[] = array(1, 1, $b[4]);
$modules[] = array(0, 1, $b[5]);
$modules[] = array(1, 1, $b[6]);
$modules[] = array(0, 1, $b[7]);
$modules[] = array(1, 1, $b[8]);
}
}
}
$modules[] = array(0, 1, 3);
/* End */
$modules[] = array(1, 1, 1);
$modules[] = array(0, 1, 2);
$modules[] = array(1, 1, 1);
$modules[] = array(0, 1, 1);
$modules[] = array(1, 1, 2);
$modules[] = array(0, 1, 1);
$modules[] = array(1, 1, 2);
$modules[] = array(0, 1, 1);
$modules[] = array(1, 1, 1);
/* Return */
$blocks = array(array('m' => $modules, 'l' => array($label)));
return array('g' => 'l', 'b' => $blocks);
}