hpdf_encoder.c 110 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997
  1. /*
  2. * << Haru Free PDF Library >> -- hpdf_encoder.c
  3. *
  4. * URL: http://libharu.org
  5. *
  6. * Copyright (c) 1999-2006 Takeshi Kanno <[email protected]>
  7. * Copyright (c) 2007-2009 Antony Dovgal <[email protected]>
  8. *
  9. * Permission to use, copy, modify, distribute and sell this software
  10. * and its documentation for any purpose is hereby granted without fee,
  11. * provided that the above copyright notice appear in all copies and
  12. * that both that copyright notice and this permission notice appear
  13. * in supporting documentation.
  14. * It is provided "as is" without express or implied warranty.
  15. *
  16. */
  17. #include "hpdf_conf.h"
  18. #include "hpdf_utils.h"
  19. #include "hpdf_encoder.h"
  20. #include "hpdf.h"
  21. typedef struct _HPDF_UnicodeGryphPair {
  22. HPDF_UNICODE unicode;
  23. const char *gryph_name;
  24. } HPDF_UnicodeGryphPair;
  25. #define HPDF_BASIC_ENCODER_FIRST_CHAR 32
  26. #define HPDF_BASIC_ENCODER_LAST_CHAR 255
  27. static const HPDF_UnicodeGryphPair HPDF_UNICODE_GRYPH_NAME_MAP[] = {
  28. {0x0000, char_NOTDEF},
  29. {0x0020, "space"},
  30. {0x0021, "exclam"},
  31. {0x0022, "quotedbl"},
  32. {0x0023, "numbersign"},
  33. {0x0024, "dollar"},
  34. {0x0025, "percent"},
  35. {0x0026, "ampersand"},
  36. {0x0027, "quotesingle"},
  37. {0x0028, "parenleft"},
  38. {0x0029, "parenright"},
  39. {0x002A, "asterisk"},
  40. {0x002B, "plus"},
  41. {0x002C, "comma"},
  42. {0x002D, "hyphen"},
  43. {0x002E, "period"},
  44. {0x002F, "slash"},
  45. {0x0030, "zero"},
  46. {0x0031, "one"},
  47. {0x0032, "two"},
  48. {0x0033, "three"},
  49. {0x0034, "four"},
  50. {0x0035, "five"},
  51. {0x0036, "six"},
  52. {0x0037, "seven"},
  53. {0x0038, "eight"},
  54. {0x0039, "nine"},
  55. {0x003A, "colon"},
  56. {0x003B, "semicolon"},
  57. {0x003C, "less"},
  58. {0x003D, "equal"},
  59. {0x003E, "greater"},
  60. {0x003F, "question"},
  61. {0x0040, "at"},
  62. {0x0041, "A"},
  63. {0x0042, "B"},
  64. {0x0043, "C"},
  65. {0x0044, "D"},
  66. {0x0045, "E"},
  67. {0x0046, "F"},
  68. {0x0047, "G"},
  69. {0x0048, "H"},
  70. {0x0049, "I"},
  71. {0x004A, "J"},
  72. {0x004B, "K"},
  73. {0x004C, "L"},
  74. {0x004D, "M"},
  75. {0x004E, "N"},
  76. {0x004F, "O"},
  77. {0x0050, "P"},
  78. {0x0051, "Q"},
  79. {0x0052, "R"},
  80. {0x0053, "S"},
  81. {0x0054, "T"},
  82. {0x0055, "U"},
  83. {0x0056, "V"},
  84. {0x0057, "W"},
  85. {0x0058, "X"},
  86. {0x0059, "Y"},
  87. {0x005A, "Z"},
  88. {0x005B, "bracketleft"},
  89. {0x005C, "backslash"},
  90. {0x005D, "bracketright"},
  91. {0x005E, "asciicircum"},
  92. {0x005F, "underscore"},
  93. {0x0060, "grave"},
  94. {0x0061, "a"},
  95. {0x0062, "b"},
  96. {0x0063, "c"},
  97. {0x0064, "d"},
  98. {0x0065, "e"},
  99. {0x0066, "f"},
  100. {0x0067, "g"},
  101. {0x0068, "h"},
  102. {0x0069, "i"},
  103. {0x006A, "j"},
  104. {0x006B, "k"},
  105. {0x006C, "l"},
  106. {0x006D, "m"},
  107. {0x006E, "n"},
  108. {0x006F, "o"},
  109. {0x0070, "p"},
  110. {0x0071, "q"},
  111. {0x0072, "r"},
  112. {0x0073, "s"},
  113. {0x0074, "t"},
  114. {0x0075, "u"},
  115. {0x0076, "v"},
  116. {0x0077, "w"},
  117. {0x0078, "x"},
  118. {0x0079, "y"},
  119. {0x007A, "z"},
  120. {0x007B, "braceleft"},
  121. {0x007C, "bar"},
  122. {0x007D, "braceright"},
  123. {0x007E, "asciitilde"},
  124. {0x00A0, "space"},
  125. {0x00A1, "exclamdown"},
  126. {0x00A2, "cent"},
  127. {0x00A3, "sterling"},
  128. {0x00A4, "currency"},
  129. {0x00A5, "yen"},
  130. {0x00A6, "brokenbar"},
  131. {0x00A7, "section"},
  132. {0x00A8, "dieresis"},
  133. {0x00A9, "copyright"},
  134. {0x00AA, "ordfeminine"},
  135. {0x00AB, "guillemotleft"},
  136. {0x00AC, "logicalnot"},
  137. {0x00AD, "hyphen"},
  138. {0x00AE, "registered"},
  139. {0x00AF, "macron"},
  140. {0x00B0, "degree"},
  141. {0x00B1, "plusminus"},
  142. {0x00B2, "twosuperior"},
  143. {0x00B3, "threesuperior"},
  144. {0x00B4, "acute"},
  145. {0x00B5, "mu"},
  146. {0x00B6, "paragraph"},
  147. {0x00B7, "periodcentered"},
  148. {0x00B8, "cedilla"},
  149. {0x00B9, "onesuperior"},
  150. {0x00BA, "ordmasculine"},
  151. {0x00BB, "guillemotright"},
  152. {0x00BC, "onequarter"},
  153. {0x00BD, "onehalf"},
  154. {0x00BE, "threequarters"},
  155. {0x00BF, "questiondown"},
  156. {0x00C0, "Agrave"},
  157. {0x00C1, "Aacute"},
  158. {0x00C2, "Acircumflex"},
  159. {0x00C3, "Atilde"},
  160. {0x00C4, "Adieresis"},
  161. {0x00C5, "Aring"},
  162. {0x00C6, "AE"},
  163. {0x00C7, "Ccedilla"},
  164. {0x00C8, "Egrave"},
  165. {0x00C9, "Eacute"},
  166. {0x00CA, "Ecircumflex"},
  167. {0x00CB, "Edieresis"},
  168. {0x00CC, "Igrave"},
  169. {0x00CD, "Iacute"},
  170. {0x00CE, "Icircumflex"},
  171. {0x00CF, "Idieresis"},
  172. {0x00D0, "Eth"},
  173. {0x00D1, "Ntilde"},
  174. {0x00D2, "Ograve"},
  175. {0x00D3, "Oacute"},
  176. {0x00D4, "Ocircumflex"},
  177. {0x00D5, "Otilde"},
  178. {0x00D6, "Odieresis"},
  179. {0x00D7, "multiply"},
  180. {0x00D8, "Oslash"},
  181. {0x00D9, "Ugrave"},
  182. {0x00DA, "Uacute"},
  183. {0x00DB, "Ucircumflex"},
  184. {0x00DC, "Udieresis"},
  185. {0x00DD, "Yacute"},
  186. {0x00DE, "Thorn"},
  187. {0x00DF, "germandbls"},
  188. {0x00E0, "agrave"},
  189. {0x00E1, "aacute"},
  190. {0x00E2, "acircumflex"},
  191. {0x00E3, "atilde"},
  192. {0x00E4, "adieresis"},
  193. {0x00E5, "aring"},
  194. {0x00E6, "ae"},
  195. {0x00E7, "ccedilla"},
  196. {0x00E8, "egrave"},
  197. {0x00E9, "eacute"},
  198. {0x00EA, "ecircumflex"},
  199. {0x00EB, "edieresis"},
  200. {0x00EC, "igrave"},
  201. {0x00ED, "iacute"},
  202. {0x00EE, "icircumflex"},
  203. {0x00EF, "idieresis"},
  204. {0x00F0, "eth"},
  205. {0x00F1, "ntilde"},
  206. {0x00F2, "ograve"},
  207. {0x00F3, "oacute"},
  208. {0x00F4, "ocircumflex"},
  209. {0x00F5, "otilde"},
  210. {0x00F6, "odieresis"},
  211. {0x00F7, "divide"},
  212. {0x00F8, "oslash"},
  213. {0x00F9, "ugrave"},
  214. {0x00FA, "uacute"},
  215. {0x00FB, "ucircumflex"},
  216. {0x00FC, "udieresis"},
  217. {0x00FD, "yacute"},
  218. {0x00FE, "thorn"},
  219. {0x00FF, "ydieresis"},
  220. {0x0100, "Amacron"},
  221. {0x0101, "amacron"},
  222. {0x0102, "Abreve"},
  223. {0x0103, "abreve"},
  224. {0x0104, "Aogonek"},
  225. {0x0105, "aogonek"},
  226. {0x0106, "Cacute"},
  227. {0x0107, "cacute"},
  228. {0x0108, "Ccircumflex"},
  229. {0x0109, "ccircumflex"},
  230. {0x010A, "Cdotaccent"},
  231. {0x010B, "cdotaccent"},
  232. {0x010C, "Ccaron"},
  233. {0x010D, "ccaron"},
  234. {0x010E, "Dcaron"},
  235. {0x010F, "dcaron"},
  236. {0x0110, "Dcroat"},
  237. {0x0111, "dcroat"},
  238. {0x0112, "Emacron"},
  239. {0x0113, "emacron"},
  240. {0x0114, "Ebreve"},
  241. {0x0115, "ebreve"},
  242. {0x0116, "Edotaccent"},
  243. {0x0117, "edotaccent"},
  244. {0x0118, "Eogonek"},
  245. {0x0119, "eogonek"},
  246. {0x011A, "Ecaron"},
  247. {0x011B, "ecaron"},
  248. {0x011C, "Gcircumflex"},
  249. {0x011D, "gcircumflex"},
  250. {0x011E, "Gbreve"},
  251. {0x011F, "gbreve"},
  252. {0x0120, "Gdotaccent"},
  253. {0x0121, "gdotaccent"},
  254. {0x0122, "Gcommaaccent"},
  255. {0x0123, "gcommaaccent"},
  256. {0x0124, "Hcircumflex"},
  257. {0x0125, "hcircumflex"},
  258. {0x0126, "Hbar"},
  259. {0x0127, "hbar"},
  260. {0x0128, "Itilde"},
  261. {0x0129, "itilde"},
  262. {0x012A, "Imacron"},
  263. {0x012B, "imacron"},
  264. {0x012C, "Ibreve"},
  265. {0x012D, "ibreve"},
  266. {0x012E, "Iogonek"},
  267. {0x012F, "iogonek"},
  268. {0x0130, "Idotaccent"},
  269. {0x0131, "dotlessi"},
  270. {0x0132, "IJ"},
  271. {0x0133, "ij"},
  272. {0x0134, "Jcircumflex"},
  273. {0x0135, "jcircumflex"},
  274. {0x0136, "Kcommaaccent"},
  275. {0x0137, "kcommaaccent"},
  276. {0x0138, "kgreenlandic"},
  277. {0x0139, "Lacute"},
  278. {0x013A, "lacute"},
  279. {0x013B, "Lcommaaccent"},
  280. {0x013C, "lcommaaccent"},
  281. {0x013D, "Lcaron"},
  282. {0x013E, "lcaron"},
  283. {0x013F, "Ldot"},
  284. {0x0140, "ldot"},
  285. {0x0141, "Lslash"},
  286. {0x0142, "lslash"},
  287. {0x0143, "Nacute"},
  288. {0x0144, "nacute"},
  289. {0x0145, "Ncommaaccent"},
  290. {0x0146, "ncommaaccent"},
  291. {0x0147, "Ncaron"},
  292. {0x0148, "ncaron"},
  293. {0x0149, "napostrophe"},
  294. {0x014A, "Eng"},
  295. {0x014B, "eng"},
  296. {0x014C, "Omacron"},
  297. {0x014D, "omacron"},
  298. {0x014E, "Obreve"},
  299. {0x014F, "obreve"},
  300. {0x0150, "Ohungarumlaut"},
  301. {0x0151, "ohungarumlaut"},
  302. {0x0152, "OE"},
  303. {0x0153, "oe"},
  304. {0x0154, "Racute"},
  305. {0x0155, "racute"},
  306. {0x0156, "Rcommaaccent"},
  307. {0x0157, "rcommaaccent"},
  308. {0x0158, "Rcaron"},
  309. {0x0159, "rcaron"},
  310. {0x015A, "Sacute"},
  311. {0x015B, "sacute"},
  312. {0x015C, "Scircumflex"},
  313. {0x015D, "scircumflex"},
  314. {0x015E, "Scedilla"},
  315. {0x015F, "scedilla"},
  316. {0x0160, "Scaron"},
  317. {0x0161, "scaron"},
  318. {0x0162, "Tcommaaccent"},
  319. {0x0163, "tcommaaccent"},
  320. {0x0164, "Tcaron"},
  321. {0x0165, "tcaron"},
  322. {0x0166, "Tbar"},
  323. {0x0167, "tbar"},
  324. {0x0168, "Utilde"},
  325. {0x0169, "utilde"},
  326. {0x016A, "Umacron"},
  327. {0x016B, "umacron"},
  328. {0x016C, "Ubreve"},
  329. {0x016D, "ubreve"},
  330. {0x016E, "Uring"},
  331. {0x016F, "uring"},
  332. {0x0170, "Uhungarumlaut"},
  333. {0x0171, "uhungarumlaut"},
  334. {0x0172, "Uogonek"},
  335. {0x0173, "uogonek"},
  336. {0x0174, "Wcircumflex"},
  337. {0x0175, "wcircumflex"},
  338. {0x0176, "Ycircumflex"},
  339. {0x0177, "ycircumflex"},
  340. {0x0178, "Ydieresis"},
  341. {0x0179, "Zacute"},
  342. {0x017A, "zacute"},
  343. {0x017B, "Zdotaccent"},
  344. {0x017C, "zdotaccent"},
  345. {0x017D, "Zcaron"},
  346. {0x017E, "zcaron"},
  347. {0x017F, "longs"},
  348. {0x0192, "florin"},
  349. {0x01A0, "Ohorn"},
  350. {0x01A1, "ohorn"},
  351. {0x01AF, "Uhorn"},
  352. {0x01B0, "uhorn"},
  353. {0x01E6, "Gcaron"},
  354. {0x01E7, "gcaron"},
  355. {0x01FA, "Aringacute"},
  356. {0x01FB, "aringacute"},
  357. {0x01FC, "AEacute"},
  358. {0x01FD, "aeacute"},
  359. {0x01FE, "Oslashacute"},
  360. {0x01FF, "oslashacute"},
  361. {0x0218, "Scommaaccent"},
  362. {0x0219, "scommaaccent"},
  363. {0x021A, "Tcommaaccent"},
  364. {0x021B, "tcommaaccent"},
  365. {0x02BC, "afii57929"},
  366. {0x02BD, "afii64937"},
  367. {0x02C6, "circumflex"},
  368. {0x02C7, "caron"},
  369. {0x02C9, "macron"},
  370. {0x02D8, "breve"},
  371. {0x02D9, "dotaccent"},
  372. {0x02DA, "ring"},
  373. {0x02DB, "ogonek"},
  374. {0x02DC, "tilde"},
  375. {0x02DD, "hungarumlaut"},
  376. {0x0300, "gravecomb"},
  377. {0x0301, "acutecomb"},
  378. {0x0303, "tildecomb"},
  379. {0x0309, "hookabovecomb"},
  380. {0x0323, "dotbelowcomb"},
  381. {0x0384, "tonos"},
  382. {0x0385, "dieresistonos"},
  383. {0x0386, "Alphatonos"},
  384. {0x0387, "anoteleia"},
  385. {0x0388, "Epsilontonos"},
  386. {0x0389, "Etatonos"},
  387. {0x038A, "Iotatonos"},
  388. {0x038C, "Omicrontonos"},
  389. {0x038E, "Upsilontonos"},
  390. {0x038F, "Omegatonos"},
  391. {0x0390, "iotadieresistonos"},
  392. {0x0391, "Alpha"},
  393. {0x0392, "Beta"},
  394. {0x0393, "Gamma"},
  395. {0x0394, "Delta"},
  396. {0x0395, "Epsilon"},
  397. {0x0396, "Zeta"},
  398. {0x0397, "Eta"},
  399. {0x0398, "Theta"},
  400. {0x0399, "Iota"},
  401. {0x039A, "Kappa"},
  402. {0x039B, "Lambda"},
  403. {0x039C, "Mu"},
  404. {0x039D, "Nu"},
  405. {0x039E, "Xi"},
  406. {0x039F, "Omicron"},
  407. {0x03A0, "Pi"},
  408. {0x03A1, "Rho"},
  409. {0x03A3, "Sigma"},
  410. {0x03A4, "Tau"},
  411. {0x03A5, "Upsilon"},
  412. {0x03A6, "Phi"},
  413. {0x03A7, "Chi"},
  414. {0x03A8, "Psi"},
  415. {0x03A9, "Omega"},
  416. {0x03AA, "Iotadieresis"},
  417. {0x03AB, "Upsilondieresis"},
  418. {0x03AC, "alphatonos"},
  419. {0x03AD, "epsilontonos"},
  420. {0x03AE, "etatonos"},
  421. {0x03AF, "iotatonos"},
  422. {0x03B0, "upsilondieresistonos"},
  423. {0x03B1, "alpha"},
  424. {0x03B2, "beta"},
  425. {0x03B3, "gamma"},
  426. {0x03B4, "delta"},
  427. {0x03B5, "epsilon"},
  428. {0x03B6, "zeta"},
  429. {0x03B7, "eta"},
  430. {0x03B8, "theta"},
  431. {0x03B9, "iota"},
  432. {0x03BA, "kappa"},
  433. {0x03BB, "lambda"},
  434. {0x03BC, "mu"},
  435. {0x03BD, "nu"},
  436. {0x03BE, "xi"},
  437. {0x03BF, "omicron"},
  438. {0x03C0, "pi"},
  439. {0x03C1, "rho"},
  440. {0x03C2, "sigma1"},
  441. {0x03C3, "sigma"},
  442. {0x03C4, "tau"},
  443. {0x03C5, "upsilon"},
  444. {0x03C6, "phi"},
  445. {0x03C7, "chi"},
  446. {0x03C8, "psi"},
  447. {0x03C9, "omega"},
  448. {0x03CA, "iotadieresis"},
  449. {0x03CB, "upsilondieresis"},
  450. {0x03CC, "omicrontonos"},
  451. {0x03CD, "upsilontonos"},
  452. {0x03CE, "omegatonos"},
  453. {0x03D1, "theta1"},
  454. {0x03D2, "Upsilon1"},
  455. {0x03D5, "phi1"},
  456. {0x03D6, "omega1"},
  457. {0x0401, "afii10023"},
  458. {0x0402, "afii10051"},
  459. {0x0403, "afii10052"},
  460. {0x0404, "afii10053"},
  461. {0x0405, "afii10054"},
  462. {0x0406, "afii10055"},
  463. {0x0407, "afii10056"},
  464. {0x0408, "afii10057"},
  465. {0x0409, "afii10058"},
  466. {0x040A, "afii10059"},
  467. {0x040B, "afii10060"},
  468. {0x040C, "afii10061"},
  469. {0x040E, "afii10062"},
  470. {0x040F, "afii10145"},
  471. {0x0410, "afii10017"},
  472. {0x0411, "afii10018"},
  473. {0x0412, "afii10019"},
  474. {0x0413, "afii10020"},
  475. {0x0414, "afii10021"},
  476. {0x0415, "afii10022"},
  477. {0x0416, "afii10024"},
  478. {0x0417, "afii10025"},
  479. {0x0418, "afii10026"},
  480. {0x0419, "afii10027"},
  481. {0x041A, "afii10028"},
  482. {0x041B, "afii10029"},
  483. {0x041C, "afii10030"},
  484. {0x041D, "afii10031"},
  485. {0x041E, "afii10032"},
  486. {0x041F, "afii10033"},
  487. {0x0420, "afii10034"},
  488. {0x0421, "afii10035"},
  489. {0x0422, "afii10036"},
  490. {0x0423, "afii10037"},
  491. {0x0424, "afii10038"},
  492. {0x0425, "afii10039"},
  493. {0x0426, "afii10040"},
  494. {0x0427, "afii10041"},
  495. {0x0428, "afii10042"},
  496. {0x0429, "afii10043"},
  497. {0x042A, "afii10044"},
  498. {0x042B, "afii10045"},
  499. {0x042C, "afii10046"},
  500. {0x042D, "afii10047"},
  501. {0x042E, "afii10048"},
  502. {0x042F, "afii10049"},
  503. {0x0430, "afii10065"},
  504. {0x0431, "afii10066"},
  505. {0x0432, "afii10067"},
  506. {0x0433, "afii10068"},
  507. {0x0434, "afii10069"},
  508. {0x0435, "afii10070"},
  509. {0x0436, "afii10072"},
  510. {0x0437, "afii10073"},
  511. {0x0438, "afii10074"},
  512. {0x0439, "afii10075"},
  513. {0x043A, "afii10076"},
  514. {0x043B, "afii10077"},
  515. {0x043C, "afii10078"},
  516. {0x043D, "afii10079"},
  517. {0x043E, "afii10080"},
  518. {0x043F, "afii10081"},
  519. {0x0440, "afii10082"},
  520. {0x0441, "afii10083"},
  521. {0x0442, "afii10084"},
  522. {0x0443, "afii10085"},
  523. {0x0444, "afii10086"},
  524. {0x0445, "afii10087"},
  525. {0x0446, "afii10088"},
  526. {0x0447, "afii10089"},
  527. {0x0448, "afii10090"},
  528. {0x0449, "afii10091"},
  529. {0x044A, "afii10092"},
  530. {0x044B, "afii10093"},
  531. {0x044C, "afii10094"},
  532. {0x044D, "afii10095"},
  533. {0x044E, "afii10096"},
  534. {0x044F, "afii10097"},
  535. {0x0451, "afii10071"},
  536. {0x0452, "afii10099"},
  537. {0x0453, "afii10100"},
  538. {0x0454, "afii10101"},
  539. {0x0455, "afii10102"},
  540. {0x0456, "afii10103"},
  541. {0x0457, "afii10104"},
  542. {0x0458, "afii10105"},
  543. {0x0459, "afii10106"},
  544. {0x045A, "afii10107"},
  545. {0x045B, "afii10108"},
  546. {0x045C, "afii10109"},
  547. {0x045E, "afii10110"},
  548. {0x045F, "afii10193"},
  549. {0x0462, "afii10146"},
  550. {0x0463, "afii10194"},
  551. {0x0472, "afii10147"},
  552. {0x0473, "afii10195"},
  553. {0x0474, "afii10148"},
  554. {0x0475, "afii10196"},
  555. {0x0490, "afii10050"},
  556. {0x0491, "afii10098"},
  557. {0x04D9, "afii10846"},
  558. {0x05B0, "afii57799"},
  559. {0x05B1, "afii57801"},
  560. {0x05B2, "afii57800"},
  561. {0x05B3, "afii57802"},
  562. {0x05B4, "afii57793"},
  563. {0x05B5, "afii57794"},
  564. {0x05B6, "afii57795"},
  565. {0x05B7, "afii57798"},
  566. {0x05B8, "afii57797"},
  567. {0x05B9, "afii57806"},
  568. {0x05BB, "afii57796"},
  569. {0x05BC, "afii57807"},
  570. {0x05BD, "afii57839"},
  571. {0x05BE, "afii57645"},
  572. {0x05BF, "afii57841"},
  573. {0x05C0, "afii57842"},
  574. {0x05C1, "afii57804"},
  575. {0x05C2, "afii57803"},
  576. {0x05C3, "afii57658"},
  577. {0x05D0, "afii57664"},
  578. {0x05D1, "afii57665"},
  579. {0x05D2, "afii57666"},
  580. {0x05D3, "afii57667"},
  581. {0x05D4, "afii57668"},
  582. {0x05D5, "afii57669"},
  583. {0x05D6, "afii57670"},
  584. {0x05D7, "afii57671"},
  585. {0x05D8, "afii57672"},
  586. {0x05D9, "afii57673"},
  587. {0x05DA, "afii57674"},
  588. {0x05DB, "afii57675"},
  589. {0x05DC, "afii57676"},
  590. {0x05DD, "afii57677"},
  591. {0x05DE, "afii57678"},
  592. {0x05DF, "afii57679"},
  593. {0x05E0, "afii57680"},
  594. {0x05E1, "afii57681"},
  595. {0x05E2, "afii57682"},
  596. {0x05E3, "afii57683"},
  597. {0x05E4, "afii57684"},
  598. {0x05E5, "afii57685"},
  599. {0x05E6, "afii57686"},
  600. {0x05E7, "afii57687"},
  601. {0x05E8, "afii57688"},
  602. {0x05E9, "afii57689"},
  603. {0x05EA, "afii57690"},
  604. {0x05F0, "afii57716"},
  605. {0x05F1, "afii57717"},
  606. {0x05F2, "afii57718"},
  607. {0x060C, "afii57388"},
  608. {0x061B, "afii57403"},
  609. {0x061F, "afii57407"},
  610. {0x0621, "afii57409"},
  611. {0x0622, "afii57410"},
  612. {0x0623, "afii57411"},
  613. {0x0624, "afii57412"},
  614. {0x0625, "afii57413"},
  615. {0x0626, "afii57414"},
  616. {0x0627, "afii57415"},
  617. {0x0628, "afii57416"},
  618. {0x0629, "afii57417"},
  619. {0x062A, "afii57418"},
  620. {0x062B, "afii57419"},
  621. {0x062C, "afii57420"},
  622. {0x062D, "afii57421"},
  623. {0x062E, "afii57422"},
  624. {0x062F, "afii57423"},
  625. {0x0630, "afii57424"},
  626. {0x0631, "afii57425"},
  627. {0x0632, "afii57426"},
  628. {0x0633, "afii57427"},
  629. {0x0634, "afii57428"},
  630. {0x0635, "afii57429"},
  631. {0x0636, "afii57430"},
  632. {0x0637, "afii57431"},
  633. {0x0638, "afii57432"},
  634. {0x0639, "afii57433"},
  635. {0x063A, "afii57434"},
  636. {0x0640, "afii57440"},
  637. {0x0641, "afii57441"},
  638. {0x0642, "afii57442"},
  639. {0x0643, "afii57443"},
  640. {0x0644, "afii57444"},
  641. {0x0645, "afii57445"},
  642. {0x0646, "afii57446"},
  643. {0x0647, "afii57470"},
  644. {0x0648, "afii57448"},
  645. {0x0649, "afii57449"},
  646. {0x064A, "afii57450"},
  647. {0x064B, "afii57451"},
  648. {0x064C, "afii57452"},
  649. {0x064D, "afii57453"},
  650. {0x064E, "afii57454"},
  651. {0x064F, "afii57455"},
  652. {0x0650, "afii57456"},
  653. {0x0651, "afii57457"},
  654. {0x0652, "afii57458"},
  655. {0x0660, "afii57392"},
  656. {0x0661, "afii57393"},
  657. {0x0662, "afii57394"},
  658. {0x0663, "afii57395"},
  659. {0x0664, "afii57396"},
  660. {0x0665, "afii57397"},
  661. {0x0666, "afii57398"},
  662. {0x0667, "afii57399"},
  663. {0x0668, "afii57400"},
  664. {0x0669, "afii57401"},
  665. {0x066A, "afii57381"},
  666. {0x066D, "afii63167"},
  667. {0x0679, "afii57511"},
  668. {0x067E, "afii57506"},
  669. {0x0686, "afii57507"},
  670. {0x0688, "afii57512"},
  671. {0x0691, "afii57513"},
  672. {0x0698, "afii57508"},
  673. {0x06A4, "afii57505"},
  674. {0x06AF, "afii57509"},
  675. {0x06BA, "afii57514"},
  676. {0x06D2, "afii57519"},
  677. {0x06D5, "afii57534"},
  678. {0x1E80, "Wgrave"},
  679. {0x1E81, "wgrave"},
  680. {0x1E82, "Wacute"},
  681. {0x1E83, "wacute"},
  682. {0x1E84, "Wdieresis"},
  683. {0x1E85, "wdieresis"},
  684. {0x1EF2, "Ygrave"},
  685. {0x1EF3, "ygrave"},
  686. {0x200C, "afii61664"},
  687. {0x200D, "afii301"},
  688. {0x200E, "afii299"},
  689. {0x200F, "afii300"},
  690. {0x2012, "figuredash"},
  691. {0x2013, "endash"},
  692. {0x2014, "emdash"},
  693. {0x2015, "afii00208"},
  694. {0x2017, "underscoredbl"},
  695. {0x2018, "quoteleft"},
  696. {0x2019, "quoteright"},
  697. {0x201A, "quotesinglbase"},
  698. {0x201B, "quotereversed"},
  699. {0x201C, "quotedblleft"},
  700. {0x201D, "quotedblright"},
  701. {0x201E, "quotedblbase"},
  702. {0x2020, "dagger"},
  703. {0x2021, "daggerdbl"},
  704. {0x2022, "bullet"},
  705. {0x2024, "onedotenleader"},
  706. {0x2025, "twodotenleader"},
  707. {0x2026, "ellipsis"},
  708. {0x202C, "afii61573"},
  709. {0x202D, "afii61574"},
  710. {0x202E, "afii61575"},
  711. {0x2030, "perthousand"},
  712. {0x2032, "minute"},
  713. {0x2033, "second"},
  714. {0x2039, "guilsinglleft"},
  715. {0x203A, "guilsinglright"},
  716. {0x203C, "exclamdbl"},
  717. {0x2044, "fraction"},
  718. {0x2070, "zerosuperior"},
  719. {0x2074, "foursuperior"},
  720. {0x2075, "fivesuperior"},
  721. {0x2076, "sixsuperior"},
  722. {0x2077, "sevensuperior"},
  723. {0x2078, "eightsuperior"},
  724. {0x2079, "ninesuperior"},
  725. {0x207D, "parenleftsuperior"},
  726. {0x207E, "parenrightsuperior"},
  727. {0x207F, "nsuperior"},
  728. {0x2080, "zeroinferior"},
  729. {0x2081, "oneinferior"},
  730. {0x2082, "twoinferior"},
  731. {0x2083, "threeinferior"},
  732. {0x2084, "fourinferior"},
  733. {0x2085, "fiveinferior"},
  734. {0x2086, "sixinferior"},
  735. {0x2087, "seveninferior"},
  736. {0x2088, "eightinferior"},
  737. {0x2089, "nineinferior"},
  738. {0x208D, "parenleftinferior"},
  739. {0x208E, "parenrightinferior"},
  740. {0x20A1, "colonmonetary"},
  741. {0x20A3, "franc"},
  742. {0x20A4, "lira"},
  743. {0x20A7, "peseta"},
  744. {0x20AA, "afii57636"},
  745. {0x20AB, "dong"},
  746. {0x20AC, "Euro"},
  747. {0x2105, "afii61248"},
  748. {0x2111, "Ifraktur"},
  749. {0x2113, "afii61289"},
  750. {0x2116, "afii61352"},
  751. {0x2118, "weierstrass"},
  752. {0x211C, "Rfraktur"},
  753. {0x211E, "prescription"},
  754. {0x2122, "trademark"},
  755. {0x2126, "Omega"},
  756. {0x212E, "estimated"},
  757. {0x2135, "aleph"},
  758. {0x2153, "onethird"},
  759. {0x2154, "twothirds"},
  760. {0x215B, "oneeighth"},
  761. {0x215C, "threeeighths"},
  762. {0x215D, "fiveeighths"},
  763. {0x215E, "seveneighths"},
  764. {0x2190, "arrowleft"},
  765. {0x2191, "arrowup"},
  766. {0x2192, "arrowright"},
  767. {0x2193, "arrowdown"},
  768. {0x2194, "arrowboth"},
  769. {0x2195, "arrowupdn"},
  770. {0x21A8, "arrowupdnbse"},
  771. {0x21B5, "carriagereturn"},
  772. {0x21D0, "arrowdblleft"},
  773. {0x21D1, "arrowdblup"},
  774. {0x21D2, "arrowdblright"},
  775. {0x21D3, "arrowdbldown"},
  776. {0x21D4, "arrowdblboth"},
  777. {0x2200, "universal"},
  778. {0x2202, "partialdiff"},
  779. {0x2203, "existential"},
  780. {0x2205, "emptyset"},
  781. {0x2206, "Delta"},
  782. {0x2207, "gradient"},
  783. {0x2208, "element"},
  784. {0x2209, "notelement"},
  785. {0x220B, "suchthat"},
  786. {0x220F, "product"},
  787. {0x2211, "summation"},
  788. {0x2212, "minus"},
  789. {0x2215, "fraction"},
  790. {0x2217, "asteriskmath"},
  791. {0x2219, "periodcentered"},
  792. {0x221A, "radical"},
  793. {0x221D, "proportional"},
  794. {0x221E, "infinity"},
  795. {0x221F, "orthogonal"},
  796. {0x2220, "angle"},
  797. {0x2227, "logicaland"},
  798. {0x2228, "logicalor"},
  799. {0x2229, "intersection"},
  800. {0x222A, "union"},
  801. {0x222B, "integral"},
  802. {0x2234, "therefore"},
  803. {0x223C, "similar"},
  804. {0x2245, "congruent"},
  805. {0x2248, "approxequal"},
  806. {0x2260, "notequal"},
  807. {0x2261, "equivalence"},
  808. {0x2264, "lessequal"},
  809. {0x2265, "greaterequal"},
  810. {0x2282, "propersubset"},
  811. {0x2283, "propersuperset"},
  812. {0x2284, "notsubset"},
  813. {0x2286, "reflexsubset"},
  814. {0x2287, "reflexsuperset"},
  815. {0x2295, "circleplus"},
  816. {0x2297, "circlemultiply"},
  817. {0x22A5, "perpendicular"},
  818. {0x22C5, "dotmath"},
  819. {0x2302, "house"},
  820. {0x2310, "revlogicalnot"},
  821. {0x2320, "integraltp"},
  822. {0x2321, "integralbt"},
  823. {0x2329, "angleleft"},
  824. {0x232A, "angleright"},
  825. {0x2500, "SF100000"},
  826. {0x2502, "SF110000"},
  827. {0x250C, "SF010000"},
  828. {0x2510, "SF030000"},
  829. {0x2514, "SF020000"},
  830. {0x2518, "SF040000"},
  831. {0x251C, "SF080000"},
  832. {0x2524, "SF090000"},
  833. {0x252C, "SF060000"},
  834. {0x2534, "SF070000"},
  835. {0x253C, "SF050000"},
  836. {0x2550, "SF430000"},
  837. {0x2551, "SF240000"},
  838. {0x2552, "SF510000"},
  839. {0x2553, "SF520000"},
  840. {0x2554, "SF390000"},
  841. {0x2555, "SF220000"},
  842. {0x2556, "SF210000"},
  843. {0x2557, "SF250000"},
  844. {0x2558, "SF500000"},
  845. {0x2559, "SF490000"},
  846. {0x255A, "SF380000"},
  847. {0x255B, "SF280000"},
  848. {0x255C, "SF270000"},
  849. {0x255D, "SF260000"},
  850. {0x255E, "SF360000"},
  851. {0x255F, "SF370000"},
  852. {0x2560, "SF420000"},
  853. {0x2561, "SF190000"},
  854. {0x2562, "SF200000"},
  855. {0x2563, "SF230000"},
  856. {0x2564, "SF470000"},
  857. {0x2565, "SF480000"},
  858. {0x2566, "SF410000"},
  859. {0x2567, "SF450000"},
  860. {0x2568, "SF460000"},
  861. {0x2569, "SF400000"},
  862. {0x256A, "SF540000"},
  863. {0x256B, "SF530000"},
  864. {0x256C, "SF440000"},
  865. {0x2580, "upblock"},
  866. {0x2584, "dnblock"},
  867. {0x2588, "block"},
  868. {0x258C, "lfblock"},
  869. {0x2590, "rtblock"},
  870. {0x2591, "ltshade"},
  871. {0x2592, "shade"},
  872. {0x2593, "dkshade"},
  873. {0x25A0, "filledbox"},
  874. {0x25A1, "H22073"},
  875. {0x25AA, "H18543"},
  876. {0x25AB, "H18551"},
  877. {0x25AC, "filledrect"},
  878. {0x25B2, "triagup"},
  879. {0x25BA, "triagrt"},
  880. {0x25BC, "triagdn"},
  881. {0x25C4, "triaglf"},
  882. {0x25CA, "lozenge"},
  883. {0x25CB, "circle"},
  884. {0x25CF, "H18533"},
  885. {0x25D8, "invbullet"},
  886. {0x25D9, "invcircle"},
  887. {0x25E6, "openbullet"},
  888. {0x263A, "smileface"},
  889. {0x263B, "invsmileface"},
  890. {0x263C, "sun"},
  891. {0x2640, "female"},
  892. {0x2642, "male"},
  893. {0x2660, "spade"},
  894. {0x2663, "club"},
  895. {0x2665, "heart"},
  896. {0x2666, "diamond"},
  897. {0x266A, "musicalnote"},
  898. {0x266B, "musicalnotedbl"},
  899. {0xF6BE, "dotlessj"},
  900. {0xF6BF, "LL"},
  901. {0xF6C0, "ll"},
  902. {0xF6C1, "Scedilla"},
  903. {0xF6C2, "scedilla"},
  904. {0xF6C3, "commaaccent"},
  905. {0xF6C4, "afii10063"},
  906. {0xF6C5, "afii10064"},
  907. {0xF6C6, "afii10192"},
  908. {0xF6C7, "afii10831"},
  909. {0xF6C8, "afii10832"},
  910. {0xF6C9, "Acute"},
  911. {0xF6CA, "Caron"},
  912. {0xF6CB, "Dieresis"},
  913. {0xF6CC, "DieresisAcute"},
  914. {0xF6CD, "DieresisGrave"},
  915. {0xF6CE, "Grave"},
  916. {0xF6CF, "Hungarumlaut"},
  917. {0xF6D0, "Macron"},
  918. {0xF6D1, "cyrBreve"},
  919. {0xF6D2, "cyrFlex"},
  920. {0xF6D3, "dblGrave"},
  921. {0xF6D4, "cyrbreve"},
  922. {0xF6D5, "cyrflex"},
  923. {0xF6D6, "dblgrave"},
  924. {0xF6D7, "dieresisacute"},
  925. {0xF6D8, "dieresisgrave"},
  926. {0xF6D9, "copyrightserif"},
  927. {0xF6DA, "registerserif"},
  928. {0xF6DB, "trademarkserif"},
  929. {0xF6DC, "onefitted"},
  930. {0xF6DD, "rupiah"},
  931. {0xF6DE, "threequartersemdash"},
  932. {0xF6DF, "centinferior"},
  933. {0xF6E0, "centsuperior"},
  934. {0xF6E1, "commainferior"},
  935. {0xF6E2, "commasuperior"},
  936. {0xF6E3, "dollarinferior"},
  937. {0xF6E4, "dollarsuperior"},
  938. {0xF6E5, "hypheninferior"},
  939. {0xF6E6, "hyphensuperior"},
  940. {0xF6E7, "periodinferior"},
  941. {0xF6E8, "periodsuperior"},
  942. {0xF6E9, "asuperior"},
  943. {0xF6EA, "bsuperior"},
  944. {0xF6EB, "dsuperior"},
  945. {0xF6EC, "esuperior"},
  946. {0xF6ED, "isuperior"},
  947. {0xF6EE, "lsuperior"},
  948. {0xF6EF, "msuperior"},
  949. {0xF6F0, "osuperior"},
  950. {0xF6F1, "rsuperior"},
  951. {0xF6F2, "ssuperior"},
  952. {0xF6F3, "tsuperior"},
  953. {0xF6F4, "Brevesmall"},
  954. {0xF6F5, "Caronsmall"},
  955. {0xF6F6, "Circumflexsmall"},
  956. {0xF6F7, "Dotaccentsmall"},
  957. {0xF6F8, "Hungarumlautsmall"},
  958. {0xF6F9, "Lslashsmall"},
  959. {0xF6FA, "OEsmall"},
  960. {0xF6FB, "Ogoneksmall"},
  961. {0xF6FC, "Ringsmall"},
  962. {0xF6FD, "Scaronsmall"},
  963. {0xF6FE, "Tildesmall"},
  964. {0xF6FF, "Zcaronsmall"},
  965. {0xF721, "exclamsmall"},
  966. {0xF724, "dollaroldstyle"},
  967. {0xF726, "ampersandsmall"},
  968. {0xF730, "zerooldstyle"},
  969. {0xF731, "oneoldstyle"},
  970. {0xF732, "twooldstyle"},
  971. {0xF733, "threeoldstyle"},
  972. {0xF734, "fouroldstyle"},
  973. {0xF735, "fiveoldstyle"},
  974. {0xF736, "sixoldstyle"},
  975. {0xF737, "sevenoldstyle"},
  976. {0xF738, "eightoldstyle"},
  977. {0xF739, "nineoldstyle"},
  978. {0xF73F, "questionsmall"},
  979. {0xF760, "Gravesmall"},
  980. {0xF761, "Asmall"},
  981. {0xF762, "Bsmall"},
  982. {0xF763, "Csmall"},
  983. {0xF764, "Dsmall"},
  984. {0xF765, "Esmall"},
  985. {0xF766, "Fsmall"},
  986. {0xF767, "Gsmall"},
  987. {0xF768, "Hsmall"},
  988. {0xF769, "Ismall"},
  989. {0xF76A, "Jsmall"},
  990. {0xF76B, "Ksmall"},
  991. {0xF76C, "Lsmall"},
  992. {0xF76D, "Msmall"},
  993. {0xF76E, "Nsmall"},
  994. {0xF76F, "Osmall"},
  995. {0xF770, "Psmall"},
  996. {0xF771, "Qsmall"},
  997. {0xF772, "Rsmall"},
  998. {0xF773, "Ssmall"},
  999. {0xF774, "Tsmall"},
  1000. {0xF775, "Usmall"},
  1001. {0xF776, "Vsmall"},
  1002. {0xF777, "Wsmall"},
  1003. {0xF778, "Xsmall"},
  1004. {0xF779, "Ysmall"},
  1005. {0xF77A, "Zsmall"},
  1006. {0xF7A1, "exclamdownsmall"},
  1007. {0xF7A2, "centoldstyle"},
  1008. {0xF7A8, "Dieresissmall"},
  1009. {0xF7AF, "Macronsmall"},
  1010. {0xF7B4, "Acutesmall"},
  1011. {0xF7B8, "Cedillasmall"},
  1012. {0xF7BF, "questiondownsmall"},
  1013. {0xF7E0, "Agravesmall"},
  1014. {0xF7E1, "Aacutesmall"},
  1015. {0xF7E2, "Acircumflexsmall"},
  1016. {0xF7E3, "Atildesmall"},
  1017. {0xF7E4, "Adieresissmall"},
  1018. {0xF7E5, "Aringsmall"},
  1019. {0xF7E6, "AEsmall"},
  1020. {0xF7E7, "Ccedillasmall"},
  1021. {0xF7E8, "Egravesmall"},
  1022. {0xF7E9, "Eacutesmall"},
  1023. {0xF7EA, "Ecircumflexsmall"},
  1024. {0xF7EB, "Edieresissmall"},
  1025. {0xF7EC, "Igravesmall"},
  1026. {0xF7ED, "Iacutesmall"},
  1027. {0xF7EE, "Icircumflexsmall"},
  1028. {0xF7EF, "Idieresissmall"},
  1029. {0xF7F0, "Ethsmall"},
  1030. {0xF7F1, "Ntildesmall"},
  1031. {0xF7F2, "Ogravesmall"},
  1032. {0xF7F3, "Oacutesmall"},
  1033. {0xF7F4, "Ocircumflexsmall"},
  1034. {0xF7F5, "Otildesmall"},
  1035. {0xF7F6, "Odieresissmall"},
  1036. {0xF7F8, "Oslashsmall"},
  1037. {0xF7F9, "Ugravesmall"},
  1038. {0xF7FA, "Uacutesmall"},
  1039. {0xF7FB, "Ucircumflexsmall"},
  1040. {0xF7FC, "Udieresissmall"},
  1041. {0xF7FD, "Yacutesmall"},
  1042. {0xF7FE, "Thornsmall"},
  1043. {0xF7FF, "Ydieresissmall"},
  1044. {0xF8E5, "radicalex"},
  1045. {0xF8E6, "arrowvertex"},
  1046. {0xF8E7, "arrowhorizex"},
  1047. {0xF8E8, "registersans"},
  1048. {0xF8E9, "copyrightsans"},
  1049. {0xF8EA, "trademarksans"},
  1050. {0xF8EB, "parenlefttp"},
  1051. {0xF8EC, "parenleftex"},
  1052. {0xF8ED, "parenleftbt"},
  1053. {0xF8EE, "bracketlefttp"},
  1054. {0xF8EF, "bracketleftex"},
  1055. {0xF8F0, "bracketleftbt"},
  1056. {0xF8F1, "bracelefttp"},
  1057. {0xF8F2, "braceleftmid"},
  1058. {0xF8F3, "braceleftbt"},
  1059. {0xF8F4, "braceex"},
  1060. {0xF8F5, "integralex"},
  1061. {0xF8F6, "parenrighttp"},
  1062. {0xF8F7, "parenrightex"},
  1063. {0xF8F8, "parenrightbt"},
  1064. {0xF8F9, "bracketrighttp"},
  1065. {0xF8FA, "bracketrightex"},
  1066. {0xF8FB, "bracketrightbt"},
  1067. {0xF8FC, "bracerighttp"},
  1068. {0xF8FD, "bracerightmid"},
  1069. {0xF8FE, "bracerightbt"},
  1070. {0xFB00, "ff"},
  1071. {0xFB01, "fi"},
  1072. {0xFB02, "fl"},
  1073. {0xFB03, "ffi"},
  1074. {0xFB04, "ffl"},
  1075. {0xFB1F, "afii57705"},
  1076. {0xFB2A, "afii57694"},
  1077. {0xFB2B, "afii57695"},
  1078. {0xFB35, "afii57723"},
  1079. {0xFB4B, "afii57700"},
  1080. {0xFFFF, NULL}
  1081. };
  1082. static const HPDF_UNICODE HPDF_UNICODE_MAP_STANDARD[] = {
  1083. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
  1084. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1085. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1086. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1087. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1088. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1089. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1090. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1091. 0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1092. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1093. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1094. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0000,
  1095. 0x0000, 0x0000, 0x0000, 0x0000, 0x00D1, 0x0000, 0x0000, 0x0000,
  1096. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1097. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1098. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1099. 0x0000, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x00A5, 0x0192, 0x00A7,
  1100. 0x00A4, 0x0027, 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02,
  1101. 0x0000, 0x2013, 0x2020, 0x2021, 0x00B7, 0x0000, 0x00B6, 0x2022,
  1102. 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x0000, 0x00BF,
  1103. 0x0000, 0x0060, 0x00B4, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9,
  1104. 0x00A8, 0x0000, 0x02DA, 0x00B8, 0x0000, 0x02DD, 0x02DB, 0x02C7,
  1105. 0x2014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1106. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1107. 0x0000, 0x00C6, 0x0000, 0x00AA, 0x0000, 0x0000, 0x0000, 0x0000,
  1108. 0x0141, 0x00D8, 0x0152, 0x00BA, 0x0000, 0x0000, 0x0000, 0x0000,
  1109. 0x0000, 0x00E6, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, 0x0000,
  1110. 0x0142, 0x00F8, 0x0153, 0x00DF, 0x0000, 0x0000, 0x0000, 0x0000
  1111. };
  1112. static const HPDF_UNICODE HPDF_UNICODE_MAP_WIN_ANSI[] = {
  1113. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1114. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1115. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1116. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1117. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1118. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1119. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1120. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1121. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1122. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1123. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1124. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0000,
  1125. 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1126. 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017D, 0x0000,
  1127. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1128. 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x017E, 0x0178,
  1129. 0x0000, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1130. 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x0000, 0x00AE, 0x00AF,
  1131. 0x02DA, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1132. 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1133. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1134. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1135. 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1136. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
  1137. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1138. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1139. 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1140. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
  1141. };
  1142. static const HPDF_UNICODE HPDF_UNICODE_MAP_MAC_ROMAN[] = {
  1143. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1144. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1145. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1146. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1147. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1148. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1149. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1150. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1151. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1152. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1153. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1154. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0000,
  1155. 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x0000, 0x00D6, 0x00DC, 0x00E1,
  1156. 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
  1157. 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
  1158. 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC,
  1159. 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF,
  1160. 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x0000, 0x00C6, 0x00D8,
  1161. 0x0000, 0x00B1, 0x0000, 0x0000, 0x00A5, 0x00B5, 0x0000, 0x0000,
  1162. 0x0000, 0x0000, 0x0000, 0x00AA, 0x00BA, 0x0000, 0x00E6, 0x00F8,
  1163. 0x00BF, 0x00A1, 0x00AC, 0x0000, 0x0192, 0x0000, 0x0000, 0x00AB,
  1164. 0x00BB, 0x2026, 0x0020, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153,
  1165. 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x0000,
  1166. 0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0xFB01, 0xFB02,
  1167. 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1,
  1168. 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
  1169. 0x0000, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC,
  1170. 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7
  1171. };
  1172. static const HPDF_UNICODE HPDF_UNICODE_MAP_FONT_SPECIFIC[] = {
  1173. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1174. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1175. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1176. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1177. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1178. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1179. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1180. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1181. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1182. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1183. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1184. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1185. 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
  1186. 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
  1187. 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
  1188. 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
  1189. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1190. 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1191. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1192. 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1193. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1194. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1195. 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1196. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
  1197. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1198. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1199. 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1200. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
  1201. };
  1202. #define HPDF_ISO8859_FIRST_CHAR 32
  1203. #define HPDF_ISO8859_LAST_CHAR 255
  1204. /*---------------------------------------------------------------------------*/
  1205. /*------ ISO8859-2 Encoding -------------------------------------------------*/
  1206. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_2[] = {
  1207. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1208. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1209. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1210. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1211. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1212. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1213. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1214. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1215. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1216. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1217. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1218. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1219. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1220. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1221. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1222. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1223. 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7,
  1224. 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B,
  1225. 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7,
  1226. 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C,
  1227. 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
  1228. 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
  1229. 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
  1230. 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
  1231. 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
  1232. 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
  1233. 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
  1234. 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
  1235. };
  1236. /*---------------------------------------------------------------------------*/
  1237. /*------ ISO8859-3 Encoding -------------------------------------------------*/
  1238. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_3[] = {
  1239. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1240. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1241. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1242. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1243. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1244. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1245. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1246. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1247. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1248. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1249. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1250. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1251. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1252. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1253. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1254. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1255. 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0x0000, 0x0124, 0x00A7,
  1256. 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0x0000, 0x017B,
  1257. 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7,
  1258. 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0x0000, 0x017C,
  1259. 0x00C0, 0x00C1, 0x00C2, 0x0000, 0x00C4, 0x010A, 0x0108, 0x00C7,
  1260. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1261. 0x0000, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7,
  1262. 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF,
  1263. 0x00E0, 0x00E1, 0x00E2, 0x0000, 0x00E4, 0x010B, 0x0109, 0x00E7,
  1264. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1265. 0x0000, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7,
  1266. 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9
  1267. };
  1268. /*---------------------------------------------------------------------------*/
  1269. /*------ ISO8859-4 Encoding -------------------------------------------------*/
  1270. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_4[] = {
  1271. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1272. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1273. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1274. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1275. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1276. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1277. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1278. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1279. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1280. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1281. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1282. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1283. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1284. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1285. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1286. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1287. 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7,
  1288. 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF,
  1289. 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7,
  1290. 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B,
  1291. 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E,
  1292. 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A,
  1293. 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1294. 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF,
  1295. 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F,
  1296. 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B,
  1297. 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1298. 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9
  1299. };
  1300. /*---------------------------------------------------------------------------*/
  1301. /*------ ISO8859-5 Encoding -------------------------------------------------*/
  1302. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_5[] = {
  1303. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1304. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1305. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1306. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1307. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1308. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1309. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1310. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1311. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1312. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1313. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1314. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1315. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1316. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1317. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1318. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1319. 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
  1320. 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F,
  1321. 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
  1322. 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
  1323. 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
  1324. 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
  1325. 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
  1326. 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
  1327. 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
  1328. 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
  1329. 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
  1330. 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F
  1331. };
  1332. /*---------------------------------------------------------------------------*/
  1333. /*------ ISO8859-6 Encoding -------------------------------------------------*/
  1334. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_6[] = {
  1335. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1336. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1337. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1338. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1339. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1340. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1341. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1342. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1343. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1344. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1345. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1346. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1347. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1348. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1349. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1350. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1351. 0x00A0, 0x0000, 0x0000, 0x0000, 0x00A4, 0x0000, 0x0000, 0x0000,
  1352. 0x0000, 0x0000, 0x0000, 0x0000, 0x060C, 0x00AD, 0x0000, 0x0000,
  1353. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1354. 0x0000, 0x0000, 0x0000, 0x061B, 0x0000, 0x0000, 0x0000, 0x061F,
  1355. 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
  1356. 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
  1357. 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
  1358. 0x0638, 0x0639, 0x063A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1359. 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
  1360. 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F,
  1361. 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1362. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
  1363. };
  1364. /*---------------------------------------------------------------------------*/
  1365. /*------ ISO8859-7 Encoding -------------------------------------------------*/
  1366. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_7[] = {
  1367. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1368. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1369. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1370. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1371. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1372. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1373. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1374. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1375. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1376. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1377. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1378. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1379. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1380. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1381. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1382. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1383. 0x00A0, 0x2018, 0x2019, 0x00A3, 0x20AC, 0x20AF, 0x00A6, 0x00A7,
  1384. 0x00A8, 0x00A9, 0x037A, 0x00AB, 0x00AC, 0x00AD, 0x0000, 0x2015,
  1385. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7,
  1386. 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
  1387. 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
  1388. 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
  1389. 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
  1390. 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
  1391. 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
  1392. 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
  1393. 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
  1394. 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000
  1395. };
  1396. /*---------------------------------------------------------------------------*/
  1397. /*------ ISO8859-8 Encoding -------------------------------------------------*/
  1398. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_8[] = {
  1399. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1400. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1401. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1402. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1403. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1404. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1405. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1406. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1407. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1408. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1409. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1410. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1411. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1412. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1413. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1414. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1415. 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1416. 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1417. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1418. 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x0000,
  1419. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1420. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1421. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1422. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017,
  1423. 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
  1424. 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
  1425. 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
  1426. 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000,
  1427. };
  1428. /*---------------------------------------------------------------------------*/
  1429. /*------ ISO8859-9 Encoding -------------------------------------------------*/
  1430. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_9[] = {
  1431. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1432. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1433. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1434. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1435. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1436. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1437. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1438. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1439. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1440. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1441. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1442. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1443. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1444. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1445. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1446. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1447. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1448. 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1449. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1450. 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1451. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1452. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1453. 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1454. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF,
  1455. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1456. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1457. 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1458. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF
  1459. };
  1460. /*---------------------------------------------------------------------------*/
  1461. /*------ ISO8859-10 Encoding ------------------------------------------------*/
  1462. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_10[] = {
  1463. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1464. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1465. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1466. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1467. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1468. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1469. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1470. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1471. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1472. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1473. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1474. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1475. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1476. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1477. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1478. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1479. 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7,
  1480. 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A,
  1481. 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7,
  1482. 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B,
  1483. 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E,
  1484. 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF,
  1485. 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168,
  1486. 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
  1487. 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F,
  1488. 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF,
  1489. 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169,
  1490. 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138
  1491. };
  1492. /*---------------------------------------------------------------------------*/
  1493. /*------ ISO8859-11 Encoding ------------------------------------------------*/
  1494. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_11[] = {
  1495. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1496. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1497. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1498. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1499. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1500. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1501. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1502. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1503. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1504. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1505. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1506. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1507. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1508. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1509. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1510. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1511. 0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07,
  1512. 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
  1513. 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
  1514. 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
  1515. 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
  1516. 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
  1517. 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
  1518. 0x0E38, 0x0E39, 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F,
  1519. 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
  1520. 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
  1521. 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
  1522. 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, 0x0000, 0x0000
  1523. };
  1524. /*---------------------------------------------------------------------------*/
  1525. /*------ ISO8859-13 Encoding ------------------------------------------------*/
  1526. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_13[] = {
  1527. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1528. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1529. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1530. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1531. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1532. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1533. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1534. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1535. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1536. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1537. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1538. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1539. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1540. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1541. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1542. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1543. 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7,
  1544. 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6,
  1545. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7,
  1546. 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
  1547. 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
  1548. 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
  1549. 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
  1550. 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
  1551. 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
  1552. 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
  1553. 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
  1554. 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019
  1555. };
  1556. /*---------------------------------------------------------------------------*/
  1557. /*------ ISO8859-14 Encoding ------------------------------------------------*/
  1558. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_14[] = {
  1559. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1560. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1561. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1562. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1563. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1564. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1565. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1566. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1567. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1568. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1569. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1570. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1571. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1572. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1573. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1574. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1575. 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7,
  1576. 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178,
  1577. 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56,
  1578. 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61,
  1579. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1580. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1581. 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A,
  1582. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF,
  1583. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1584. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1585. 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B,
  1586. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF
  1587. };
  1588. /*---------------------------------------------------------------------------*/
  1589. /*------ ISO8859-15 Encoding ------------------------------------------------*/
  1590. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_15[] = {
  1591. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1592. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1593. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1594. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1595. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1596. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1597. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1598. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1599. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1600. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1601. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1602. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1603. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1604. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1605. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1606. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1607. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7,
  1608. 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1609. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7,
  1610. 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF,
  1611. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1612. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1613. 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1614. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
  1615. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1616. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1617. 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1618. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
  1619. };
  1620. /*---------------------------------------------------------------------------*/
  1621. /*------ ISO8859-16 Encoding ------------------------------------------------*/
  1622. static const HPDF_UNICODE HPDF_UNICODE_MAP_ISO8859_16[] = {
  1623. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1624. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1625. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1626. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1627. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1628. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1629. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1630. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1631. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1632. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1633. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1634. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1635. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1636. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1637. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1638. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1639. 0x00A0, 0x0104, 0x0105, 0x0141, 0x20AC, 0x201E, 0x0160, 0x00A7,
  1640. 0x0161, 0x00A9, 0x0218, 0x00AB, 0x0179, 0x00AD, 0x017A, 0x017B,
  1641. 0x00B0, 0x00B1, 0x010C, 0x0142, 0x017D, 0x201D, 0x00B6, 0x00B7,
  1642. 0x017E, 0x010D, 0x0219, 0x00BB, 0x0152, 0x0153, 0x0178, 0x017C,
  1643. 0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0106, 0x00C6, 0x00C7,
  1644. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1645. 0x0110, 0x0143, 0x00D2, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x015A,
  1646. 0x0170, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0118, 0x021A, 0x00DF,
  1647. 0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x0107, 0x00E6, 0x00E7,
  1648. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1649. 0x0111, 0x0144, 0x00F2, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x015B,
  1650. 0x0171, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0119, 0x021B, 0x00FF
  1651. };
  1652. #define HPDF_MSCP_FIRST_CHAR 32
  1653. #define HPDF_MSCP_LAST_CHAR 255
  1654. /*---------------------------------------------------------------------------*/
  1655. /*------ CP1250 Encoding ----------------------------------------------------*/
  1656. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1250[] = {
  1657. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1658. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1659. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1660. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1661. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1662. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1663. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1664. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1665. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1666. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1667. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1668. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1669. 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021,
  1670. 0x0000, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179,
  1671. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1672. 0x0000, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A,
  1673. 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7,
  1674. 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B,
  1675. 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1676. 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C,
  1677. 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
  1678. 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
  1679. 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
  1680. 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
  1681. 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
  1682. 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
  1683. 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
  1684. 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
  1685. };
  1686. /*---------------------------------------------------------------------------*/
  1687. /*------ CP1251 Encoding ----------------------------------------------------*/
  1688. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1251[] = {
  1689. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1690. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1691. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1692. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1693. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1694. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1695. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1696. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1697. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1698. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1699. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1700. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1701. 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
  1702. 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
  1703. 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1704. 0x0000, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
  1705. 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
  1706. 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
  1707. 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
  1708. 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
  1709. 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
  1710. 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
  1711. 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
  1712. 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
  1713. 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
  1714. 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
  1715. 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
  1716. 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
  1717. };
  1718. /*---------------------------------------------------------------------------*/
  1719. /*------ CP1252 Encoding ----------------------------------------------------*/
  1720. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1252[] = {
  1721. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1722. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1723. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1724. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1725. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1726. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1727. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1728. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1729. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1730. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1731. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1732. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1733. 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1734. 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017D, 0x0000,
  1735. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1736. 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x017E, 0x0178,
  1737. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1738. 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1739. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1740. 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1741. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1742. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1743. 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1744. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
  1745. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1746. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1747. 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1748. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
  1749. };
  1750. /*---------------------------------------------------------------------------*/
  1751. /*------ CP1253 Encoding ----------------------------------------------------*/
  1752. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1253[] = {
  1753. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1754. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1755. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1756. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1757. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1758. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1759. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1760. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1761. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1762. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1763. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1764. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1765. 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1766. 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000,
  1767. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1768. 0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000,
  1769. 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1770. 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015,
  1771. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7,
  1772. 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
  1773. 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
  1774. 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
  1775. 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
  1776. 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
  1777. 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
  1778. 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
  1779. 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
  1780. 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000
  1781. };
  1782. /*---------------------------------------------------------------------------*/
  1783. /*------ CP1254 Encoding ----------------------------------------------------*/
  1784. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1254[] = {
  1785. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1786. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1787. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1788. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1789. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1790. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1791. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1792. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1793. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1794. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1795. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1796. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1797. 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1798. 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000,
  1799. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1800. 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178,
  1801. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1802. 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1803. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1804. 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1805. 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1806. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  1807. 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  1808. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF,
  1809. 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1810. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  1811. 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  1812. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF
  1813. };
  1814. /*---------------------------------------------------------------------------*/
  1815. /*------ CP1255 Encoding ----------------------------------------------------*/
  1816. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1255[] = {
  1817. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1818. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1819. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1820. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1821. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1822. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1823. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1824. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1825. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1826. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1827. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1828. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1829. 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1830. 0x02C6, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000,
  1831. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1832. 0x02DC, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000,
  1833. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7,
  1834. 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1835. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1836. 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1837. 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
  1838. 0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
  1839. 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3,
  1840. 0x05F4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  1841. 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
  1842. 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
  1843. 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
  1844. 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000
  1845. };
  1846. /*---------------------------------------------------------------------------*/
  1847. /*------ CP1256 Encoding ----------------------------------------------------*/
  1848. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1256[] = {
  1849. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1850. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1851. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1852. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1853. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1854. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1855. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1856. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1857. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1858. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1859. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1860. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1861. 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1862. 0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
  1863. 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1864. 0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA,
  1865. 0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1866. 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1867. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1868. 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F,
  1869. 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
  1870. 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
  1871. 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7,
  1872. 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643,
  1873. 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7,
  1874. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF,
  1875. 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7,
  1876. 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2
  1877. };
  1878. /*---------------------------------------------------------------------------*/
  1879. /*------ CP1257 Encoding ----------------------------------------------------*/
  1880. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1257[] = {
  1881. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1882. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1883. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1884. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1885. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1886. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1887. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1888. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1889. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1890. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1891. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1892. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1893. 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021,
  1894. 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8,
  1895. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1896. 0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000,
  1897. 0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x0000, 0x00A6, 0x00A7,
  1898. 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6,
  1899. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1900. 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
  1901. 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
  1902. 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
  1903. 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
  1904. 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
  1905. 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
  1906. 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
  1907. 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
  1908. 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9
  1909. };
  1910. /*---------------------------------------------------------------------------*/
  1911. /*------ CP1258 Encoding ----------------------------------------------------*/
  1912. static const HPDF_UNICODE HPDF_UNICODE_MAP_CP1258[] = {
  1913. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1914. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1915. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1916. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1917. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1918. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1919. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1920. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1921. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1922. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1923. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1924. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1925. 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
  1926. 0x02C6, 0x2030, 0x0000, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000,
  1927. 0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
  1928. 0x02DC, 0x2122, 0x0000, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178,
  1929. 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  1930. 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  1931. 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  1932. 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  1933. 0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  1934. 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF,
  1935. 0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7,
  1936. 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF,
  1937. 0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  1938. 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF,
  1939. 0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7,
  1940. 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF
  1941. };
  1942. /*---------------------------------------------------------------------------*/
  1943. /*------ KOI8-R Encoding ----------------------------------------------------*/
  1944. static const HPDF_UNICODE HPDF_UNICODE_MAP_KOI8_R[] = {
  1945. 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  1946. 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
  1947. 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  1948. 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
  1949. 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  1950. 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
  1951. 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  1952. 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
  1953. 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  1954. 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
  1955. 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
  1956. 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
  1957. 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
  1958. 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
  1959. 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,
  1960. 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
  1961. 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
  1962. 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E,
  1963. 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
  1964. 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,
  1965. 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
  1966. 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
  1967. 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
  1968. 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A,
  1969. 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
  1970. 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
  1971. 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
  1972. 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A
  1973. };
  1974. typedef struct _HPDF_BuiltinEncodingData {
  1975. const char *encoding_name;
  1976. HPDF_BaseEncodings base_encoding;
  1977. const HPDF_UNICODE *ovewrride_map;
  1978. } HPDF_BuiltinEncodingData;
  1979. static const HPDF_BuiltinEncodingData HPDF_BUILTIN_ENCODINGS[] = {
  1980. {
  1981. HPDF_ENCODING_FONT_SPECIFIC,
  1982. HPDF_BASE_ENCODING_FONT_SPECIFIC,
  1983. NULL},
  1984. {
  1985. HPDF_ENCODING_STANDARD,
  1986. HPDF_BASE_ENCODING_STANDARD,
  1987. NULL},
  1988. {
  1989. HPDF_ENCODING_MAC_ROMAN,
  1990. HPDF_BASE_ENCODING_MAC_ROMAN,
  1991. NULL},
  1992. {
  1993. HPDF_ENCODING_WIN_ANSI,
  1994. HPDF_BASE_ENCODING_WIN_ANSI,
  1995. NULL
  1996. },
  1997. {
  1998. HPDF_ENCODING_ISO8859_2,
  1999. HPDF_BASE_ENCODING_WIN_ANSI,
  2000. HPDF_UNICODE_MAP_ISO8859_2
  2001. },
  2002. {
  2003. HPDF_ENCODING_ISO8859_3,
  2004. HPDF_BASE_ENCODING_WIN_ANSI,
  2005. HPDF_UNICODE_MAP_ISO8859_3
  2006. },
  2007. {
  2008. HPDF_ENCODING_ISO8859_4,
  2009. HPDF_BASE_ENCODING_WIN_ANSI,
  2010. HPDF_UNICODE_MAP_ISO8859_4
  2011. },
  2012. {
  2013. HPDF_ENCODING_ISO8859_5,
  2014. HPDF_BASE_ENCODING_WIN_ANSI,
  2015. HPDF_UNICODE_MAP_ISO8859_5
  2016. },
  2017. {
  2018. HPDF_ENCODING_ISO8859_6,
  2019. HPDF_BASE_ENCODING_WIN_ANSI,
  2020. HPDF_UNICODE_MAP_ISO8859_6
  2021. },
  2022. {
  2023. HPDF_ENCODING_ISO8859_7,
  2024. HPDF_BASE_ENCODING_WIN_ANSI,
  2025. HPDF_UNICODE_MAP_ISO8859_7
  2026. },
  2027. {
  2028. HPDF_ENCODING_ISO8859_8,
  2029. HPDF_BASE_ENCODING_WIN_ANSI,
  2030. HPDF_UNICODE_MAP_ISO8859_8
  2031. },
  2032. {
  2033. HPDF_ENCODING_ISO8859_9,
  2034. HPDF_BASE_ENCODING_WIN_ANSI,
  2035. HPDF_UNICODE_MAP_ISO8859_9
  2036. },
  2037. {
  2038. HPDF_ENCODING_ISO8859_10,
  2039. HPDF_BASE_ENCODING_WIN_ANSI,
  2040. HPDF_UNICODE_MAP_ISO8859_10
  2041. },
  2042. {
  2043. HPDF_ENCODING_ISO8859_11,
  2044. HPDF_BASE_ENCODING_WIN_ANSI,
  2045. HPDF_UNICODE_MAP_ISO8859_11
  2046. },
  2047. {
  2048. HPDF_ENCODING_ISO8859_13,
  2049. HPDF_BASE_ENCODING_WIN_ANSI,
  2050. HPDF_UNICODE_MAP_ISO8859_13
  2051. },
  2052. {
  2053. HPDF_ENCODING_ISO8859_14,
  2054. HPDF_BASE_ENCODING_WIN_ANSI,
  2055. HPDF_UNICODE_MAP_ISO8859_14
  2056. },
  2057. {
  2058. HPDF_ENCODING_ISO8859_15,
  2059. HPDF_BASE_ENCODING_WIN_ANSI,
  2060. HPDF_UNICODE_MAP_ISO8859_15
  2061. },
  2062. {
  2063. HPDF_ENCODING_ISO8859_16,
  2064. HPDF_BASE_ENCODING_WIN_ANSI,
  2065. HPDF_UNICODE_MAP_ISO8859_16
  2066. },
  2067. {
  2068. HPDF_ENCODING_CP1250,
  2069. HPDF_BASE_ENCODING_WIN_ANSI,
  2070. HPDF_UNICODE_MAP_CP1250
  2071. },
  2072. {
  2073. HPDF_ENCODING_CP1251,
  2074. HPDF_BASE_ENCODING_WIN_ANSI,
  2075. HPDF_UNICODE_MAP_CP1251
  2076. },
  2077. {
  2078. HPDF_ENCODING_CP1252,
  2079. HPDF_BASE_ENCODING_WIN_ANSI,
  2080. HPDF_UNICODE_MAP_CP1252
  2081. },
  2082. {
  2083. HPDF_ENCODING_CP1253,
  2084. HPDF_BASE_ENCODING_WIN_ANSI,
  2085. HPDF_UNICODE_MAP_CP1253
  2086. },
  2087. {
  2088. HPDF_ENCODING_CP1254,
  2089. HPDF_BASE_ENCODING_WIN_ANSI,
  2090. HPDF_UNICODE_MAP_CP1254
  2091. },
  2092. {
  2093. HPDF_ENCODING_CP1255,
  2094. HPDF_BASE_ENCODING_WIN_ANSI,
  2095. HPDF_UNICODE_MAP_CP1255
  2096. },
  2097. {
  2098. HPDF_ENCODING_CP1256,
  2099. HPDF_BASE_ENCODING_WIN_ANSI,
  2100. HPDF_UNICODE_MAP_CP1256
  2101. },
  2102. {
  2103. HPDF_ENCODING_CP1257,
  2104. HPDF_BASE_ENCODING_WIN_ANSI,
  2105. HPDF_UNICODE_MAP_CP1257
  2106. },
  2107. {
  2108. HPDF_ENCODING_CP1258,
  2109. HPDF_BASE_ENCODING_WIN_ANSI,
  2110. HPDF_UNICODE_MAP_CP1258
  2111. },
  2112. {
  2113. HPDF_ENCODING_KOI8_R,
  2114. HPDF_BASE_ENCODING_WIN_ANSI,
  2115. HPDF_UNICODE_MAP_KOI8_R
  2116. },
  2117. {
  2118. NULL,
  2119. HPDF_BASE_ENCODING_EOF,
  2120. NULL
  2121. }
  2122. };
  2123. /*---------------------------------------------------------------------------*/
  2124. const HPDF_BuiltinEncodingData*
  2125. HPDF_BasicEncoder_FindBuiltinData (const char *encoding_name);
  2126. void
  2127. HPDF_BasicEncoder_CopyMap (HPDF_Encoder encoder,
  2128. const HPDF_UNICODE *map);
  2129. HPDF_STATUS
  2130. HPDF_BasicEncoder_OverrideMap (HPDF_Encoder encoder,
  2131. const HPDF_UNICODE *map);
  2132. /*-- HPDF_Encoder ---------------------------------------*/
  2133. HPDF_Encoder
  2134. HPDF_BasicEncoder_New (HPDF_MMgr mmgr,
  2135. const char *encoding_name)
  2136. {
  2137. HPDF_Encoder encoder;
  2138. HPDF_BasicEncoderAttr encoder_attr;
  2139. const HPDF_BuiltinEncodingData *data;
  2140. char *eptr;
  2141. HPDF_PTRACE((" HPDF_BasicEncoder_New\n"));
  2142. if (mmgr == NULL)
  2143. return NULL;
  2144. data = HPDF_BasicEncoder_FindBuiltinData (encoding_name);
  2145. if (!data->encoding_name) {
  2146. HPDF_SetError (mmgr->error, HPDF_INVALID_ENCODING_NAME, 0);
  2147. return NULL;
  2148. }
  2149. encoder = HPDF_GetMem (mmgr, sizeof(HPDF_Encoder_Rec));
  2150. if (!encoder)
  2151. return NULL;
  2152. HPDF_MemSet (encoder, 0, sizeof(HPDF_Encoder_Rec));
  2153. eptr = encoder->name + HPDF_LIMIT_MAX_NAME_LEN;
  2154. HPDF_StrCpy (encoder->name, data->encoding_name, eptr);
  2155. encoder->mmgr = mmgr;
  2156. encoder->error = mmgr->error;
  2157. encoder->type = HPDF_ENCODER_TYPE_SINGLE_BYTE;
  2158. encoder->to_unicode_fn = HPDF_BasicEncoder_ToUnicode;
  2159. encoder->write_fn = HPDF_BasicEncoder_Write;
  2160. encoder->free_fn = HPDF_BasicEncoder_Free;
  2161. encoder_attr = HPDF_GetMem(mmgr, sizeof(HPDF_BasicEncoderAttr_Rec));
  2162. if (!encoder_attr) {
  2163. HPDF_FreeMem (encoder->mmgr, encoder);
  2164. return NULL;
  2165. }
  2166. encoder->sig_bytes = HPDF_ENCODER_SIG_BYTES;
  2167. encoder->attr = encoder_attr;
  2168. HPDF_MemSet (encoder_attr, 0, sizeof(HPDF_BasicEncoderAttr_Rec));
  2169. encoder_attr->first_char = HPDF_BASIC_ENCODER_FIRST_CHAR;
  2170. encoder_attr->last_char = HPDF_BASIC_ENCODER_LAST_CHAR;
  2171. encoder_attr->has_differences = HPDF_FALSE;
  2172. eptr = encoder_attr->base_encoding + HPDF_LIMIT_MAX_NAME_LEN;
  2173. switch (data->base_encoding) {
  2174. case HPDF_BASE_ENCODING_STANDARD:
  2175. HPDF_StrCpy (encoder_attr->base_encoding,
  2176. HPDF_ENCODING_STANDARD, eptr);
  2177. HPDF_BasicEncoder_CopyMap (encoder, HPDF_UNICODE_MAP_STANDARD);
  2178. break;
  2179. case HPDF_BASE_ENCODING_WIN_ANSI:
  2180. HPDF_StrCpy (encoder_attr->base_encoding,
  2181. HPDF_ENCODING_WIN_ANSI, eptr);
  2182. HPDF_BasicEncoder_CopyMap (encoder, HPDF_UNICODE_MAP_WIN_ANSI);
  2183. break;
  2184. case HPDF_BASE_ENCODING_MAC_ROMAN:
  2185. HPDF_StrCpy (encoder_attr->base_encoding,
  2186. HPDF_ENCODING_MAC_ROMAN, eptr);
  2187. HPDF_BasicEncoder_CopyMap (encoder, HPDF_UNICODE_MAP_MAC_ROMAN);
  2188. break;
  2189. default:
  2190. HPDF_StrCpy (encoder_attr->base_encoding,
  2191. HPDF_ENCODING_FONT_SPECIFIC, eptr);
  2192. HPDF_BasicEncoder_CopyMap (encoder,
  2193. HPDF_UNICODE_MAP_FONT_SPECIFIC);
  2194. }
  2195. if (data->ovewrride_map)
  2196. HPDF_BasicEncoder_OverrideMap (encoder, data->ovewrride_map);
  2197. return encoder;
  2198. }
  2199. const HPDF_BuiltinEncodingData*
  2200. HPDF_BasicEncoder_FindBuiltinData (const char *encoding_name)
  2201. {
  2202. HPDF_UINT i = 0;
  2203. HPDF_PTRACE((" HPDF_BasicEncoder_FindBuiltinData\n"));
  2204. while (HPDF_BUILTIN_ENCODINGS[i].encoding_name) {
  2205. if (HPDF_StrCmp (HPDF_BUILTIN_ENCODINGS[i].encoding_name,
  2206. encoding_name) == 0)
  2207. break;
  2208. i++;
  2209. }
  2210. return &HPDF_BUILTIN_ENCODINGS[i];
  2211. }
  2212. HPDF_UNICODE
  2213. HPDF_BasicEncoder_ToUnicode (HPDF_Encoder encoder,
  2214. HPDF_UINT16 code)
  2215. {
  2216. HPDF_BasicEncoderAttr attr = (HPDF_BasicEncoderAttr)encoder->attr;
  2217. if (code > 255)
  2218. return 0;
  2219. return attr->unicode_map[code];
  2220. }
  2221. HPDF_UNICODE
  2222. HPDF_Encoder_ToUnicode (HPDF_Encoder encoder,
  2223. HPDF_UINT16 code)
  2224. {
  2225. return encoder->to_unicode_fn (encoder, code);
  2226. }
  2227. void
  2228. HPDF_BasicEncoder_CopyMap (HPDF_Encoder encoder,
  2229. const HPDF_UNICODE *map)
  2230. {
  2231. HPDF_UINT i;
  2232. HPDF_UNICODE* dst = ((HPDF_BasicEncoderAttr)encoder->attr)->unicode_map +
  2233. HPDF_BASIC_ENCODER_FIRST_CHAR;
  2234. HPDF_PTRACE((" HPDF_BasicEncoder_CopyMap\n"));
  2235. for (i = 0; i <= HPDF_BASIC_ENCODER_LAST_CHAR -
  2236. HPDF_BASIC_ENCODER_FIRST_CHAR; i++)
  2237. *dst++ = *map++;
  2238. }
  2239. HPDF_STATUS
  2240. HPDF_BasicEncoder_OverrideMap (HPDF_Encoder encoder,
  2241. const HPDF_UNICODE *map)
  2242. {
  2243. HPDF_UINT i;
  2244. HPDF_BasicEncoderAttr data = (HPDF_BasicEncoderAttr)encoder->attr;
  2245. HPDF_UNICODE* dst;
  2246. HPDF_BYTE* flgs;
  2247. HPDF_PTRACE ((" HPDF_BasicEncoder_OverrideMap\n"));
  2248. if (data->has_differences)
  2249. return HPDF_SetError (encoder->error, HPDF_INVALID_OPERATION, 0);
  2250. dst = data->unicode_map + HPDF_BASIC_ENCODER_FIRST_CHAR;
  2251. flgs = data->differences + HPDF_BASIC_ENCODER_FIRST_CHAR;
  2252. for (i = 0; i <= HPDF_BASIC_ENCODER_LAST_CHAR -
  2253. HPDF_BASIC_ENCODER_FIRST_CHAR; i++) {
  2254. if (*map != *dst) {
  2255. *dst = *map;
  2256. *flgs = 1;
  2257. }
  2258. map++;
  2259. dst++;
  2260. flgs++;
  2261. }
  2262. data->has_differences = HPDF_TRUE;
  2263. return HPDF_OK;
  2264. }
  2265. void
  2266. HPDF_Encoder_Free (HPDF_Encoder encoder)
  2267. {
  2268. HPDF_PTRACE ((" HPDF_Encoder_Free\n"));
  2269. if (!encoder)
  2270. return;
  2271. if (encoder->free_fn)
  2272. encoder->free_fn (encoder);
  2273. HPDF_FreeMem (encoder->mmgr, encoder);
  2274. }
  2275. const char*
  2276. HPDF_UnicodeToGryphName (HPDF_UNICODE unicode)
  2277. {
  2278. const HPDF_UnicodeGryphPair* map = HPDF_UNICODE_GRYPH_NAME_MAP;
  2279. HPDF_PTRACE ((" HPDF_UnicodeToGryphName\n"));
  2280. while (map->unicode <= unicode) {
  2281. if (map->unicode == unicode)
  2282. return map->gryph_name;
  2283. map++;
  2284. }
  2285. return HPDF_UNICODE_GRYPH_NAME_MAP[0].gryph_name;
  2286. }
  2287. HPDF_UNICODE
  2288. HPDF_GryphNameToUnicode (const char *gryph_name)
  2289. {
  2290. const HPDF_UnicodeGryphPair* map = HPDF_UNICODE_GRYPH_NAME_MAP;
  2291. HPDF_PTRACE ((" HPDF_GryphNameToUnicode\n"));
  2292. while (map->unicode != 0xFFFF) {
  2293. if (HPDF_StrCmp (gryph_name, map->gryph_name) == 0)
  2294. return map->unicode;
  2295. map++;
  2296. }
  2297. return 0x0000;
  2298. }
  2299. void
  2300. HPDF_BasicEncoder_Free (HPDF_Encoder encoder)
  2301. {
  2302. HPDF_PTRACE ((" HPDF_BasicEncoder_Free\n"));
  2303. HPDF_FreeMem (encoder->mmgr, encoder->attr);
  2304. encoder->attr = NULL;
  2305. }
  2306. HPDF_STATUS
  2307. HPDF_BasicEncoder_Write (HPDF_Encoder encoder,
  2308. HPDF_Stream out)
  2309. {
  2310. HPDF_STATUS ret;
  2311. HPDF_BasicEncoderAttr attr = (HPDF_BasicEncoderAttr)encoder->attr;
  2312. HPDF_PTRACE ((" HPDF_BasicEncoder_Write\n"));
  2313. /* if HPDF_ENCODING_FONT_SPECIFIC is selected, no Encoding object will be "
  2314. * written.
  2315. */
  2316. if (HPDF_StrCmp (attr->base_encoding, HPDF_ENCODING_FONT_SPECIFIC) == 0)
  2317. return HPDF_OK;
  2318. /* if encoder has differences-data, encoding object is written as
  2319. dictionary-object, otherwise it is written as name-object. */
  2320. if (attr->has_differences == HPDF_TRUE) {
  2321. ret = HPDF_Stream_WriteStr (out,
  2322. "/Encoding <<\012"
  2323. "/Type /Encoding\012"
  2324. "/BaseEncoding ");
  2325. if (ret != HPDF_OK)
  2326. return ret;
  2327. } else {
  2328. ret = HPDF_Stream_WriteStr (out, "/Encoding ");
  2329. if (ret != HPDF_OK)
  2330. return ret;
  2331. }
  2332. ret = HPDF_Stream_WriteEscapeName (out, attr->base_encoding);
  2333. if (ret != HPDF_OK)
  2334. return ret;
  2335. ret = HPDF_Stream_WriteStr (out, "\012");
  2336. if (ret != HPDF_OK)
  2337. return ret;
  2338. /* write differences data */
  2339. if (attr->has_differences == HPDF_TRUE) {
  2340. HPDF_INT i;
  2341. ret = HPDF_Stream_WriteStr (out, "/Differences [");
  2342. if (ret != HPDF_OK)
  2343. return ret;
  2344. for (i = attr->first_char; i <= attr->last_char; i++) {
  2345. if (attr->differences[i] == 1) {
  2346. char tmp[HPDF_TEXT_DEFAULT_LEN];
  2347. char* ptmp = tmp;
  2348. const char* char_name =
  2349. HPDF_UnicodeToGryphName (attr->unicode_map[i]);
  2350. ptmp = HPDF_IToA (ptmp, i, tmp + HPDF_TEXT_DEFAULT_LEN - 1);
  2351. *ptmp++ = ' ';
  2352. *ptmp++ = '/';
  2353. ptmp = (char *)HPDF_StrCpy (ptmp, char_name, tmp +
  2354. HPDF_TEXT_DEFAULT_LEN - 1);
  2355. *ptmp++ = ' ';
  2356. *ptmp = 0;
  2357. ret = HPDF_Stream_WriteStr (out, tmp);
  2358. if (ret != HPDF_OK)
  2359. return ret;
  2360. }
  2361. }
  2362. ret = HPDF_Stream_WriteStr (out, "]\012>>\012");
  2363. }
  2364. return ret;
  2365. }
  2366. HPDF_STATUS
  2367. HPDF_Encoder_Validate (HPDF_Encoder encoder)
  2368. {
  2369. HPDF_PTRACE ((" HPDF_Encoder_Validate\n"));
  2370. if (!encoder || encoder->sig_bytes != HPDF_ENCODER_SIG_BYTES)
  2371. return HPDF_FALSE;
  2372. else
  2373. return HPDF_TRUE;
  2374. }
  2375. /* At first, CMAP encoder is create as 'virtual' object.
  2376. * When init_fn is called, cmap-data is loaded and it becomes to be available
  2377. */
  2378. HPDF_Encoder
  2379. HPDF_CMapEncoder_New (HPDF_MMgr mmgr,
  2380. char *name,
  2381. HPDF_Encoder_Init_Func init_fn)
  2382. {
  2383. HPDF_Encoder encoder;
  2384. HPDF_PTRACE ((" HPDF_CMapEncoder_New\n"));
  2385. if (mmgr == NULL)
  2386. return NULL;
  2387. encoder = HPDF_GetMem (mmgr, sizeof(HPDF_Encoder_Rec));
  2388. if (!encoder)
  2389. return NULL;
  2390. HPDF_MemSet (encoder, 0, sizeof(HPDF_Encoder_Rec));
  2391. HPDF_StrCpy (encoder->name, name, encoder->name + HPDF_LIMIT_MAX_NAME_LEN);
  2392. encoder->mmgr = mmgr;
  2393. encoder->error = mmgr->error;
  2394. encoder->type = HPDF_ENCODER_TYPE_UNINITIALIZED;
  2395. encoder->byte_type_fn = HPDF_CMapEncoder_ByteType;
  2396. encoder->to_unicode_fn = HPDF_CMapEncoder_ToUnicode;
  2397. encoder->write_fn = HPDF_CMapEncoder_Write;
  2398. encoder->free_fn = HPDF_CMapEncoder_Free;
  2399. encoder->init_fn = init_fn;
  2400. encoder->sig_bytes = HPDF_ENCODER_SIG_BYTES;
  2401. return encoder;
  2402. }
  2403. HPDF_STATUS
  2404. HPDF_CMapEncoder_InitAttr (HPDF_Encoder encoder)
  2405. {
  2406. HPDF_CMapEncoderAttr encoder_attr;
  2407. HPDF_UINT i;
  2408. HPDF_UINT j;
  2409. HPDF_PTRACE ((" HPDF_CMapEncoder_InitAttr\n"));
  2410. if (encoder->attr)
  2411. return HPDF_INVALID_ENCODER;
  2412. encoder_attr = HPDF_GetMem(encoder->mmgr,
  2413. sizeof(HPDF_CMapEncoderAttr_Rec));
  2414. if (!encoder_attr)
  2415. return encoder->error->error_no;
  2416. HPDF_MemSet (encoder_attr, 0, sizeof(HPDF_CMapEncoderAttr_Rec));
  2417. encoder->attr = encoder_attr;
  2418. encoder_attr->writing_mode = HPDF_WMODE_HORIZONTAL;
  2419. for (i = 0; i <= 255; i++) {
  2420. for (j = 0; j <= 255; j++) {
  2421. /* undefined charactors are replaced to square */
  2422. encoder_attr->unicode_map[i][j] = 0x25A1;
  2423. }
  2424. }
  2425. /* create cmap range */
  2426. encoder_attr->cmap_range = HPDF_List_New (encoder->mmgr,
  2427. HPDF_DEF_RANGE_TBL_NUM);
  2428. if (!encoder_attr->cmap_range)
  2429. return encoder->error->error_no;
  2430. encoder_attr->notdef_range = HPDF_List_New (encoder->mmgr,
  2431. HPDF_DEF_ITEMS_PER_BLOCK);
  2432. if (!encoder_attr->notdef_range)
  2433. return encoder->error->error_no;
  2434. encoder_attr->code_space_range = HPDF_List_New (encoder->mmgr,
  2435. HPDF_DEF_ITEMS_PER_BLOCK);
  2436. if (!encoder_attr->code_space_range)
  2437. return encoder->error->error_no;
  2438. return HPDF_OK;
  2439. }
  2440. HPDF_UNICODE
  2441. HPDF_CMapEncoder_ToUnicode (HPDF_Encoder encoder,
  2442. HPDF_UINT16 code)
  2443. {
  2444. HPDF_BYTE l = (HPDF_BYTE)code;
  2445. HPDF_BYTE h = (HPDF_BYTE)(code >> 8);
  2446. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2447. return attr->unicode_map[l][h];
  2448. }
  2449. HPDF_UINT16
  2450. HPDF_CMapEncoder_ToCID (HPDF_Encoder encoder,
  2451. HPDF_UINT16 code)
  2452. {
  2453. HPDF_BYTE l = (HPDF_BYTE)code;
  2454. HPDF_BYTE h = (HPDF_BYTE)(code >> 8);
  2455. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2456. return attr->cid_map[l][h];
  2457. }
  2458. void
  2459. HPDF_CMapEncoder_Free (HPDF_Encoder encoder)
  2460. {
  2461. HPDF_CMapEncoderAttr attr;
  2462. HPDF_UINT i;
  2463. HPDF_CidRange_Rec *data;
  2464. HPDF_PTRACE ((" HPDF_CMapEncoder_Free\n"));
  2465. attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2466. if (attr && attr->cmap_range) {
  2467. for (i = 0; i < attr->cmap_range->count; i++) {
  2468. data = HPDF_List_ItemAt (attr->cmap_range, i);
  2469. HPDF_FreeMem (encoder->mmgr, data);
  2470. }
  2471. HPDF_List_Free (attr->cmap_range);
  2472. }
  2473. if (attr && attr->notdef_range) {
  2474. for (i = 0; i < attr->notdef_range->count; i++) {
  2475. data = HPDF_List_ItemAt (attr->notdef_range, i);
  2476. HPDF_FreeMem (encoder->mmgr, data);
  2477. }
  2478. HPDF_List_Free (attr->notdef_range);
  2479. }
  2480. if (attr && attr->code_space_range) {
  2481. for (i = 0; i < attr->code_space_range->count; i++) {
  2482. data = HPDF_List_ItemAt (attr->code_space_range, i);
  2483. HPDF_FreeMem (encoder->mmgr, data);
  2484. }
  2485. HPDF_List_Free (attr->code_space_range);
  2486. }
  2487. HPDF_FreeMem (encoder->mmgr, encoder->attr);
  2488. encoder->attr = NULL;
  2489. }
  2490. HPDF_STATUS
  2491. HPDF_CMapEncoder_Write (HPDF_Encoder encoder,
  2492. HPDF_Stream out)
  2493. {
  2494. HPDF_STATUS ret = HPDF_OK;
  2495. HPDF_UNUSED (out);
  2496. HPDF_UNUSED (encoder);
  2497. return ret;
  2498. }
  2499. void
  2500. HPDF_Encoder_SetParseText (HPDF_Encoder encoder,
  2501. HPDF_ParseText_Rec *state,
  2502. const HPDF_BYTE *text,
  2503. HPDF_UINT len)
  2504. {
  2505. HPDF_PTRACE ((" HPDF_CMapEncoder_SetParseText\n"));
  2506. HPDF_UNUSED (encoder);
  2507. state->text = text;
  2508. state->index = 0;
  2509. state->len = len;
  2510. state->byte_type = HPDF_BYTE_TYPE_SINGLE;
  2511. }
  2512. HPDF_ByteType
  2513. HPDF_CMapEncoder_ByteType (HPDF_Encoder encoder,
  2514. HPDF_ParseText_Rec *state)
  2515. {
  2516. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2517. HPDF_PTRACE ((" HPDF_CMapEncoder_ByteType\n"));
  2518. if (state->index >= state->len)
  2519. return HPDF_BYTE_TYPE_UNKNOWN;
  2520. if (state->byte_type == HPDF_BYTE_TYPE_LEAD) {
  2521. if (attr->is_trial_byte_fn (encoder, state->text[state->index]))
  2522. state->byte_type = HPDF_BYTE_TYPE_TRIAL;
  2523. else
  2524. state->byte_type = HPDF_BYTE_TYPE_UNKNOWN;
  2525. } else {
  2526. if (attr->is_lead_byte_fn (encoder, state->text[state->index]))
  2527. state->byte_type = HPDF_BYTE_TYPE_LEAD;
  2528. else
  2529. state->byte_type = HPDF_BYTE_TYPE_SINGLE;
  2530. }
  2531. state->index++;
  2532. return state->byte_type;
  2533. }
  2534. HPDF_ByteType
  2535. HPDF_Encoder_ByteType (HPDF_Encoder encoder,
  2536. HPDF_ParseText_Rec *state)
  2537. {
  2538. HPDF_PTRACE ((" HPDF_Encoder_ByteType\n"));
  2539. if (encoder->byte_type_fn)
  2540. return encoder->byte_type_fn (encoder, state);
  2541. else
  2542. return HPDF_BYTE_TYPE_SINGLE;
  2543. }
  2544. HPDF_STATUS
  2545. HPDF_CMapEncoder_AddCMap (HPDF_Encoder encoder,
  2546. const HPDF_CidRange_Rec *range)
  2547. {
  2548. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2549. HPDF_PTRACE ((" HPDF_CMapEncoder_AddCMap\n"));
  2550. /* Copy specified pdf_cid_range array to fRangeArray. */
  2551. while (range->from != 0xffff && range->to != 0xffff) {
  2552. HPDF_UINT16 code = range->from;
  2553. HPDF_UINT16 cid = range->cid;
  2554. HPDF_CidRange_Rec *prange;
  2555. HPDF_STATUS ret;
  2556. while (code <= range->to) {
  2557. HPDF_BYTE l = (HPDF_BYTE)code;
  2558. HPDF_BYTE h = (HPDF_BYTE)(code >> 8);
  2559. attr->cid_map[l][h] = cid;
  2560. code++;
  2561. cid++;
  2562. }
  2563. prange = HPDF_GetMem (encoder->mmgr, sizeof(HPDF_CidRange_Rec));
  2564. if (!prange)
  2565. return encoder->error->error_no;
  2566. prange->from = range->from;
  2567. prange->to = range->to;
  2568. prange->cid = range->cid;
  2569. if ((ret = HPDF_List_Add (attr->cmap_range, prange)) != HPDF_OK) {
  2570. HPDF_FreeMem (encoder->mmgr, prange);
  2571. return ret;
  2572. }
  2573. range++;
  2574. }
  2575. return HPDF_OK;
  2576. }
  2577. static HPDF_STATUS
  2578. AddCidRainge (HPDF_MMgr mmgr,
  2579. HPDF_CidRange_Rec range,
  2580. HPDF_List target)
  2581. {
  2582. HPDF_CidRange_Rec *prange;
  2583. HPDF_STATUS ret;
  2584. prange = HPDF_GetMem (mmgr, sizeof(HPDF_CidRange_Rec));
  2585. if (!prange)
  2586. return mmgr->error->error_no;
  2587. prange->from = range.from;
  2588. prange->to = range.to;
  2589. prange->cid = range.cid;
  2590. if ((ret = HPDF_List_Add (target, prange))
  2591. != HPDF_OK) {
  2592. HPDF_FreeMem (mmgr, prange);
  2593. return ret;
  2594. }
  2595. return HPDF_OK;
  2596. }
  2597. HPDF_STATUS
  2598. HPDF_CMapEncoder_AddNotDefRange (HPDF_Encoder encoder,
  2599. HPDF_CidRange_Rec range)
  2600. {
  2601. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2602. HPDF_PTRACE ((" HPDF_CMapEncoder_AddNotDefRange\n"));
  2603. return AddCidRainge (encoder->mmgr, range, attr->notdef_range);
  2604. }
  2605. HPDF_STATUS
  2606. HPDF_CMapEncoder_AddCodeSpaceRange (HPDF_Encoder encoder,
  2607. HPDF_CidRange_Rec range)
  2608. {
  2609. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2610. HPDF_PTRACE ((" HPDF_CMapEncoder_AddNotDefRange\n"));
  2611. return AddCidRainge (encoder->mmgr, range, attr->code_space_range);
  2612. }
  2613. void
  2614. HPDF_CMapEncoder_SetUnicodeArray (HPDF_Encoder encoder,
  2615. const HPDF_UnicodeMap_Rec *array)
  2616. {
  2617. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2618. HPDF_PTRACE ((" HPDF_CMapEncoder_SetUnicodeArray\n"));
  2619. if (array != NULL)
  2620. while (array->unicode != 0xffff) {
  2621. HPDF_BYTE l = (HPDF_BYTE)array->code;
  2622. HPDF_BYTE h = (HPDF_BYTE)(array->code >> 8);
  2623. attr->unicode_map[l][h] = array->unicode;
  2624. array++;
  2625. }
  2626. }
  2627. HPDF_STATUS
  2628. HPDF_CMapEncoder_AddJWWLineHead (HPDF_Encoder encoder,
  2629. const HPDF_UINT16 *code)
  2630. {
  2631. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2632. HPDF_UINT i, j;
  2633. HPDF_PTRACE ((" HPDF_CMapEncoder_AddJWWLineHead\n"));
  2634. for (i = 0; i < HPDF_MAX_JWW_NUM; i++) {
  2635. if (*code == 0)
  2636. break;
  2637. for (j = 0; j < HPDF_MAX_JWW_NUM; j++) {
  2638. if (attr->jww_line_head[j] == *code)
  2639. break;
  2640. if (attr->jww_line_head[j] == 0) {
  2641. attr->jww_line_head[j] = *code;
  2642. break;
  2643. }
  2644. if (j == HPDF_MAX_JWW_NUM - 1)
  2645. return HPDF_SetError (encoder->error,
  2646. HPDF_EXCEED_JWW_CODE_NUM_LIMIT, i);
  2647. }
  2648. code++;
  2649. }
  2650. return HPDF_OK;
  2651. }
  2652. HPDF_BOOL
  2653. HPDF_Encoder_CheckJWWLineHead (HPDF_Encoder encoder,
  2654. const HPDF_UINT16 code)
  2655. {
  2656. HPDF_CMapEncoderAttr attr;
  2657. HPDF_UINT j;
  2658. HPDF_PTRACE ((" HPDF_Encoder_CheckJWWLineHead\n"));
  2659. if (!HPDF_Encoder_Validate (encoder))
  2660. return HPDF_FALSE;
  2661. if (encoder->type != HPDF_ENCODER_TYPE_DOUBLE_BYTE)
  2662. return HPDF_FALSE;
  2663. attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2664. for (j = 0; j < HPDF_MAX_JWW_NUM; j++) {
  2665. if (code == attr->jww_line_head[j])
  2666. return HPDF_TRUE;
  2667. if (attr->jww_line_head[j] == 0)
  2668. return HPDF_FALSE;
  2669. }
  2670. return HPDF_FALSE;
  2671. }
  2672. HPDF_EXPORT(HPDF_UNICODE)
  2673. HPDF_Encoder_GetUnicode (HPDF_Encoder encoder,
  2674. HPDF_UINT16 code)
  2675. {
  2676. HPDF_PTRACE ((" HPDF_Encoder_GetUnicode\n"));
  2677. if (!HPDF_Encoder_Validate (encoder))
  2678. return 0;
  2679. return HPDF_Encoder_ToUnicode (encoder, code);
  2680. }
  2681. HPDF_EXPORT(HPDF_ByteType)
  2682. HPDF_Encoder_GetByteType (HPDF_Encoder encoder,
  2683. const char *text,
  2684. HPDF_UINT index)
  2685. {
  2686. HPDF_ParseText_Rec parse_state;
  2687. HPDF_ByteType btype;
  2688. HPDF_PTRACE ((" HPDF_Encoder_GetByteType\n"));
  2689. if (!HPDF_Encoder_Validate (encoder))
  2690. return HPDF_BYTE_TYPE_UNKNOWN;
  2691. if (encoder->type != HPDF_ENCODER_TYPE_DOUBLE_BYTE)
  2692. return HPDF_BYTE_TYPE_SINGLE;
  2693. HPDF_Encoder_SetParseText (encoder, &parse_state, (HPDF_BYTE *)text, index + 1);
  2694. for (;;) {
  2695. btype = HPDF_CMapEncoder_ByteType (encoder, &parse_state);
  2696. if (index == 0)
  2697. break;
  2698. text++;
  2699. if (!(*text))
  2700. return HPDF_BYTE_TYPE_UNKNOWN;
  2701. index--;
  2702. }
  2703. return btype;
  2704. }
  2705. HPDF_EXPORT(HPDF_EncoderType)
  2706. HPDF_Encoder_GetType (HPDF_Encoder encoder)
  2707. {
  2708. HPDF_PTRACE ((" HPDF_Encoder_GetType\n"));
  2709. if (!HPDF_Encoder_Validate (encoder))
  2710. return HPDF_ENCODER_UNKNOWN;
  2711. return encoder->type;
  2712. }
  2713. HPDF_EXPORT(HPDF_WritingMode)
  2714. HPDF_Encoder_GetWritingMode (HPDF_Encoder encoder)
  2715. {
  2716. HPDF_PTRACE ((" HPDF_Encoder_GetWritingMode\n"));
  2717. if (!HPDF_Encoder_Validate (encoder))
  2718. return HPDF_WMODE_HORIZONTAL;
  2719. if (encoder->type == HPDF_ENCODER_TYPE_DOUBLE_BYTE) {
  2720. HPDF_CMapEncoderAttr attr = (HPDF_CMapEncoderAttr)encoder->attr;
  2721. return attr->writing_mode;
  2722. }
  2723. return HPDF_WMODE_HORIZONTAL;
  2724. }