unipdf/internal/cmap/cmap.go
2024-04-16 11:40:43 +00:00

138 lines
42 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 (_cg "bufio";_eg "bytes";_g "encoding/hex";_cgd "errors";_f "fmt";_gg "github.com/unidoc/unipdf/v3/common";_be "github.com/unidoc/unipdf/v3/core";_gf "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_b "io";_ab "sort";_c "strconv";
_fb "strings";_a "unicode/utf16";);type CMap struct{*cMapParser ;_ce string ;_fe int ;_ff int ;_adc string ;_add string ;_afa CIDSystemInfo ;_fef []Codespace ;_gag map[CharCode ]CharCode ;_dg map[CharCode ]CharCode ;_dga map[CharCode ]string ;_afc map[string ]CharCode ;
_ae []byte ;_ba *_be .PdfObjectStream ;_dd integer ;};var (ErrBadCMap =_cgd .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_cgd .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 =_cgd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )NBits ()int {return cmap ._fe };func (cmap *CMap )parseCIDRange ()error {for {_cac ,_fde :=cmap .parseObject ();if _fde !=nil {if _fde ==_b .EOF {break ;
};return _fde ;};_abf ,_dfd :=_cac .(cmapHexString );if !_dfd {if _fgg ,_agc :=_cac .(cmapOperand );_agc {if _fgg .Operand ==_cdbe {return nil ;};return _cgd .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");
};};_gab :=_deab (_abf );_cac ,_fde =cmap .parseObject ();if _fde !=nil {if _fde ==_b .EOF {break ;};return _fde ;};_cdeg ,_dfd :=_cac .(cmapHexString );if !_dfd {return _cgd .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 (_abf ._dcde )!=len (_cdeg ._dcde ){return _cgd .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");};_fea :=_deab (_cdeg );
if _gab > _fea {_gg .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",_gab ,_fea );
return ErrBadCMap ;};_cac ,_fde =cmap .parseObject ();if _fde !=nil {if _fde ==_b .EOF {break ;};return _fde ;};_fdbb ,_dfd :=_cac .(cmapInt );if !_dfd {return _cgd .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 _fdbb ._ecc < 0{return _cgd .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_dbf :=_fdbb ._ecc ;for _bde :=_gab ;_bde <=_fea ;_bde ++{cmap ._gag [_bde ]=CharCode (_dbf );
_dbf ++;};_gg .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",_gab ,_fea ,_fdbb ._ecc );};return nil ;};func IsPredefinedCMap (name string )bool {return _gf .AssetExists (name )};
func (_cdgd *cMapParser )skipSpaces ()(int ,error ){_dddb :=0;for {_fdef ,_afcf :=_cdgd ._beee .Peek (1);if _afcf !=nil {return 0,_afcf ;};if _be .IsWhiteSpace (_fdef [0]){_cdgd ._beee .ReadByte ();_dddb ++;}else {break ;};};return _dddb ,nil ;};func (_dcg *cMapParser )parseName ()(cmapName ,error ){_geac :="";
_cdec :=false ;for {_aec ,_eeaa :=_dcg ._beee .Peek (1);if _eeaa ==_b .EOF {break ;};if _eeaa !=nil {return cmapName {_geac },_eeaa ;};if !_cdec {if _aec [0]=='/'{_cdec =true ;_dcg ._beee .ReadByte ();}else {_gg .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",_aec ,_aec );
return cmapName {_geac },_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_aec [0]);};}else {if _be .IsWhiteSpace (_aec [0]){break ;}else if (_aec [0]=='/')||(_aec [0]=='[')||(_aec [0]=='(')||(_aec [0]==']')||(_aec [0]=='<')||(_aec [0]=='>'){break ;
}else if _aec [0]=='#'{_effa ,_cba :=_dcg ._beee .Peek (3);if _cba !=nil {return cmapName {_geac },_cba ;};_dcg ._beee .Discard (3);_gdg ,_cba :=_g .DecodeString (string (_effa [1:3]));if _cba !=nil {return cmapName {_geac },_cba ;};_geac +=string (_gdg );
}else {_efee ,_ :=_dcg ._beee .ReadByte ();_geac +=string (_efee );};};};return cmapName {_geac },nil ;};func _deab (_fcfc cmapHexString )CharCode {_cdc :=CharCode (0);for _ ,_ccf :=range _fcfc ._dcde {_cdc <<=8;_cdc |=CharCode (_ccf );};return _cdc ;};
func _egdc (_ecef string )rune {_agb :=[]rune (_ecef );return _agb [len (_agb )-1]};type cmapInt struct{_ecc int64 };const (_ad =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (cmap *CMap )Bytes ()[]byte {_gg .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 ._ae )> 0{return cmap ._ae ;};cmap ._ae =[]byte (_fb .Join ([]string {_aag ,cmap .toBfData (),_agf },"\u000a"));return cmap ._ae ;};func _da (_adb bool )*CMap {_bcc :=16;if _adb {_bcc =8;};return &CMap {_fe :_bcc ,_gag :make (map[CharCode ]CharCode ),_dg :make (map[CharCode ]CharCode ),_dga :make (map[CharCode ]string ),_afc :make (map[string ]CharCode )};
};type cmapArray struct{Array []cmapObject ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_gcbe ,_dcd :=cmap ._gag [code ];return _gcbe ,_dcd ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _gddf []CharCode ;
if cmap ._fe ==8{for _ ,_fbb :=range data {_gddf =append (_gddf ,CharCode (_fbb ));};return _gddf ,true ;};for _cf :=0;_cf < len (data );{_edd ,_eace ,_ece :=cmap .matchCode (data [_cf :]);if !_ece {_gg .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",_cf ,data ,string (data ));
return _gddf ,false ;};_gddf =append (_gddf ,_edd );_cf +=_eace ;};return _gddf ,true ;};func _cae (_bebd []byte )*cMapParser {_aeg :=cMapParser {};_gdcd :=_eg .NewBuffer (_bebd );_aeg ._beee =_cg .NewReader (_gdcd );return &_aeg ;};func (_agd *cMapParser )parseObject ()(cmapObject ,error ){_agd .skipSpaces ();
for {_bgf ,_ebd :=_agd ._beee .Peek (2);if _ebd !=nil {return nil ,_ebd ;};if _bgf [0]=='%'{_agd .parseComment ();_agd .skipSpaces ();continue ;}else if _bgf [0]=='/'{_bag ,_eea :=_agd .parseName ();return _bag ,_eea ;}else if _bgf [0]=='('{_dadd ,_edg :=_agd .parseString ();
return _dadd ,_edg ;}else if _bgf [0]=='['{_feab ,_adgd :=_agd .parseArray ();return _feab ,_adgd ;}else if (_bgf [0]=='<')&&(_bgf [1]=='<'){_egc ,_dag :=_agd .parseDict ();return _egc ,_dag ;}else if _bgf [0]=='<'{_fefc ,_gedd :=_agd .parseHexString ();
return _fefc ,_gedd ;}else if _be .IsDecimalDigit (_bgf [0])||(_bgf [0]=='-'&&_be .IsDecimalDigit (_bgf [1])){_cfb ,_ddddd :=_agd .parseNumber ();if _ddddd !=nil {return nil ,_ddddd ;};return _cfb ,nil ;}else {_agbd ,_aaa :=_agd .parseOperand ();if _aaa !=nil {return nil ,_aaa ;
};return _agbd ,nil ;};};};func (cmap *CMap )computeInverseMappings (){for _gb ,_cdf :=range cmap ._gag {if _fdd ,_cda :=cmap ._dg [_cdf ];!_cda ||(_cda &&_fdd > _gb ){cmap ._dg [_cdf ]=_gb ;};};for _dc ,_bcd :=range cmap ._dga {if _gd ,_ed :=cmap ._afc [_bcd ];
!_ed ||(_ed &&_gd > _dc ){cmap ._afc [_bcd ]=_dc ;};};_ab .Slice (cmap ._fef ,func (_gca ,_ada int )bool {return cmap ._fef [_gca ].Low < cmap ._fef [_ada ].Low });};type cmapObject interface{};func (cmap *CMap )Stream ()(*_be .PdfObjectStream ,error ){if cmap ._ba !=nil {return cmap ._ba ,nil ;
};_ef ,_gce :=_be .MakeStream (cmap .Bytes (),_be .NewFlateEncoder ());if _gce !=nil {return nil ,_gce ;};cmap ._ba =_ef ;return cmap ._ba ,nil ;};func _ggeg (_bdb ,_gfde int )int {if _bdb < _gfde {return _bdb ;};return _gfde ;};func (_bedb *cMapParser )parseOperand ()(cmapOperand ,error ){_cca :=cmapOperand {};
_feaf :=_eg .Buffer {};for {_fgaaf ,_bcca :=_bedb ._beee .Peek (1);if _bcca !=nil {if _bcca ==_b .EOF {break ;};return _cca ,_bcca ;};if _be .IsDelimiter (_fgaaf [0]){break ;};if _be .IsWhiteSpace (_fgaaf [0]){break ;};_ega ,_ :=_bedb ._beee .ReadByte ();
_feaf .WriteByte (_ega );};if _feaf .Len ()==0{return _cca ,_f .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_cca .Operand =_feaf .String ();return _cca ,nil ;
};func (cmap *CMap )Type ()int {return cmap ._ff };type cmapOperand struct{Operand string ;};func (_beg *cMapParser )parseArray ()(cmapArray ,error ){_bcda :=cmapArray {};_bcda .Array =[]cmapObject {};_beg ._beee .ReadByte ();for {_beg .skipSpaces ();_edf ,_ceg :=_beg ._beee .Peek (1);
if _ceg !=nil {return _bcda ,_ceg ;};if _edf [0]==']'{_beg ._beee .ReadByte ();break ;};_fceb ,_ceg :=_beg .parseObject ();if _ceg !=nil {return _bcda ,_ceg ;};_bcda .Array =append (_bcda .Array ,_fceb );};return _bcda ,nil ;};func (_eafaa *cMapParser )parseString ()(cmapString ,error ){_eafaa ._beee .ReadByte ();
_egcc :=_eg .Buffer {};_fcff :=1;for {_fbg ,_ceb :=_eafaa ._beee .Peek (1);if _ceb !=nil {return cmapString {_egcc .String ()},_ceb ;};if _fbg [0]=='\\'{_eafaa ._beee .ReadByte ();_bbc ,_bage :=_eafaa ._beee .ReadByte ();if _bage !=nil {return cmapString {_egcc .String ()},_bage ;
};if _be .IsOctalDigit (_bbc ){_cdfg ,_cbgf :=_eafaa ._beee .Peek (2);if _cbgf !=nil {return cmapString {_egcc .String ()},_cbgf ;};var _gefe []byte ;_gefe =append (_gefe ,_bbc );for _ ,_dgf :=range _cdfg {if _be .IsOctalDigit (_dgf ){_gefe =append (_gefe ,_dgf );
}else {break ;};};_eafaa ._beee .Discard (len (_gefe )-1);_gg .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_gefe );_afca ,_cbgf :=_c .ParseUint (string (_gefe ),8,32);if _cbgf !=nil {return cmapString {_egcc .String ()},_cbgf ;
};_egcc .WriteByte (byte (_afca ));continue ;};switch _bbc {case 'n':_egcc .WriteByte ('\n');case 'r':_egcc .WriteByte ('\r');case 't':_egcc .WriteByte ('\t');case 'b':_egcc .WriteByte ('\b');case 'f':_egcc .WriteByte ('\f');case '(':_egcc .WriteByte ('(');
case ')':_egcc .WriteByte (')');case '\\':_egcc .WriteByte ('\\');};continue ;}else if _fbg [0]=='('{_fcff ++;}else if _fbg [0]==')'{_fcff --;if _fcff ==0{_eafaa ._beee .ReadByte ();break ;};};_bagc ,_ :=_eafaa ._beee .ReadByte ();_egcc .WriteByte (_bagc );
};return cmapString {_egcc .String ()},nil ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func _becg (_gfb string )string {_efe :=[]rune (_gfb );_ggaa :=make ([]string ,len (_efe ));for _dec ,_cde :=range _efe {_ggaa [_dec ]=_f .Sprintf ("\u0025\u0030\u0034\u0078",_cde );
};return _f .Sprintf ("\u003c\u0025\u0073\u003e",_fb .Join (_ggaa ,""));};func (cmap *CMap )parseType ()error {_dce :=0;_cdab :=false ;for _gae :=0;_gae < 3&&!_cdab ;_gae ++{_aae ,_acff :=cmap .parseObject ();if _acff !=nil {return _acff ;};switch _baaf :=_aae .(type ){case cmapOperand :switch _baaf .Operand {case "\u0064\u0065\u0066":_cdab =true ;
default:_gg .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",_aae );return ErrBadCMap ;};case cmapInt :_dce =int (_baaf ._ecc );
};};cmap ._ff =_dce ;return nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _fed ,_geb :=cmap ._dga [code ];_geb {return _fed ,true ;};return MissingCodeString ,false ;};func (_bdf *cMapParser )parseComment ()(string ,error ){var _ccg _eg .Buffer ;
_ ,_gdag :=_bdf .skipSpaces ();if _gdag !=nil {return _ccg .String (),_gdag ;};_cffc :=true ;for {_gcba ,_abfd :=_bdf ._beee .Peek (1);if _abfd !=nil {_gg .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_abfd );
return _ccg .String (),_abfd ;};if _cffc &&_gcba [0]!='%'{return _ccg .String (),ErrBadCMapComment ;};_cffc =false ;if (_gcba [0]!='\r')&&(_gcba [0]!='\n'){_fec ,_ :=_bdf ._beee .ReadByte ();_ccg .WriteByte (_fec );}else {break ;};};return _ccg .String (),nil ;
};type integer struct{_edda bool ;_dbgd int ;};type cmapHexString struct{_eddc int ;_dcde []byte ;};type cmapDict struct{Dict map[string ]cmapObject ;};const (_adce ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_bgb ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_agcg ="\u0065n\u0064\u0063\u006d\u0061\u0070";_bfdg ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_gbe ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_gba ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_dbfb ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_badff ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gead ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_dada ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cdbe ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_dgee ="\u0075s\u0065\u0063\u006d\u0061\u0070";_ceaa ="\u0057\u004d\u006fd\u0065";_cdfc ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_gagb ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_gebf ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )parseBfchar ()error {for {_cgcf ,_dcecb :=cmap .parseObject ();if _dcecb !=nil {if _dcecb ==_b .EOF {break ;
};return _dcecb ;};var _cagge CharCode ;switch _fbe :=_cgcf .(type ){case cmapOperand :if _fbe .Operand ==_dbfb {return nil ;};return _cgd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_cagge =_deab (_fbe );
default:return _cgd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_cgcf ,_dcecb =cmap .parseObject ();if _dcecb !=nil {if _dcecb ==_b .EOF {break ;};return _dcecb ;};var _cdeb []rune ;switch _ace :=_cgcf .(type ){case cmapOperand :if _ace .Operand ==_dbfb {return nil ;
};_gg .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",_ace );return ErrBadCMap ;case cmapHexString :_cdeb =_ffda (_ace );
case cmapName :_gg .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",_ace );_cdeb =[]rune {MissingCodeRune };default:_gg .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",_cgcf );
return ErrBadCMap ;};cmap ._dga [_cagge ]=string (_cdeb );};return nil ;};func (cmap *CMap )String ()string {_gfg :=cmap ._afa ;_adba :=[]string {_f .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._fe ),_f .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ff )};
if cmap ._adc !=""{_adba =append (_adba ,_f .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._adc ));};if cmap ._add !=""{_adba =append (_adba ,_f .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._add ));
};_adba =append (_adba ,_f .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_gfg .String ()));if len (cmap ._fef )> 0{_adba =append (_adba ,_f .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._fef )));
};if len (cmap ._dga )> 0{_adba =append (_adba ,_f .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._dga )));};return _f .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ce ,_fb .Join (_adba ,"\u0020"));
};type fbRange struct{_ggg CharCode ;_d CharCode ;_fc string ;};func (cmap *CMap )parseVersion ()error {_gdc :="";_fbbe :=false ;for _cccb :=0;_cccb < 3&&!_fbbe ;_cccb ++{_eb ,_cfa :=cmap .parseObject ();if _cfa !=nil {return _cfa ;};switch _bfb :=_eb .(type ){case cmapOperand :switch _bfb .Operand {case "\u0064\u0065\u0066":_fbbe =true ;
default:_gg .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",_eb );
return ErrBadCMap ;};case cmapInt :_gdc =_f .Sprintf ("\u0025\u0064",_bfb ._ecc );case cmapFloat :_gdc =_f .Sprintf ("\u0025\u0066",_bfb ._fdda );case cmapString :_gdc =_bfb .String ;default:_gg .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",_eb );
};};cmap ._adc =_gdc ;return nil ;};type cmapName struct{Name string ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gaa ,_bea :=cmap .BytesToCharcodes (data );if !_bea {_gg .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;};_de :=make ([]string ,len (_gaa ));var _bec []CharCode ;for _gff ,_ddb :=range _gaa {_cgc ,_eee :=cmap ._dga [_ddb ];if !_eee {_bec =append (_bec ,_ddb );_cgc =MissingCodeString ;};_de [_gff ]=_cgc ;};_ddd :=_fb .Join (_de ,"");if len (_bec )> 0{_gg .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 ),_gaa ,len (_bec ),_bec ,_ddd ,cmap );
};return _ddd ,len (_bec );};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._dd ._dbgd ,cmap ._dd ._edda };func NewCIDSystemInfo (obj _be .PdfObject )(_gc CIDSystemInfo ,_fcf error ){_beb ,_ec :=_be .GetDict (obj );if !_ec {return CIDSystemInfo {},_be .ErrTypeError ;
};_df ,_ec :=_be .GetStringVal (_beb .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_ec {return CIDSystemInfo {},_be .ErrTypeError ;};_cd ,_ec :=_be .GetStringVal (_beb .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_ec {return CIDSystemInfo {},_be .ErrTypeError ;
};_cc ,_ec :=_be .GetIntVal (_beb .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_ec {return CIDSystemInfo {},_be .ErrTypeError ;};return CIDSystemInfo {Registry :_df ,Ordering :_cd ,Supplement :_cc },nil ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._afa };
type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )parseWMode ()error {var _fefa int ;_dgcg :=false ;for _dde :=0;_dde < 3&&!_dgcg ;_dde ++{_ddde ,_ecf :=cmap .parseObject ();if _ecf !=nil {return _ecf ;};switch _dfg :=_ddde .(type ){case cmapOperand :switch _dfg .Operand {case "\u0064\u0065\u0066":_dgcg =true ;
default:_gg .Log .Error ("\u0070\u0061\u0072\u0073\u0065\u0057\u004d\u006f\u0064\u0065:\u0020\u0073\u0074\u0061\u0074\u0065\u0020e\u0072\u0072\u006f\u0072\u002e\u0020\u006f\u003d\u0025\u0023\u0076",_ddde );return ErrBadCMap ;};case cmapInt :_fefa =int (_dfg ._ecc );
};};cmap ._dd =integer {_edda :true ,_dbgd :_fefa };return nil ;};func (cmap *CMap )matchCode (_acf []byte )(_dgae CharCode ,_cbg int ,_aab bool ){for _bb :=0;_bb < _ad ;_bb ++{if _bb < len (_acf ){_dgae =_dgae <<8|CharCode (_acf [_bb ]);_cbg ++;};_aab =cmap .inCodespace (_dgae ,_bb +1);
if _aab {return _dgae ,_cbg ,true ;};};_gg .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",_acf ,string (_acf ),cmap );
return 0,0,false ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func _bcec (_gefac cmapHexString )rune {_fbeg :=_ffda (_gefac );if _egdf :=len (_fbeg );_egdf ==0{_gg .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",_gefac );
return MissingCodeRune ;};if len (_fbeg )> 1{_gg .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",_gefac ,_fbeg );
};return _fbeg [0];};func (cmap *CMap )parse ()error {var _ddf cmapObject ;for {_bge ,_gggf :=cmap .parseObject ();if _gggf !=nil {if _gggf ==_b .EOF {break ;};_gg .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_gggf );
return _gggf ;};switch _ggc :=_bge .(type ){case cmapOperand :_fdf :=_ggc ;switch _fdf .Operand {case _bfdg :_bfa :=cmap .parseCodespaceRange ();if _bfa !=nil {return _bfa ;};case _dada :_cdb :=cmap .parseCIDRange ();if _cdb !=nil {return _cdb ;};case _gba :_ecd :=cmap .parseBfchar ();
if _ecd !=nil {return _ecd ;};case _badff :_gdaf :=cmap .parseBfrange ();if _gdaf !=nil {return _gdaf ;};case _dgee :if _ddf ==nil {_gg .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 ;};_dfb ,_afd :=_ddf .(cmapName );if !_afd {_gg .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",_ddf );
return ErrBadCMap ;};cmap ._add =_dfb .Name ;case _adce :_gfa :=cmap .parseSystemInfo ();if _gfa !=nil {return _gfa ;};};case cmapName :_bad :=_ggc ;switch _bad .Name {case _adce :_gde :=cmap .parseSystemInfo ();if _gde !=nil {return _gde ;};case _cdfc :_egf :=cmap .parseName ();
if _egf !=nil {return _egf ;};case _gagb :_bce :=cmap .parseType ();if _bce !=nil {return _bce ;};case _gebf :_adg :=cmap .parseVersion ();if _adg !=nil {return _adg ;};case _ceaa :if _gggf =cmap .parseWMode ();_gggf !=nil {return _gggf ;};};};_ddf =_bge ;
};return nil ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_bccf :=_cb (name );if _bccf !=nil {return nil ,_bccf ;};if cmap ._add ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_dge ,_bccf :=_cb (cmap ._add );if _bccf !=nil {return nil ,_bccf ;
};for _ddc ,_gcb :=range _dge ._gag {if _ ,_cga :=cmap ._gag [_ddc ];!_cga {cmap ._gag [_ddc ]=_gcb ;};};cmap ._fef =append (cmap ._fef ,_dge ._fef ...);cmap .computeInverseMappings ();return cmap ,nil ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_gg .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 :=_da (isSimple );cmap .cMapParser =_cae (data );_ccb :=cmap .parse ();if _ccb !=nil {return nil ,_ccb ;};if len (cmap ._fef )==0{if cmap ._add !=""{return cmap ,nil ;};_gg .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 );
};cmap .computeInverseMappings ();return cmap ,nil ;};type cmapString struct{String string ;};func (_ga *CIDSystemInfo )String ()string {return _f .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ga .Registry ,_ga .Ordering ,_ga .Supplement );
};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_cgda ,_gdd :=cmap ._afc [s ];return _cgda ,_gdd ;};func (_caa *cMapParser )parseHexString ()(cmapHexString ,error ){_caa ._beee .ReadByte ();_cdea :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_cfbb :=_eg .Buffer {};for {_caa .skipSpaces ();_gefa ,_bfad :=_caa ._beee .Peek (1);if _bfad !=nil {return cmapHexString {},_bfad ;};if _gefa [0]=='>'{_caa ._beee .ReadByte ();break ;};_fa ,_ :=_caa ._beee .ReadByte ();if _eg .IndexByte (_cdea ,_fa )>=0{_cfbb .WriteByte (_fa );
};};if _cfbb .Len ()%2==1{_gg .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",_cfbb .String ());_cfbb .WriteByte ('0');};_fdcg :=_cfbb .Len ()/2;
_egg ,_ :=_g .DecodeString (_cfbb .String ());return cmapHexString {_eddc :_fdcg ,_dcde :_egg },nil ;};func (_bcde *cMapParser )parseDict ()(cmapDict ,error ){_gg .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_gge :=_cgcd ();_dbg ,_ :=_bcde ._beee .ReadByte ();if _dbg !='<'{return _gge ,ErrBadCMapDict ;};_dbg ,_ =_bcde ._beee .ReadByte ();if _dbg !='<'{return _gge ,ErrBadCMapDict ;};for {_bcde .skipSpaces ();_aagg ,_dage :=_bcde ._beee .Peek (2);if _dage !=nil {return _gge ,_dage ;
};if (_aagg [0]=='>')&&(_aagg [1]=='>'){_bcde ._beee .ReadByte ();_bcde ._beee .ReadByte ();break ;};_dba ,_dage :=_bcde .parseName ();_gg .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_dba .Name );if _dage !=nil {_gg .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",_dage );
return _gge ,_dage ;};_bcde .skipSpaces ();_fag ,_dage :=_bcde .parseObject ();if _dage !=nil {return _gge ,_dage ;};_gge .Dict [_dba .Name ]=_fag ;_bcde .skipSpaces ();_aagg ,_dage =_bcde ._beee .Peek (3);if _dage !=nil {return _gge ,_dage ;};if string (_aagg )=="\u0064\u0065\u0066"{_bcde ._beee .Discard (3);
};};return _gge ,nil ;};type cmapFloat struct{_fdda float64 };func (cmap *CMap )Name ()string {return cmap ._ce };type cMapParser struct{_beee *_cg .Reader };func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_baf ,_eac :=cmap ._dg [cid ];
return _baf ,_eac ;};func _ffda (_fcg cmapHexString )[]rune {if len (_fcg ._dcde )==1{return []rune {rune (_fcg ._dcde [0])};};_efa :=_fcg ._dcde ;if len (_efa )%2!=0{_efa =append (_efa ,0);_gg .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",_fcg ,_efa );
};_bbcg :=len (_efa )>>1;_gdcdd :=make ([]uint16 ,_bbcg );for _fff :=0;_fff < _bbcg ;_fff ++{_gdcdd [_fff ]=uint16 (_efa [_fff <<1])<<8+uint16 (_efa [_fff <<1+1]);};_aaae :=_a .Decode (_gdcdd );return _aaae ;};func (cmap *CMap )parseCodespaceRange ()error {for {_gbb ,_gefd :=cmap .parseObject ();
if _gefd !=nil {if _gefd ==_b .EOF {break ;};return _gefd ;};_eda ,_afag :=_gbb .(cmapHexString );if !_afag {if _cgdf ,_ggaf :=_gbb .(cmapOperand );_ggaf {if _cgdf .Operand ==_gbe {return nil ;};return _cgd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
};};_gbb ,_gefd =cmap .parseObject ();if _gefd !=nil {if _gefd ==_b .EOF {break ;};return _gefd ;};_gcce ,_afag :=_gbb .(cmapHexString );if !_afag {return _cgd .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_eda ._dcde )!=len (_gcce ._dcde ){return _cgd .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");
};_dcec :=_deab (_eda );_eef :=_deab (_gcce );if _eef < _dcec {_gg .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",_dcec ,_eef );
return ErrBadCMap ;};_gfdb :=_gcce ._eddc ;_fgaa :=Codespace {NumBytes :_gfdb ,Low :_dcec ,High :_eef };cmap ._fef =append (cmap ._fef ,_fgaa );_gg .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",_dcec ,_eef );
};if len (cmap ._fef )==0{_gg .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 ;};func (cmap *CMap )parseBfrange ()error {for {var _acfe CharCode ;
_gea ,_bfd :=cmap .parseObject ();if _bfd !=nil {if _bfd ==_b .EOF {break ;};return _bfd ;};switch _gffg :=_gea .(type ){case cmapOperand :if _gffg .Operand ==_gead {return nil ;};return _cgd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_acfe =_deab (_gffg );default:return _cgd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _cce CharCode ;_gea ,_bfd =cmap .parseObject ();if _bfd !=nil {if _bfd ==_b .EOF {break ;};return _bfd ;
};switch _fdee :=_gea .(type ){case cmapOperand :_gg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\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 :_cce =_deab (_fdee );if _cce > 0xffff{_cce =0xffff;};default:_gg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_gea );return ErrBadCMap ;
};_gea ,_bfd =cmap .parseObject ();if _bfd !=nil {if _bfd ==_b .EOF {break ;};return _bfd ;};switch _edc :=_gea .(type ){case cmapArray :if len (_edc .Array )!=int (_cce -_acfe )+1{_gg .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 _eaf :=_acfe ;_eaf <=_cce ;_eaf ++{_deg :=_edc .Array [_eaf -_acfe ];_cge ,_eafa :=_deg .(cmapHexString );if !_eafa {return _cgd .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_gced :=_ffda (_cge );cmap ._dga [_eaf ]=string (_gced );};case cmapHexString :_daf :=_ffda (_edc );_aee :=len (_daf );for _ddfg :=_acfe ;_ddfg <=_cce ;_ddfg ++{cmap ._dga [_ddfg ]=string (_daf );if _aee > 0{_daf [_aee -1]++;}else {_gg .Log .Debug ("\u004e\u006f\u0020c\u006d\u0061\u0070\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0066\u006f\u0072\u0020\u0025\u0023\u0076",_ddfg );
};if _ddfg ==1<<32-1{break ;};};default:_gg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_gea );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )parseName ()error {_dgc :="";
_ffd :=false ;for _afe :=0;_afe < 20&&!_ffd ;_afe ++{_fdb ,_eddd :=cmap .parseObject ();if _eddd !=nil {return _eddd ;};switch _eeb :=_fdb .(type ){case cmapOperand :switch _eeb .Operand {case "\u0064\u0065\u0066":_ffd =true ;default:_gg .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",_fdb ,_dgc );
if _dgc !=""{_dgc =_f .Sprintf ("\u0025\u0073\u0020%\u0073",_dgc ,_eeb .Operand );};_gg .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",_dgc );
};case cmapName :_dgc =_eeb .Name ;};};if !_ffd {_gg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ce =_dgc ;return nil ;};func (_aff *cMapParser )parseNumber ()(cmapObject ,error ){_afcd ,_dggd :=_be .ParseNumber (_aff ._beee );
if _dggd !=nil {return nil ,_dggd ;};switch _eaec :=_afcd .(type ){case *_be .PdfObjectFloat :return cmapFloat {float64 (*_eaec )},nil ;case *_be .PdfObjectInteger :return cmapInt {int64 (*_eaec )},nil ;};return nil ,_f .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_afcd );
};const (_fee =100;_aag ="\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";
_agf ="\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 CharCode uint32 ;func (cmap *CMap )toBfData ()string {if len (cmap ._dga )==0{return "";};_dad :=make ([]CharCode ,0,len (cmap ._dga ));for _cff :=range cmap ._dga {_dad =append (_dad ,_cff );};_ab .Slice (_dad ,func (_bcb ,_cgg int )bool {return _dad [_bcb ]< _dad [_cgg ]});
var _eeg []charRange ;_ged :=charRange {_dad [0],_dad [0]};_gec :=cmap ._dga [_dad [0]];for _ ,_bf :=range _dad [1:]{_gcc :=cmap ._dga [_bf ];if _bf ==_ged ._bc +1&&_egdc (_gcc )==_egdc (_gec )+1{_ged ._bc =_bf ;}else {_eeg =append (_eeg ,_ged );_ged ._af ,_ged ._bc =_bf ,_bf ;
};_gec =_gcc ;};_eeg =append (_eeg ,_ged );var _cffg []CharCode ;var _bbb []fbRange ;for _ ,_eed :=range _eeg {if _eed ._af ==_eed ._bc {_cffg =append (_cffg ,_eed ._af );}else {_bbb =append (_bbb ,fbRange {_ggg :_eed ._af ,_d :_eed ._bc ,_fc :cmap ._dga [_eed ._af ]});
};};_gg .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 (_eeg ),len (_cffg ),len (_bbb ));var _fdg []string ;if len (_cffg )> 0{_egd :=(len (_cffg )+_fee -1)/_fee ;
for _becc :=0;_becc < _egd ;_becc ++{_abg :=_ggeg (len (_cffg )-_becc *_fee ,_fee );_fdg =append (_fdg ,_f .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_abg ));for _bg :=0;_bg < _abg ;_bg ++{_afb :=_cffg [_becc *_fee +_bg ];
_cdga :=cmap ._dga [_afb ];_fdg =append (_fdg ,_f .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_afb ,_becg (_cdga )));};_fdg =append (_fdg ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_bbb )> 0{_dddd :=(len (_bbb )+_fee -1)/_fee ;
for _fce :=0;_fce < _dddd ;_fce ++{_bba :=_ggeg (len (_bbb )-_fce *_fee ,_fee );_fdg =append (_fdg ,_f .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_bba ));for _caf :=0;_caf < _bba ;_caf ++{_bd :=_bbb [_fce *_fee +_caf ];
_fdg =append (_fdg ,_f .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_bd ._ggg ,_bd ._d ,_becg (_bd ._fc )));};_fdg =append (_fdg ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _fb .Join (_fdg ,"\u000a");
};func (cmap *CMap )parseSystemInfo ()error {_cef :=false ;_fefb :=false ;_aaf :="";_eff :=false ;_badf :=CIDSystemInfo {};for _dbd :=0;_dbd < 50&&!_eff ;_dbd ++{_ced ,_afdb :=cmap .parseObject ();if _afdb !=nil {return _afdb ;};switch _aad :=_ced .(type ){case cmapDict :_bfg :=_aad .Dict ;
_adge ,_gcd :=_bfg ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_gcd {_gg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fdc ,_gcd :=_adge .(cmapString );
if !_gcd {_gg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_badf .Registry =_fdc .String ;_adge ,_gcd =_bfg ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];
if !_gcd {_gg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fdc ,_gcd =_adge .(cmapString );if !_gcd {_gg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_badf .Ordering =_fdc .String ;_cee ,_gcd :=_bfg ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_gcd {_gg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_adbc ,_gcd :=_cee .(cmapInt );if !_gcd {_gg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_badf .Supplement =int (_adbc ._ecc );
_eff =true ;case cmapOperand :switch _aad .Operand {case "\u0062\u0065\u0067i\u006e":_cef =true ;case "\u0065\u006e\u0064":_eff =true ;case "\u0064\u0065\u0066":_fefb =false ;};case cmapName :if _cef {_aaf =_aad .Name ;_fefb =true ;};case cmapString :if _fefb {switch _aaf {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_badf .Registry =_aad .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_badf .Ordering =_aad .String ;};};case cmapInt :if _fefb {switch _aaf {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_badf .Supplement =int (_aad ._ecc );};};};};if !_eff {_gg .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 ._afa =_badf ;return nil ;};type charRange struct{_af CharCode ;_bc CharCode ;};func _cb (_dae string )(*CMap ,error ){_fd ,_ea :=_gf .Asset (_dae );if _ea !=nil {return nil ,_ea ;};return LoadCmapFromDataCID (_fd );};func (cmap *CMap )inCodespace (_fca CharCode ,_fba int )bool {for _ ,_gda :=range cmap ._fef {if _gda .Low <=_fca &&_fca <=_gda .High &&_fba ==_gda .NumBytes {return true ;
};};return false ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ge :=make (map[CharCode ]string ,len (codeToRune ));for _cea ,_baa :=range codeToRune {_ge [_cea ]=string (_baa );};cmap :=&CMap {_ce :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ff :2,_fe :16,_afa :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_fef :[]Codespace {{Low :0,High :0xffff}},_dga :_ge ,_afc :make (map[string ]CharCode ,len (codeToRune )),_gag :make (map[CharCode ]CharCode ,len (codeToRune )),_dg :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func _cgcd ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};