21#define RET_TOOFEW(x) (-10 - x)
22#define RET_TOOSMALL -2
24#define ucs4_t unsigned int
31#include "lcUniConv/cp936ext.h"
32#include "lcUniConv/big5.h"
33#include "lcUniConv/gb2312.h"
34#include "lcUniConv/iso8859_10.h"
35#include "lcUniConv/iso8859_11.h"
36#include "lcUniConv/iso8859_13.h"
37#include "lcUniConv/iso8859_14.h"
38#include "lcUniConv/iso8859_15.h"
39#include "lcUniConv/iso8859_2.h"
40#include "lcUniConv/iso8859_3.h"
41#include "lcUniConv/iso8859_4.h"
42#include "lcUniConv/iso8859_5.h"
43#include "lcUniConv/iso8859_6.h"
44#include "lcUniConv/iso8859_7.h"
45#include "lcUniConv/iso8859_8.h"
46#include "lcUniConv/iso8859_9.h"
47#include "lcUniConv/jisx0201.h"
48#include "lcUniConv/jisx0208.h"
49#include "lcUniConv/jisx0212.h"
50#include "lcUniConv/koi8_r.h"
51#include "lcUniConv/koi8_u.h"
52#include "lcUniConv/ksc5601.h"
53#include "lcUniConv/cp1251.h"
54#include "headers/symbol_.h"
55#include "headers/dingbats_.h"
60static int ucs2fontmap(
char *s,
unsigned int ucs,
int enc) {
63 s[0] = (char) ((ucs & 0xFF00) >> 8);
64 s[1] = (char) (ucs & 0xFF);
70 s[1] = (char) (ucs & 0xFF);
80 }
else if (ucs < 0x0180) {
83 s[1] = (char) iso8859_2_page00[ucs-0x00a0];
86 }
else if (ucs < 0x02e0) {
89 s[1] = (char) iso8859_2_page02[ucs-0x02c0];
95 if (iso8859_3_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
100 if (iso8859_4_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
105 if (iso8859_5_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
110 if (iso8859_6_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
115 if (iso8859_7_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
120 if (iso8859_8_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
125 if (iso8859_9_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
130 if (iso8859_10_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
135 if (iso8859_11_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
140 if (iso8859_13_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
145 if (iso8859_14_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
150 if (iso8859_15_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
155 if (koi8_r_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
160 if (big5_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
165 if (ksc5601_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
170 if (gb2312_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
175 if (jisx0201_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
180 if (jisx0208_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
185 if (jisx0212_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
193 s[1] = unicode_to_symbol_1b_0020[ucs - 0x0020];
196 }
else if (ucs <= 0x0192) {
199 s[1] = unicode_to_symbol_1b_0192[ucs - 0x0192];
202 }
else if (ucs <= 0x03D6) {
205 s[1] = unicode_to_symbol_1b_0391[ucs - 0x0391];
208 }
else if (ucs <= 0x232A) {
211 s[1] = unicode_to_symbol_1b_2022[ucs - 0x2022];
214 }
else if (ucs <= 0x25CA) {
217 s[1] = unicode_to_symbol_1b_25CA[ucs - 0x25CA];
220 }
else if (ucs <= 0x2666) {
223 s[1] = unicode_to_symbol_1b_2660[ucs - 0x2660];
226 }
else if (ucs <= 0xF6DB) {
229 s[1] = unicode_to_symbol_1b_F6D9[ucs - 0xF6D9];
232 }
else if (ucs <= 0xF8FE) {
235 s[1] = unicode_to_symbol_1b_F8E5[ucs - 0xF8E5];
244 s[1] = unicode_to_dingbats_1b_0020[ucs - 0x0020];
247 }
else if (ucs <= 0x2195) {
250 s[1] = unicode_to_dingbats_1b_2192[ucs - 0x2192];
253 }
else if (ucs <= 0x2469) {
256 s[1] = unicode_to_dingbats_1b_2460[ucs - 0x2460];
259 }
else if (ucs <= 0x2666) {
262 s[1] = unicode_to_dingbats_1b_25A0[ucs - 0x25A0];
265 }
else if (ucs <= 0x27BE) {
268 s[1] = unicode_to_dingbats_1b_2701[ucs - 0x2701];
271 }
else if (ucs <= 0xF8E4) {
274 s[1] = unicode_to_dingbats_1b_F8D7[ucs - 0xF8D7];
280 if (koi8_u_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
285 if (cp1251_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
290 if (cp936ext_wctomb(NULL, (
unsigned char*)s, ucs, 2) > 0) {
301static int encoding_number(
const char *enc) {
302 if (!enc || !strncmp(enc,
"iso10646-1", 10)) {
304 }
else if (!strcmp(enc,
"iso8859-1")) {
306 }
else if (!strcmp(enc,
"iso8859-2")) {
308 }
else if (!strcmp(enc,
"iso8859-3")) {
310 }
else if (!strcmp(enc,
"iso8859-4")) {
312 }
else if (!strcmp(enc,
"iso8859-5")) {
314 }
else if (!strcmp(enc,
"iso8859-6")) {
316 }
else if (!strcmp(enc,
"iso8859-7")) {
318 }
else if (!strcmp(enc,
"iso8859-8")) {
320 }
else if (!strcmp(enc,
"iso8859-9")) {
322 }
else if (!strcmp(enc,
"iso8859-10")) {
324 }
else if (!strcmp(enc,
"iso8859-13")) {
326 }
else if (!strcmp(enc,
"iso8859-14")) {
328 }
else if (!strcmp(enc,
"iso8859-15")) {
330 }
else if (!strcmp(enc,
"koi8-r")) {
332 }
else if (!strcmp(enc,
"big5-0") || !strcmp(enc,
"big5.eten-0") ||
333 !strcmp(enc,
"big5p-0"))
336 }
else if (!strcmp(enc,
"ksc5601.1987-0")) {
338 }
else if (!strcmp(enc,
"gb2312.1980-0") || !strcmp(enc,
"gb2312.80-0") ||
339 !strcmp(enc,
"gb2312.80&gb8565.88") || !strcmp(enc,
"gb2312.80-0"))
342 }
else if (!strcmp(enc,
"jisx0201.1976-0")) {
344 }
else if (!strcmp(enc,
"jisx0208.1983-0") || !strcmp(enc,
"jisx0208.1990-0")
345 || !strcmp(enc,
"jisx0208.1978-0"))
348 }
else if (!strcmp(enc,
"jisx0212.1990-0")) {
350 }
else if (!strcmp(enc,
"symbol")) {
352 }
else if (!strcmp(enc,
"dingbats") || !strcmp(enc,
"zapfdingbats") ||
353 !strcmp(enc,
"zapf dingbats") || !strcmp(enc,
"itc zapf dingbats"))
356 }
else if (!strcmp(enc,
"koi8-u")) {
358 }
else if (!strcmp(enc,
"microsoft-cp1251")) {
360 }
else if (!strcmp(enc,
"iso8859-11")) {
362 }
else if (!strcmp(enc,
"gbk-0") || !strcmp(enc,
"cp936") || !strcmp(enc,
"gbk")) {