protected function o_toUnicode($id, $action)
    {
        switch ($action) {
            case 'new':
                $this->objects[$id] = array(
                    't'    => 'toUnicode'
                );
                break;
            case 'add':
                break;
            case 'out':
                $ordering = '(UCS)';
                $registry = '(Adobe)';

                if ($this->encrypted) {
                    $this->encryptInit($id);
                    $ordering = $this->ARC4($ordering);
                    $registry = $this->ARC4($registry);
                }

                $stream = <<<EOT
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry $registry
/Ordering $ordering
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
1 beginbfrange
<0000> <FFFF> <0000>
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
EOT;

                $res = "\n$id 0 obj\n";
                $res .= "<</Length " . mb_strlen($stream, '8bit') . " >>\n";
                $res .= "stream\n" . $stream . "\nendstream" . "\nendobj";;

                return $res;
        }

        return null;
    }
protected function o_toUnicode($id, $action)
    {
        switch ($action) {
            case 'new':
                $this->objects[$id] = array(
                    't'    => 'toUnicode'
                );
                break;
            case 'add':
                break;
            case 'out':
                $ordering = '(UCS)';
                $registry = '(Adobe)';

                if ($this->encrypted) {
                    $this->encryptInit($id);
                    $ordering = $this->ARC4($ordering);
                    $registry = $this->ARC4($registry);
                }

                $stream = <<<EOT
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry $registry
/Ordering $ordering
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
1 beginbfrange
<0000> <FFFF> <0000>
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
EOT;

                $res = "\n$id 0 obj\n";
                $res .= "<</Length " . mb_strlen($stream, '8bit') . " >>\n";
                $res .= "stream\n" . $stream . "\nendstream" . "\nendobj";;

                return $res;
        }

        return null;
    }
protected function o_toUnicode ( $ id , $ action ) { switch ( $ action ) { case 'new' : $ this -> objects [ $ id ] = array ( 't' => 'toUnicode' ) ; break ; case 'add' : break ; case 'out' : $ ordering = '(UCS)' ; $ registry = '(Adobe)' ; if ( $ this -> encrypted ) { $ this -> encryptInit ( $ id ) ; $ ordering = $ this -> ARC4 ( $ ordering ) ; $ registry = $ this -> ARC4 ( $ registry ) ; } $ stream =  <<<EOT
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry $registry
/Ordering $ordering
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
1 beginbfrange
<0000> <FFFF> <0000>
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
EOT ; $ res = "\n$id 0 obj\n" ; $ res .= "<</Length " . mb_strlen ( $ stream , '8bit' ) . " >>\n" ; $ res .= "stream\n" . $ stream . "\nendstream" . "\nendobj" ; ; return $ res ; } return null ; }
A toUnicode section, needed for unicode fonts

@param $id
@param $action
@return null|string
A toUnicode section needed for unicode fonts