unipdf/internal/cmap/cmap.go

12 lines
40 KiB
Go
Raw Normal View History

//
2020-08-27 21:45:09 +00:00
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
2020-10-19 10:58:10 +00:00
package cmap ;import (_f "bufio";_a "bytes";_gc "encoding/hex";_af "errors";_b "fmt";_cf "github.com/unidoc/unipdf/v3/common";_daa "github.com/unidoc/unipdf/v3/core";_ad "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_de "io";_da "sort";_c "strconv";_dg "strings";_g "unicode/utf16";);func _fgb (_bbfc cmapHexString )[]rune {if len (_bbfc ._dbbc )==1{return []rune {rune (_bbfc ._dbbc [0])};};_eaaa :=_bbfc ._dbbc ;if len (_eaaa )%2!=0{_eaaa =append (_eaaa ,0);_cf .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u0073\u002e\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0073\u0068\u0065\u0078\u003d\u0025#\u0076\u0020\u0074\u006f\u0020\u0025\u002b\u0076",_bbfc ,_eaaa );};_gcf :=len (_eaaa )>>1;_fged :=make ([]uint16 ,_gcf );for _bfc :=0;_bfc < _gcf ;_bfc ++{_fged [_bfc ]=uint16 (_eaaa [_bfc <<1])<<8+uint16 (_eaaa [_bfc <<1+1]);};_baf :=_g .Decode (_fged );return _baf ;};func _ffce (_cba []byte )*cMapParser {_dga :=cMapParser {};_bcc :=_a .NewBuffer (_cba );_dga ._eeec =_f .NewReader (_bcc );return &_dga ;};func (_fgfc *cMapParser )parseDict ()(cmapDict ,error ){_cf .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_aef :=_dcac ();_bab ,_ :=_fgfc ._eeec .ReadByte ();if _bab !='<'{return _aef ,ErrBadCMapDict ;};_bab ,_ =_fgfc ._eeec .ReadByte ();if _bab !='<'{return _aef ,ErrBadCMapDict ;};for {_fgfc .skipSpaces ();_ffda ,_bde :=_fgfc ._eeec .Peek (2);if _bde !=nil {return _aef ,_bde ;};if (_ffda [0]=='>')&&(_ffda [1]=='>'){_fgfc ._eeec .ReadByte ();_fgfc ._eeec .ReadByte ();break ;};_ade ,_bde :=_fgfc .parseName ();_cf .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_ade .Name );if _bde !=nil {_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0061\u006d\u0065\u002e\u0020\u0065\u0072r=\u0025\u0076",_bde );return _aef ,_bde ;};_fgfc .skipSpaces ();_aaag ,_bde :=_fgfc .parseObject ();if _bde !=nil {return _aef ,_bde ;};_aef .Dict [_ade .Name ]=_aaag ;_fgfc .skipSpaces ();_ffda ,_bde =_fgfc ._eeec .Peek (3);if _bde !=nil {return _aef ,_bde ;};if string (_ffda )=="\u0064\u0065\u0066"{_fgfc ._eeec .Discard (3);};};return _aef ,nil ;};func _aacb (_fgbb cmapHexString )rune {_gcdg :=_fgb (_fgbb );if _aceg :=len (_gcdg );_aceg ==0{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054o\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065c\u0074\u0065\u0064\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0072u\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023\u0076",_fgbb );return MissingCodeRune ;};if len (_gcdg )> 1{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0065\u0078\u0061\u0063\u0074\u006c\u0079\u0020\u006f\u006e\u0065\u0020\u0072\u0075\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023v\u0020\u002d\u003e\u0020\u0025#\u0076",_fgbb ,_gcdg );};return _gcdg [0];};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_cf .Log .Trace ("\u004c\u006fa\u0064\u0043\u006d\u0061\u0070\u0046\u0072\u006f\u006d\u0044\u0061\u0074\u0061\u003a\u0020\u0069\u0073\u0053\u0069\u006d\u0070\u006ce=\u0025\u0074",isSimple );cmap :=_ccb (isSimple );cmap .cMapParser =_ffce (data );_gf :=cmap .parse ();if _gf !=nil {return nil ,_gf ;};if len (cmap ._aaf )==0{if cmap ._ea !=""{return cmap ,nil ;};_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ffc :=make (map[CharCode ]string ,len (codeToRune ));for _cd ,_gcg :=range codeToRune {_ffc [_cd ]=string (_gcg );};cmap :=&CMap {_aac :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0