mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
12 lines
40 KiB
Go
12 lines
40 KiB
Go
//
|
|
// 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/
|
|
|
|
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\u0055\u0043\u0053",_afg :2,_deb :16,_ef :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_aaf :[]Codespace {{Low :0,High :0xffff}},_aee :_ffc ,_ff :make (map[string ]CharCode ,len (codeToRune )),_bgf :make (map[CharCode ]CharCode ,len (codeToRune )),_fgf :make (map[CharCode ]CharCode ,len (codeToRune ))};cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )parseBfrange ()error {for {var _edd CharCode ;_eab ,_daec :=cmap .parseObject ();if _daec !=nil {if _daec ==_de .EOF {break ;};return _daec ;};switch _adff :=_eab .(type ){case cmapOperand :if _adff .Operand ==_ebfe {return nil ;};return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_edd =_cbef (_adff );default:return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _afe CharCode ;_eab ,_daec =cmap .parseObject ();if _daec !=nil {if _daec ==_de .EOF {break ;};return _daec ;};switch _eabg :=_eab .(type ){case cmapOperand :_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006d\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065\u0020\u0062\u0066r\u0061\u006e\u0067\u0065\u0020\u0074\u0072i\u0070\u006c\u0065\u0074");return ErrBadCMap ;case cmapHexString :_afe =_cbef (_eabg );default:_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_eab );return ErrBadCMap ;};_eab ,_daec =cmap .parseObject ();if _daec !=nil {if _daec ==_de .EOF {break ;};return _daec ;};switch _beb :=_eab .(type ){case cmapArray :if len (_beb .Array )!=int (_afe -_edd )+1{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u006f\u0066\u0020\u0069\u0074\u0065\u006d\u0073\u0020\u0069\u006e\u0020a\u0072\u0072\u0061\u0079");return ErrBadCMap ;};for _fbeb :=_edd ;_fbeb <=_afe ;_fbeb ++{_dfef :=_beb .Array [_fbeb -_edd ];_fdcf ,_gff :=_dfef .(cmapHexString );if !_gff {return _af .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");};_dca :=_fgb (_fdcf );cmap ._aee [_fbeb ]=string (_dca );};case cmapHexString :_daaa :=_fgb (_beb );_cgb :=len (_daaa );for _dedg :=_edd ;_dedg <=_afe ;_dedg ++{cmap ._aee [_dedg ]=string (_daaa );_daaa [_cgb -1]++;};default:_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_eab );return ErrBadCMap ;};};return nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};const (_ceg ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_ebd ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_aeg ="\u0065n\u0064\u0063\u006d\u0061\u0070";_dddd ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_ccf ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_fggb ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_gad ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_cce ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_ebfe ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_eec ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cgd ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_abaf ="\u0075s\u0065\u0063\u006d\u0061\u0070";_bag ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_gda ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_edc ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _ag ,_gbe :=cmap ._aee [code ];_gbe {return _ag ,true ;};return MissingCodeString ,false ;};type fbRange struct{_dag CharCode ;_ae CharCode ;_fe string ;};func (cmap *CMap )parseName ()error {_faae :="";_dcd :=false ;for _ace :=0;_ace < 20&&!_dcd ;_ace ++{_cfcf ,_fdd :=cmap .parseObject ();if _fdd !=nil {return _fdd ;};switch _fefa :=_cfcf .(type ){case cmapOperand :switch _fefa .Operand {case "\u0064\u0065\u0066":_dcd =true ;default:_cf .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a\u0020\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076\u0020n\u0061\u006de\u003d\u0025\u0023\u0071",_cfcf ,_faae );if _faae !=""{_faae =_b .Sprintf ("\u0025\u0073\u0020%\u0073",_faae ,_fefa .Operand );};_cf .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a \u0052\u0065\u0063\u006f\u0076\u0065\u0072e\u0064\u002e\u0020\u006e\u0061\u006d\u0065\u003d\u0025\u0023\u0071",_faae );};case cmapName :_faae =_fefa .Name ;};};if !_dcd {_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._aac =_faae ;return nil ;};func (_afa *cMapParser )skipSpaces ()(int ,error ){_feac :=0;for {_ffcef ,_cbeb :=_afa ._eeec .Peek (1);if _cbeb !=nil {return 0,_cbeb ;};if _daa .IsWhiteSpace (_ffcef [0]){_afa ._eeec .ReadByte ();_feac ++;}else {break ;};};return _feac ,nil ;};func (cmap *CMap )Type ()int {return cmap ._afg };func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_dafg ,_dec :=cmap ._bgf [code ];return _dafg ,_dec ;};func (cmap *CMap )parseVersion ()error {_bfe :="";_def :=false ;for _aafa :=0;_aafa < 3&&!_def ;_aafa ++{_ecb ,_abe :=cmap .parseObject ();if _abe !=nil {return _abe ;};switch _dabd :=_ecb .(type ){case cmapOperand :switch _dabd .Operand {case "\u0064\u0065\u0066":_def =true ;default:_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_ecb );return ErrBadCMap ;};case cmapInt :_bfe =_b .Sprintf ("\u0025\u0064",_dabd ._bbe );case cmapFloat :_bfe =_b .Sprintf ("\u0025\u0066",_dabd ._cbc );case cmapString :_bfe =_dabd .String ;default:_cf .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_ecb );};};cmap ._eg =_bfe ;return nil ;};func (cmap *CMap )NBits ()int {return cmap ._deb };func (cmap *CMap )Bytes ()[]byte {_cf .Log .Trace ("\u0063\u006d\u0061\u0070.B\u0079\u0074\u0065\u0073\u003a\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",cmap .String ());if len (cmap ._dgd )> 0{return cmap ._dgd ;};cmap ._dgd =[]byte (_dg .Join ([]string {_dbf ,cmap .toBfData (),_gfg },"\u000a"));return cmap ._dgd ;};type cmapHexString struct{_cac int ;_dbbc []byte ;};func (_fce *cMapParser )parseHexString ()(cmapHexString ,error ){_fce ._eeec .ReadByte ();_aga :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_fbff :=_a .Buffer {};for {_fce .skipSpaces ();_bac ,_agc :=_fce ._eeec .Peek (1);if _agc !=nil {return cmapHexString {},_agc ;};if _bac [0]=='>'{_fce ._eeec .ReadByte ();break ;};_gcdb ,_ :=_fce ._eeec .ReadByte ();if _a .IndexByte (_aga ,_gcdb )>=0{_fbff .WriteByte (_gcdb );};};if _fbff .Len ()%2==1{_cf .Log .Debug ("\u0070\u0061rs\u0065\u0048\u0065x\u0053\u0074\u0072\u0069ng:\u0020ap\u0070\u0065\u006e\u0064\u0069\u006e\u0067 '\u0030\u0027\u0020\u0074\u006f\u0020\u0025#\u0071",_fbff .String ());_fbff .WriteByte ('0');};_eaa :=_fbff .Len ()/2;_agb ,_ :=_gc .DecodeString (_fbff .String ());return cmapHexString {_cac :_eaa ,_dbbc :_agb },nil ;};func _cfc (_fc string )string {_gde :=[]rune (_fc );_ebcg :=make ([]string ,len (_gde ));for _dgde ,_aeb :=range _gde {_ebcg [_dgde ]=_b .Sprintf ("\u0025\u0030\u0034\u0078",_aeb );};return _b .Sprintf ("\u003c\u0025\u0073\u003e",_dg .Join (_ebcg ,""));};func _cbef (_egd cmapHexString )CharCode {_deaa :=CharCode (0);for _ ,_ddf :=range _egd ._dbbc {_deaa <<=8;_deaa |=CharCode (_ddf );};return _deaa ;};func _dcac ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func IsPredefinedCMap (name string )bool {return _ad .AssetExists (name )};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_cee ,_adg :=cmap ._fgf [cid ];return _cee ,_adg ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_cfa ,_daba :=cmap ._ff [s ];return _cfa ,_daba ;};func (_fdbc *cMapParser )parseOperand ()(cmapOperand ,error ){_ccec :=cmapOperand {};_ccd :=_a .Buffer {};for {_fbed ,_aacg :=_fdbc ._eeec .Peek (1);if _aacg !=nil {if _aacg ==_de .EOF {break ;};return _ccec ,_aacg ;};if _daa .IsDelimiter (_fbed [0]){break ;};if _daa .IsWhiteSpace (_fbed [0]){break ;};_gcce ,_ :=_fdbc ._eeec .ReadByte ();_ccd .WriteByte (_gcce );};if _ccd .Len ()==0{return _ccec ,_b .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_ccec .Operand =_ccd .String ();return _ccec ,nil ;};type cMapParser struct{_eeec *_f .Reader };func (cmap *CMap )parse ()error {var _cdd cmapObject ;for {_dcg ,_cec :=cmap .parseObject ();if _cec !=nil {if _cec ==_de .EOF {break ;};_cf .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_cec );return _cec ;};switch _ged :=_dcg .(type ){case cmapOperand :_eba :=_ged ;switch _eba .Operand {case _dddd :_gbd :=cmap .parseCodespaceRange ();if _gbd !=nil {return _gbd ;};case _eec :_ded :=cmap .parseCIDRange ();if _ded !=nil {return _ded ;};case _fggb :_bda :=cmap .parseBfchar ();if _bda !=nil {return _bda ;};case _cce :_cgae :=cmap .parseBfrange ();if _cgae !=nil {return _cgae ;};case _abaf :if _cdd ==nil {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u0073\u0065\u0063m\u0061\u0070\u0020\u0077\u0069\u0074\u0068\u0020\u006e\u006f \u0061\u0072\u0067");return ErrBadCMap ;};_ebcc ,_egfd :=_cdd .(cmapName );if !_egfd {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0075\u0073\u0065\u0063\u006d\u0061\u0070\u0020\u0061\u0072\u0067\u0020\u006eo\u0074\u0020\u0061\u0020\u006e\u0061\u006de\u0020\u0025\u0023\u0076",_cdd );return ErrBadCMap ;};cmap ._ea =_ebcc .Name ;case _ceg :_gfe :=cmap .parseSystemInfo ();if _gfe !=nil {return _gfe ;};};case cmapName :_cefa :=_ged ;switch _cefa .Name {case _ceg :_fgdf :=cmap .parseSystemInfo ();if _fgdf !=nil {return _fgdf ;};case _bag :_dcc :=cmap .parseName ();if _dcc !=nil {return _dcc ;};case _gda :_fef :=cmap .parseType ();if _fef !=nil {return _fef ;};case _edc :_cea :=cmap .parseVersion ();if _cea !=nil {return _cea ;};};};_cdd =_dcg ;};return nil ;};func _dgaa (_ddb ,_cbgd int )int {if _ddb < _cbgd {return _ddb ;};return _cbgd ;};func (cmap *CMap )Stream ()(*_daa .PdfObjectStream ,error ){if cmap ._bc !=nil {return cmap ._bc ,nil ;};_cbg ,_cbe :=_daa .MakeStream (cmap .Bytes (),_daa .NewFlateEncoder ());if _cbe !=nil {return nil ,_cbe ;};cmap ._bc =_cbg ;return cmap ._bc ,nil ;};type cmapFloat struct{_cbc float64 };func (cmap *CMap )parseCodespaceRange ()error {for {_gcdec ,_eeb :=cmap .parseObject ();if _eeb !=nil {if _eeb ==_de .EOF {break ;};return _eeb ;};_dgb ,_cfcb :=_gcdec .(cmapHexString );if !_cfcb {if _efb ,_acg :=_gcdec .(cmapOperand );_acg {if _efb .Operand ==_ccf {return nil ;};return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_gcdec ,_eeb =cmap .parseObject ();if _eeb !=nil {if _eeb ==_de .EOF {break ;};return _eeb ;};_cdb ,_cfcb :=_gcdec .(cmapHexString );if !_cfcb {return _af .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_dgb ._dbbc )!=len (_cdb ._dbbc ){return _af .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_fbe :=_cbef (_dgb );_fgc :=_cbef (_cdb );if _fgc < _fbe {_cf .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0042\u0061d\u0020\u0063\u006fd\u0065\u0073\u0070\u0061\u0063\u0065\u002e\u0020\u006cow\u003d\u0030\u0078%\u0030\u0032x\u0020\u0068\u0069\u0067\u0068\u003d0\u0078\u00250\u0032\u0078",_fbe ,_fgc );return ErrBadCMap ;};_bfee :=_cdb ._cac ;_ffcc :=Codespace {NumBytes :_bfee ,Low :_fbe ,High :_fgc };cmap ._aaf =append (cmap ._aaf ,_ffcc );_cf .Log .Trace ("\u0043\u006f\u0064e\u0073\u0070\u0061\u0063e\u0020\u006c\u006f\u0077\u003a\u0020\u0030x\u0025\u0058\u002c\u0020\u0068\u0069\u0067\u0068\u003a\u0020\u0030\u0078\u0025\u0058",_fbe ,_fgc );};if len (cmap ._aaf )==0{_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};type CMap struct{*cMapParser ;_aac string ;_deb int ;_afg int ;_eg string ;_ea string ;_ef CIDSystemInfo ;_aaf []Codespace ;_bgf map[CharCode ]CharCode ;_fgf map[CharCode ]CharCode ;_aee map[CharCode ]string ;_ff map[string ]CharCode ;_dgd []byte ;_bc *_daa .PdfObjectStream ;};type CharCode uint32 ;func (_gdc *cMapParser )parseObject ()(cmapObject ,error ){_gdc .skipSpaces ();for {_ebb ,_cag :=_gdc ._eeec .Peek (2);if _cag !=nil {return nil ,_cag ;};if _ebb [0]=='%'{_gdc .parseComment ();_gdc .skipSpaces ();continue ;}else if _ebb [0]=='/'{_ffd ,_abb :=_gdc .parseName ();return _ffd ,_abb ;}else if _ebb [0]=='('{_ffdc ,_ceb :=_gdc .parseString ();return _ffdc ,_ceb ;}else if _ebb [0]=='['{_edad ,_dbfb :=_gdc .parseArray ();return _edad ,_dbfb ;}else if (_ebb [0]=='<')&&(_ebb [1]=='<'){_abac ,_aegc :=_gdc .parseDict ();return _abac ,_aegc ;}else if _ebb [0]=='<'{_add ,_ebed :=_gdc .parseHexString ();return _add ,_ebed ;}else if _daa .IsDecimalDigit (_ebb [0])||(_ebb [0]=='-'&&_daa .IsDecimalDigit (_ebb [1])){_bfg ,_cfga :=_gdc .parseNumber ();if _cfga !=nil {return nil ,_cfga ;};return _bfg ,nil ;}else {_fege ,_dfeg :=_gdc .parseOperand ();if _dfeg !=nil {return nil ,_dfeg ;};return _fege ,nil ;};};};func NewCIDSystemInfo (obj _daa .PdfObject )(_feb CIDSystemInfo ,_fg error ){_ac ,_e :=_daa .GetDict (obj );if !_e {return CIDSystemInfo {},_daa .ErrTypeError ;};_acb ,_e :=_daa .GetStringVal (_ac .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_e {return CIDSystemInfo {},_daa .ErrTypeError ;};_dd ,_e :=_daa .GetStringVal (_ac .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_e {return CIDSystemInfo {},_daa .ErrTypeError ;};_aa ,_e :=_daa .GetIntVal (_ac .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_e {return CIDSystemInfo {},_daa .ErrTypeError ;};return CIDSystemInfo {Registry :_acb ,Ordering :_dd ,Supplement :_aa },nil ;};func (_faea *cMapParser )parseNumber ()(cmapObject ,error ){_ccg ,_bdf :=_daa .ParseNumber (_faea ._eeec );if _bdf !=nil {return nil ,_bdf ;};switch _egc :=_ccg .(type ){case *_daa .PdfObjectFloat :return cmapFloat {float64 (*_egc )},nil ;case *_daa .PdfObjectInteger :return cmapInt {int64 (*_egc )},nil ;};return nil ,_b .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_ccg );};func (_dab *CIDSystemInfo )String ()string {return _b .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_dab .Registry ,_dab .Ordering ,_dab .Supplement );};func (cmap *CMap )String ()string {_ecc :=cmap ._ef ;_cgc :=[]string {_b .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._deb ),_b .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._afg )};if cmap ._eg !=""{_cgc =append (_cgc ,_b .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._eg ));};if cmap ._ea !=""{_cgc =append (_cgc ,_b .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ea ));};_cgc =append (_cgc ,_b .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_ecc .String ()));if len (cmap ._aaf )> 0{_cgc =append (_cgc ,_b .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._aaf )));};if len (cmap ._aee )> 0{_cgc =append (_cgc ,_b .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._aee )));};return _b .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._aac ,_dg .Join (_cgc ,"\u0020"));};const (_gd =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func _fa (_ddd string )(*CMap ,error ){_aba ,_fd :=_ad .Asset (_ddd );if _fd !=nil {return nil ,_fd ;};return LoadCmapFromDataCID (_aba );};func (_agac *cMapParser )parseArray ()(cmapArray ,error ){_gede :=cmapArray {};_gede .Array =[]cmapObject {};_agac ._eeec .ReadByte ();for {_agac .skipSpaces ();_bae ,_ggf :=_agac ._eeec .Peek (1);if _ggf !=nil {return _gede ,_ggf ;};if _bae [0]==']'{_agac ._eeec .ReadByte ();break ;};_fdf ,_ggf :=_agac .parseObject ();if _ggf !=nil {return _gede ,_ggf ;};_gede .Array =append (_gede .Array ,_fdf );};return _gede ,nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._aee )==0{return "";};_fagd :=make ([]CharCode ,0,len (cmap ._aee ));for _gcgc :=range cmap ._aee {_fagd =append (_fagd ,_gcgc );};_da .Slice (_fagd ,func (_dgc ,_dddf int )bool {return _fagd [_dgc ]< _fagd [_dddf ]});var _bgc []charRange ;_cab :=charRange {_fagd [0],_fagd [0]};_bcf :=cmap ._aee [_fagd [0]];for _ ,_eda :=range _fagd [1:]{_ebg :=cmap ._aee [_eda ];if _eda ==_cab ._bg +1&&_ceeb (_ebg )==_ceeb (_bcf )+1{_cab ._bg =_eda ;}else {_bgc =append (_bgc ,_cab );_cab ._cc ,_cab ._bg =_eda ,_eda ;};_bcf =_ebg ;};_bgc =append (_bgc ,_cab );var _dbe []CharCode ;var _bgcc []fbRange ;for _ ,_gefa :=range _bgc {if _gefa ._cc ==_gefa ._bg {_dbe =append (_dbe ,_gefa ._cc );}else {_bgcc =append (_bgcc ,fbRange {_dag :_gefa ._cc ,_ae :_gefa ._bg ,_fe :cmap ._aee [_gefa ._cc ]});};};_cf .Log .Trace ("\u0063\u0068ar\u0052\u0061\u006eg\u0065\u0073\u003d\u0025d f\u0062Ch\u0061\u0072\u0073\u003d\u0025\u0064\u0020fb\u0052\u0061\u006e\u0067\u0065\u0073\u003d%\u0064",len (_bgc ),len (_dbe ),len (_bgcc ));var _ebf []string ;if len (_dbe )> 0{_ffg :=(len (_dbe )+_cbd -1)/_cbd ;for _age :=0;_age < _ffg ;_age ++{_ecd :=_dgaa (len (_dbe )-_age *_cbd ,_cbd );_ebf =append (_ebf ,_b .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_ecd ));for _afb :=0;_afb < _ecd ;_afb ++{_gdgb :=_dbe [_age *_cbd +_afb ];_gdfg :=cmap ._aee [_gdgb ];_ebf =append (_ebf ,_b .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_gdgb ,_cfc (_gdfg )));};_ebf =append (_ebf ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_bgcc )> 0{_cga :=(len (_bgcc )+_cbd -1)/_cbd ;for _aag :=0;_aag < _cga ;_aag ++{_eea :=_dgaa (len (_bgcc )-_aag *_cbd ,_cbd );_ebf =append (_ebf ,_b .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_eea ));for _aacd :=0;_aacd < _eea ;_aacd ++{_fge :=_bgcc [_aag *_cbd +_aacd ];_ebf =append (_ebf ,_b .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_fge ._dag ,_fge ._ae ,_cfc (_fge ._fe )));};_ebf =append (_ebf ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _dg .Join (_ebf ,"\u000a");};func (cmap *CMap )matchCode (_ed []byte )(_gac CharCode ,_bec int ,_cgf bool ){for _efc :=0;_efc < _gd ;_efc ++{if _efc < len (_ed ){_gac =_gac <<8|CharCode (_ed [_efc ]);_bec ++;};_cgf =cmap .inCodespace (_gac ,_efc +1);if _cgf {return _gac ,_bec ,true ;};};_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063o\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0020m\u0061t\u0063\u0068\u0065\u0073\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d=\u0025\u0023\u0071\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",_ed ,string (_ed ),cmap );return 0,0,false ;};type cmapString struct{String string ;};type cmapInt struct{_bbe int64 };type cmapOperand struct{Operand string ;};func (cmap *CMap )parseSystemInfo ()error {_cfg :=false ;_edag :=false ;_acd :="";_fdg :=false ;_cfgf :=CIDSystemInfo {};for _acf :=0;_acf < 50&&!_fdg ;_acf ++{_bfb ,_cdf :=cmap .parseObject ();if _cdf !=nil {return _cdf ;};switch _fdc :=_bfb .(type ){case cmapDict :_gcde :=_fdc .Dict ;_fgdd ,_dfac :=_gcde ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_dfac {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_eca ,_dfac :=_fgdd .(cmapString );if !_dfac {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cfgf .Registry =_eca .String ;_fgdd ,_dfac =_gcde ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_dfac {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_eca ,_dfac =_fgdd .(cmapString );if !_dfac {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cfgf .Ordering =_eca .String ;_ffa ,_dfac :=_gcde ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_dfac {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bbf ,_dfac :=_ffa .(cmapInt );if !_dfac {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_cfgf .Supplement =int (_bbf ._bbe );_fdg =true ;case cmapOperand :switch _fdc .Operand {case "\u0062\u0065\u0067i\u006e":_cfg =true ;case "\u0065\u006e\u0064":_fdg =true ;case "\u0064\u0065\u0066":_edag =false ;};case cmapName :if _cfg {_acd =_fdc .Name ;_edag =true ;};case cmapString :if _edag {switch _acd {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_cfgf .Registry =_fdc .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_cfgf .Ordering =_fdc .String ;};};case cmapInt :if _edag {switch _acd {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_cfgf .Supplement =int (_fdc ._bbe );};};};};if !_fdg {_cf .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");return ErrBadCMap ;};cmap ._ef =_cfgf ;return nil ;};func (cmap *CMap )inCodespace (_bbg CharCode ,_bee int )bool {for _ ,_ebc :=range cmap ._aaf {if _ebc .Low <=_bbg &&_bbg <=_ebc .High &&_bee ==_ebc .NumBytes {return true ;};};return false ;};type cmapObject interface{};func _ceeb (_faa string )rune {_ebe :=[]rune (_faa );return _ebe [len (_ebe )-1]};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _bgfd []CharCode ;if cmap ._deb ==8{for _ ,_gcd :=range data {_bgfd =append (_bgfd ,CharCode (_gcd ));};return _bgfd ,true ;};for _ec :=0;_ec < len (data );{_gga ,_dbb ,_ccc :=cmap .matchCode (data [_ec :]);if !_ccc {_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0074\u0020\u0069\u003d\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",_ec ,data ,string (data ));return _bgfd ,false ;};_bgfd =append (_bgfd ,_gga );_ec +=_dbb ;};return _bgfd ,true ;};func (cmap *CMap )Name ()string {return cmap ._aac };func (cmap *CMap )parseBfchar ()error {for {_eace ,_fbd :=cmap .parseObject ();if _fbd !=nil {if _fbd ==_de .EOF {break ;};return _fbd ;};var _bca CharCode ;switch _fffa :=_eace .(type ){case cmapOperand :if _fffa .Operand ==_gad {return nil ;};return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_bca =_cbef (_fffa );default:return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_eace ,_fbd =cmap .parseObject ();if _fbd !=nil {if _fbd ==_de .EOF {break ;};return _fbd ;};var _fcf []rune ;switch _gae :=_eace .(type ){case cmapOperand :if _gae .Operand ==_gad {return nil ;};_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u0070\u0065\u0072\u0061\u006e\u0064\u002e\u0020\u0025\u0023\u0076",_gae );return ErrBadCMap ;case cmapHexString :_fcf =_fgb (_gae );case cmapName :_cf .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0061\u006de\u002e \u0025\u0023\u0076",_gae );_fcf =[]rune {MissingCodeRune };default:_cf .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0074\u0079\u0070e\u002e \u0025\u0023\u0076",_eace );return ErrBadCMap ;};cmap ._aee [_bca ]=string (_fcf );};return nil ;};func _ccb (_ce bool )*CMap {_gdf :=16;if _ce {_gdf =8;};return &CMap {_deb :_gdf ,_bgf :make (map[CharCode ]CharCode ),_fgf :make (map[CharCode ]CharCode ),_aee :make (map[CharCode ]string ),_ff :make (map[string ]CharCode )};};func (cmap *CMap )parseCIDRange ()error {for {_aaa ,_dda :=cmap .parseObject ();if _dda !=nil {if _dda ==_de .EOF {break ;};return _dda ;};_dbba ,_ffcd :=_aaa .(cmapHexString );if !_ffcd {if _bfff ,_eac :=_aaa .(cmapOperand );_eac {if _bfff .Operand ==_cgd {return nil ;};return _af .New ("\u0063\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0072\u0076\u0061\u006c\u0020s\u0074\u0061\u0072\u0074\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");};};_daed :=_cbef (_dbba );_aaa ,_dda =cmap .parseObject ();if _dda !=nil {if _dda ==_de .EOF {break ;};return _dda ;};_acea ,_ffcd :=_aaa .(cmapHexString );if !_ffcd {return _af .New ("\u0063\u0069d\u0020\u0069\u006e\u0074e\u0072\u0076a\u006c\u0020\u0065\u006e\u0064\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");};if len (_dbba ._dbbc )!=len (_acea ._dbbc ){return _af .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_decc :=_cbef (_acea );if _daed > _decc {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0049\u0044\u0020\u0072\u0061\u006e\u0067\u0065\u002e\u0020\u0073t\u0061\u0072\u0074\u003d\u0030\u0078\u0025\u0030\u0032\u0078\u0020\u0065\u006e\u0064=\u0030x\u0025\u0030\u0032\u0078",_daed ,_decc );return ErrBadCMap ;};_aaa ,_dda =cmap .parseObject ();if _dda !=nil {if _dda ==_de .EOF {break ;};return _dda ;};_fgg ,_ffcd :=_aaa .(cmapInt );if !_ffcd {return _af .New ("\u0063\u0069\u0064\u0020\u0073t\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0064\u0065\u0063\u0069\u006d\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _fgg ._bbe < 0{return _af .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_fdb :=_fgg ._bbe ;for _dfab :=_daed ;_dfab <=_decc ;_dfab ++{cmap ._bgf [_dfab ]=CharCode (_fdb );_fdb ++;};_cf .Log .Trace ("C\u0049\u0044\u0020\u0072\u0061\u006eg\u0065\u003a\u0020\u003c\u0030\u0078\u0025\u0058\u003e \u003c\u0030\u0078%\u0058>\u0020\u0025\u0064",_daed ,_decc ,_fgg ._bbe );};return nil ;};const (_cbd =100;_dbf ="\u000a\u002f\u0043\u0049\u0044\u0049\u006e\u0069\u0074\u0020\u002f\u0050\u0072\u006fc\u0053\u0065\u0074\u0020\u0066\u0069\u006e\u0064\u0072es\u006fu\u0072c\u0065 \u0062\u0065\u0067\u0069\u006e\u000a\u0031\u0032\u0020\u0064\u0069\u0063\u0074\u0020\u0062\u0065\u0067\u0069n\u000a\u0062\u0065\u0067\u0069\u006e\u0063\u006d\u0061\u0070\n\u002f\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065m\u0049\u006e\u0066\u006f\u0020\u003c\u003c\u0020\u002f\u0052\u0065\u0067\u0069\u0073t\u0072\u0079\u0020\u0028\u0041\u0064\u006f\u0062\u0065\u0029\u0020\u002f\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0028\u0055\u0043\u0053)\u0020\u002f\u0053\u0075\u0070p\u006c\u0065\u006d\u0065\u006et\u0020\u0030\u0020\u003e\u003e\u0020\u0064\u0065\u0066\u000a\u002f\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u002f\u0041\u0064\u006f\u0062\u0065-\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0055\u0043\u0053\u0020\u0064\u0065\u0066\u000a\u002fC\u004d\u0061\u0070\u0054\u0079\u0070\u0065\u0020\u0032\u0020\u0064\u0065\u0066\u000a\u0031\u0020\u0062\u0065\u0067\u0069\u006e\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063e\u0072\u0061n\u0067\u0065\n\u003c\u0030\u0030\u0030\u0030\u003e\u0020<\u0046\u0046\u0046\u0046\u003e\u000a\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065\u000a";_gfg ="\u0065\u006e\u0064\u0063\u006d\u0061\u0070\u000a\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u0063ur\u0072e\u006e\u0074\u0064\u0069\u0063\u0074\u0020\u002f\u0043\u004d\u0061\u0070 \u0064\u0065\u0066\u0069\u006e\u0065\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0070\u006fp\u000a\u0065\u006e\u0064\u000a\u0065\u006e\u0064\u000a";);type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )parseType ()error {_fgef :=0;_fcg :=false ;for _dfc :=0;_dfc < 3&&!_fcg ;_dfc ++{_dea ,_dfd :=cmap .parseObject ();if _dfd !=nil {return _dfd ;};switch _dfda :=_dea .(type ){case cmapOperand :switch _dfda .Operand {case "\u0064\u0065\u0066":_fcg =true ;default:_cf .Log .Error ("\u0070\u0061r\u0073\u0065\u0054\u0079\u0070\u0065\u003a\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u006f=%\u0023\u0076",_dea );return ErrBadCMap ;};case cmapInt :_fgef =int (_dfda ._bbe );};};cmap ._afg =_fgef ;return nil ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_bba :=_fa (name );if _bba !=nil {return nil ,_bba ;};if cmap ._ea ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_ge ,_bba :=_fa (cmap ._ea );if _bba !=nil {return nil ,_bba ;};for _ffcb ,_gg :=range _ge ._bgf {if _ ,_ab :=cmap ._bgf [_ffcb ];!_ab {cmap ._bgf [_ffcb ]=_gg ;};};for _ ,_ee :=range _ge ._aaf {cmap ._aaf =append (cmap ._aaf ,_ee );};cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_dc ,_cefe :=cmap .BytesToCharcodes (data );if !_cefe {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065s\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069n\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0064\u0061\u0074\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078]\u0020\u0063\u006d\u0061\u0070=\u0025\u0073",data ,cmap );return "",0;};_db :=make ([]string ,len (_dc ));var _dge []CharCode ;for _efe ,_ca :=range _dc {_gef ,_gdg :=cmap ._aee [_ca ];if !_gdg {_dge =append (_dge ,_ca );_gef =MissingCodeString ;};_db [_efe ]=_gef ;};_bfd :=_dg .Join (_db ,"");if len (_dge )> 0{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020C\u0068\u0061\u0072c\u006f\u0064\u0065\u0042y\u0074\u0065\u0073\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070\u002e\u000a"+"\u0009d\u0061t\u0061\u003d\u005b\u0025\u00200\u0032\u0078]\u003d\u0025\u0023\u0071\u000a"+"\u0009\u0063h\u0061\u0072\u0063o\u0064\u0065\u0073\u003d\u0025\u0030\u0032\u0078\u000a"+"\u0009\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003d\u0025\u0064\u0020%\u0030\u0032\u0078\u000a"+"\u0009\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u003d`\u0025\u0073\u0060\u000a"+"\u0009\u0063\u006d\u0061\u0070\u003d\u0025\u0073",data ,string (data ),_dc ,len (_dge ),_dge ,_bfd ,cmap );};return _bfd ,len (_dge );};type cmapName struct{Name string ;};type cmapArray struct{Array []cmapObject ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (_dfge *cMapParser )parseString ()(cmapString ,error ){_dfge ._eeec .ReadByte ();_gffc :=_a .Buffer {};_bef :=1;for {_dbec ,_ebfc :=_dfge ._eeec .Peek (1);if _ebfc !=nil {return cmapString {_gffc .String ()},_ebfc ;};if _dbec [0]=='\\'{_dfge ._eeec .ReadByte ();_dde ,_ffgc :=_dfge ._eeec .ReadByte ();if _ffgc !=nil {return cmapString {_gffc .String ()},_ffgc ;};if _daa .IsOctalDigit (_dde ){_cda ,_gfdd :=_dfge ._eeec .Peek (2);if _gfdd !=nil {return cmapString {_gffc .String ()},_gfdd ;};var _abd []byte ;_abd =append (_abd ,_dde );for _ ,_agg :=range _cda {if _daa .IsOctalDigit (_agg ){_abd =append (_abd ,_agg );}else {break ;};};_dfge ._eeec .Discard (len (_abd )-1);_cf .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_abd );_eccc ,_gfdd :=_c .ParseUint (string (_abd ),8,32);if _gfdd !=nil {return cmapString {_gffc .String ()},_gfdd ;};_gffc .WriteByte (byte (_eccc ));continue ;};switch _dde {case 'n':_gffc .WriteByte ('\n');case 'r':_gffc .WriteByte ('\r');case 't':_gffc .WriteByte ('\t');case 'b':_gffc .WriteByte ('\b');case 'f':_gffc .WriteByte ('\f');case '(':_gffc .WriteByte ('(');case ')':_gffc .WriteByte (')');case '\\':_gffc .WriteByte ('\\');};continue ;}else if _dbec [0]=='('{_bef ++;}else if _dbec [0]==')'{_bef --;if _bef ==0{_dfge ._eeec .ReadByte ();break ;};};_gadf ,_ :=_dfge ._eeec .ReadByte ();_gffc .WriteByte (_gadf );};return cmapString {_gffc .String ()},nil ;};func (_facf *cMapParser )parseComment ()(string ,error ){var _gffe _a .Buffer ;_ ,_ecg :=_facf .skipSpaces ();if _ecg !=nil {return _gffe .String (),_ecg ;};_gdfa :=true ;for {_afc ,_eccg :=_facf ._eeec .Peek (1);if _eccg !=nil {_cf .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_eccg );return _gffe .String (),_eccg ;};if _gdfa &&_afc [0]!='%'{return _gffe .String (),ErrBadCMapComment ;};_gdfa =false ;if (_afc [0]!='\r')&&(_afc [0]!='\n'){_fga ,_ :=_facf ._eeec .ReadByte ();_gffe .WriteByte (_fga );}else {break ;};};return _gffe .String (),nil ;};var (ErrBadCMap =_af .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_af .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");ErrBadCMapDict =_af .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););type charRange struct{_cc CharCode ;_bg CharCode ;};func (_bbgc *cMapParser )parseName ()(cmapName ,error ){_abba :="";_gbf :=false ;for {_ddc ,_fec :=_bbgc ._eeec .Peek (1);if _fec ==_de .EOF {break ;};if _fec !=nil {return cmapName {_abba },_fec ;};if !_gbf {if _ddc [0]=='/'{_gbf =true ;_bbgc ._eeec .ReadByte ();}else {_cf .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_ddc ,_ddc );return cmapName {_abba },_b .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ddc [0]);};}else {if _daa .IsWhiteSpace (_ddc [0]){break ;}else if (_ddc [0]=='/')||(_ddc [0]=='[')||(_ddc [0]=='(')||(_ddc [0]==']')||(_ddc [0]=='<')||(_ddc [0]=='>'){break ;}else if _ddc [0]=='#'{_ecge ,_efeb :=_bbgc ._eeec .Peek (3);if _efeb !=nil {return cmapName {_abba },_efeb ;};_bbgc ._eeec .Discard (3);_fbf ,_efeb :=_gc .DecodeString (string (_ecge [1:3]));if _efeb !=nil {return cmapName {_abba },_efeb ;};_abba +=string (_fbf );}else {_gbg ,_ :=_bbgc ._eeec .ReadByte ();_abba +=string (_gbg );};};};return cmapName {_abba },nil ;};func (cmap *CMap )computeInverseMappings (){for _fac ,_adf :=range cmap ._bgf {if _cb ,_cg :=cmap ._fgf [_adf ];!_cg ||(_cg &&_cb > _fac ){cmap ._fgf [_adf ]=_fac ;};};for _gb ,_cef :=range cmap ._aee {if _dee ,_gge :=cmap ._ff [_cef ];!_gge ||(_gge &&_dee > _gb ){cmap ._ff [_cef ]=_gb ;};};_da .Slice (cmap ._aaf ,func (_gfd ,_bf int )bool {return cmap ._aaf [_gfd ].Low < cmap ._aaf [_bf ].Low });}; |