$fswcm = '';
//signwriting cartesian markup
$fswpm = '';
//signwriting polar markup
$fbswml = '';
//binary signwriting markup
foreach ($units as $ubsw) {
    if (isPunc($ubsw)) {
        $fbsw .= $ubsw . ' ';
        $fupua .= bsw2utf($ubsw) . ' ';
        $fswcm .= bsw2utf($ubsw, 1);
        $fswpm .= bsw2utf($ubsw, 1);
        $fbswml .= '&lt;punc&gt;' . bsw2key($ubsw) . '&lt;/punc&gt;<br>';
    } else {
        $unit = new Sign($ubsw);
        $ubsw = moveBSW($unit->getBSW(), $unit->getCenterX(), $unit->getCenterY());
        $fbsw .= $ubsw . ' ';
        $fupua .= bsw2utf($ubsw) . ' ';
        $first = substr($ubsw, 0, 3);
        $cluster = bsw2cluster($ubsw);
        $seq = bsw2seq($ubsw);
        $chars = str_split($cluster, 3);
        $fswcm .= char2token($first);
        $fswpm .= char2token($first);
        $fbswml .= '&lt;sign lane="' . char2lane($first) . '"&gt;<br>';
        for ($i = 0; $i < count($chars); $i++) {
            //first 3 are symbol
            $sbsw = $chars[$i];
            $i++;
            $sbsw .= $chars[$i];
            $i++;