20#define RET_TOOFEW(x) (-10 - x)
21#define RET_TOOSMALL -2
23#define ucs4_t unsigned int
30#include "lcUniConv/cp936ext.h"
31#include "lcUniConv/big5.h"
32#include "lcUniConv/gb2312.h"
33#include "lcUniConv/iso8859_10.h"
34#include "lcUniConv/iso8859_11.h"
35#include "lcUniConv/iso8859_13.h"
36#include "lcUniConv/iso8859_14.h"
37#include "lcUniConv/iso8859_15.h"
38#include "lcUniConv/iso8859_2.h"
39#include "lcUniConv/iso8859_3.h"
40#include "lcUniConv/iso8859_4.h"
41#include "lcUniConv/iso8859_5.h"
42#include "lcUniConv/iso8859_6.h"
43#include "lcUniConv/iso8859_7.h"
44#include "lcUniConv/iso8859_8.h"
45#include "lcUniConv/iso8859_9.h"
46#include "lcUniConv/jisx0201.h"
47#include "lcUniConv/jisx0208.h"
48#include "lcUniConv/jisx0212.h"
49#include "lcUniConv/koi8_r.h"
50#include "lcUniConv/koi8_u.h"
51#include "lcUniConv/ksc5601.h"
52#include "lcUniConv/cp1251.h"
53#include "headers/symbol_.h"
54#include "headers/dingbats_.h"
59static int ucs2fontmap(
char *s,
unsigned int ucs,
int enc) {
62 s[0] = (char) ((ucs & 0xFF00) >> 8);
63 s[1] = (char) (ucs & 0xFF);
69 s[1] = (char) (ucs & 0xFF);
79 }
else if (ucs < 0x0180) {
82 s[1] = (char) iso8859_2_page00[ucs-0x00a0];
85 }
else if (ucs < 0x02e0) {
88 s[1] = (char) iso8859_2_page02[ucs-0x02c0];
94 if (iso8859_3_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
99 if (iso8859_4_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
104 if (iso8859_5_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
109 if (iso8859_6_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
114 if (iso8859_7_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
119 if (iso8859_8_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
124 if (iso8859_9_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
129 if (iso8859_10_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
134 if (iso8859_11_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
139 if (iso8859_13_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
144 if (iso8859_14_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
149 if (iso8859_15_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
154 if (koi8_r_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
159 if (big5_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
164 if (ksc5601_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
169 if (gb2312_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
174 if (jisx0201_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
179 if (jisx0208_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
184 if (jisx0212_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
192 s[1] = unicode_to_symbol_1b_0020[ucs - 0x0020];
195 }
else if (ucs <= 0x0192) {
198 s[1] = unicode_to_symbol_1b_0192[ucs - 0x0192];
201 }
else if (ucs <= 0x03D6) {
204 s[1] = unicode_to_symbol_1b_0391[ucs - 0x0391];
207 }
else if (ucs <= 0x232A) {
210 s[1] = unicode_to_symbol_1b_2022[ucs - 0x2022];
213 }
else if (ucs <= 0x25CA) {
216 s[1] = unicode_to_symbol_1b_25CA[ucs - 0x25CA];
219 }
else if (ucs <= 0x2666) {
222 s[1] = unicode_to_symbol_1b_2660[ucs - 0x2660];
225 }
else if (ucs <= 0xF6DB) {
228 s[1] = unicode_to_symbol_1b_F6D9[ucs - 0xF6D9];
231 }
else if (ucs <= 0xF8FE) {
234 s[1] = unicode_to_symbol_1b_F8E5[ucs - 0xF8E5];
243 s[1] = unicode_to_dingbats_1b_0020[ucs - 0x0020];
246 }
else if (ucs <= 0x2195) {
249 s[1] = unicode_to_dingbats_1b_2192[ucs - 0x2192];
252 }
else if (ucs <= 0x2469) {
255 s[1] = unicode_to_dingbats_1b_2460[ucs - 0x2460];
258 }
else if (ucs <= 0x2666) {
261 s[1] = unicode_to_dingbats_1b_25A0[ucs - 0x25A0];
264 }
else if (ucs <= 0x27BE) {
267 s[1] = unicode_to_dingbats_1b_2701[ucs - 0x2701];
270 }
else if (ucs <= 0xF8E4) {
273 s[1] = unicode_to_dingbats_1b_F8D7[ucs - 0xF8D7];
279 if (koi8_u_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
284 if (cp1251_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
289 if (cp936ext_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
300static int encoding_number(
const char *enc) {
301 if (!enc || !strncmp(enc,
"iso10646-1", 10)) {
303 }
else if (!strcmp(enc,
"iso8859-1")) {
305 }
else if (!strcmp(enc,
"iso8859-2")) {
307 }
else if (!strcmp(enc,
"iso8859-3")) {
309 }
else if (!strcmp(enc,
"iso8859-4")) {
311 }
else if (!strcmp(enc,
"iso8859-5")) {
313 }
else if (!strcmp(enc,
"iso8859-6")) {
315 }
else if (!strcmp(enc,
"iso8859-7")) {
317 }
else if (!strcmp(enc,
"iso8859-8")) {
319 }
else if (!strcmp(enc,
"iso8859-9")) {
321 }
else if (!strcmp(enc,
"iso8859-10")) {
323 }
else if (!strcmp(enc,
"iso8859-13")) {
325 }
else if (!strcmp(enc,
"iso8859-14")) {
327 }
else if (!strcmp(enc,
"iso8859-15")) {
329 }
else if (!strcmp(enc,
"koi8-r")) {
331 }
else if (!strcmp(enc,
"big5-0") || !strcmp(enc,
"big5.eten-0") ||
332 !strcmp(enc,
"big5p-0"))
335 }
else if (!strcmp(enc,
"ksc5601.1987-0")) {
337 }
else if (!strcmp(enc,
"gb2312.1980-0") || !strcmp(enc,
"gb2312.80-0") ||
338 !strcmp(enc,
"gb2312.80&gb8565.88") || !strcmp(enc,
"gb2312.80-0"))
341 }
else if (!strcmp(enc,
"jisx0201.1976-0")) {
343 }
else if (!strcmp(enc,
"jisx0208.1983-0") || !strcmp(enc,
"jisx0208.1990-0")
344 || !strcmp(enc,
"jisx0208.1978-0"))
347 }
else if (!strcmp(enc,
"jisx0212.1990-0")) {
349 }
else if (!strcmp(enc,
"symbol")) {
351 }
else if (!strcmp(enc,
"dingbats") || !strcmp(enc,
"zapfdingbats") ||
352 !strcmp(enc,
"zapf dingbats") || !strcmp(enc,
"itc zapf dingbats"))
355 }
else if (!strcmp(enc,
"koi8-u")) {
357 }
else if (!strcmp(enc,
"microsoft-cp1251")) {
359 }
else if (!strcmp(enc,
"iso8859-11")) {
361 }
else if (!strcmp(enc,
"gbk-0") || !strcmp(enc,
"cp936") || !strcmp(enc,
"gbk")) {