private function code_39_encode($data) {
$data = strtoupper(preg_replace('/[^0-9A-Za-z%$/+ .-]/', '', $data));
$blocks = array();
/* Start */
$blocks[] = array(
'm' => array(
array(1, 1, 1), array(0, 1, 2), array(1, 1, 1),
array(0, 1, 1), array(1, 1, 2), array(0, 1, 1),
array(1, 1, 2), array(0, 1, 1), array(1, 1, 1),
),
'l' => array('*')
);
/* Data */
for ($i = 0, $n = strlen($data); $i < $n; $i++) {
$blocks[] = array(
'm' => array(array(0, 1, 3))
);
$char = substr($data, $i, 1);
$block = $this->code_39_alphabet[$char];
$blocks[] = array(
'm' => array(
array(1, 1, $block[0]),
array(0, 1, $block[1]),
array(1, 1, $block[2]),
array(0, 1, $block[3]),
array(1, 1, $block[4]),
array(0, 1, $block[5]),
array(1, 1, $block[6]),
array(0, 1, $block[7]),
array(1, 1, $block[8]),
),
'l' => array($char)
);
}
$blocks[] = array(
'm' => array(array(0, 1, 3))
);
/* End */
$blocks[] = array(
'm' => array(
array(1, 1, 1), array(0, 1, 2), array(1, 1, 1),
array(0, 1, 1), array(1, 1, 2), array(0, 1, 1),
array(1, 1, 2), array(0, 1, 1), array(1, 1, 1),
),
'l' => array('*')
);
/* Return */
return array('g' => 'l', 'b' => $blocks);
}