Subversion Repositories Kolibri OS

Rev

Rev 9089 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7752 leency 1
char *unicode_symbols[]={
7757 leency 2
"quot","\"",
3
"amp", "&",
4
"lt",  "<",
5
"gt",  ">",
6
"#183","\31",   "middot", "\31",
7752 leency 7
"#149","-",
8
"#151","-",
8499 leency 9
"#160"," ",     "nbsp", "\t",   "emsp", " ",
7752 leency 10
"#169","(c)",   "copy", "(c)",
11
"#171","<<",    "laquo","<<",
12
"#174","(r)",   "reg",  "(r)",
13
"#187",">>",    "raquo",">>",
9089 leency 14
"hellip", "...",
4411 leency 15
 
16
"trade", "[TM]",
17
"bdquo", ",,",
18
 
19
"minus", "-",
20
"ndash", "-",
21
"mdash", "-", //--
22
 
8499 leency 23
"rsquo", "'", "apos", "'",
7758 leency 24
"sect", "#",
4411 leency 25
 
7758 leency 26
"ensp",    " ",
27
"emsp13",  " ",
28
"emsp14",  " ",
29
"numsp",   " ",
30
"puncsp",  " ",
31
"thinsp",  " ",
32
 
7752 leency 33
"#1028", "\242",
34
"#1030", "I",
35
"#1031", "\244",
4411 leency 36
 
7752 leency 37
"#8211", "-",
8350 leency 38
"#8212", "-",
7752 leency 39
"#8217", "'",
7757 leency 40
"#8220", "\"",
7752 leency 41
"#8222", "\"", "ldquo", "\"",
42
"#8221", "\"", "rdquo", "\"",
43
"#8470", "N",
44
"#8722", "-",
45
"#9642", "-", //square in the middle of the line
7758 leency 46
"#9658", ">",
47
"#9660", "v",
8439 leency 48
"#10094", "<",
49
"#10095", ">",
7757 leency 50
"#65122", "+",
4411 leency 51
 
8365 leency 52
"#8594", "->",
53
 
8381 leency 54
"uarr",  "^",
55
"darr",  "v",
56
"rarr",  "->",
57
"larr",  "<-",
4411 leency 58
 
7752 leency 59
"bull",  "\31",
4411 leency 60
"percnt","%",
61
 
7752 leency 62
"#xfeff", "",
63
 
7758 leency 64
"times", "x",
65
"lowast","*",
66
 
4411 leency 67
0};
68
 
69
 
7750 leency 70
unsigned char unicode_chars[] = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏเแโใไๅๆ็่้๊๋์ํ๎๏๐๑hฃ\243i\105\244\0";
4411 leency 71
 
8491 leency 72
bool GetUnicodeSymbol(dword _line, line_size, bufpos, buf_end)
4411 leency 73
{
8491 leency 74
	int i;
7757 leency 75
	int code;
8491 leency 76
	char special_code[10];
77
	bool white_end = false;
78
	dword bufstart = bufpos;
79
 
80
	for (i=0; i<9; i++, bufpos++)
81
	{
82
		if (__isWhite(ESBYTE[bufpos])) {bufpos--; break;}
83
		if (ESBYTE[bufpos] == ';') || (bufpos >= buf_end) break;
9103 leency 84
		if (!strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789#", ESBYTE[bufpos])) {bufpos--; break;}
8491 leency 85
		special_code[i] = ESBYTE[bufpos];
86
	}
87
	special_code[i] = '\0';
4411 leency 88
 
8491 leency 89
	for (i=0; unicode_symbols[i]!=0; i+=2;)
4411 leency 90
	{
8491 leency 91
		if (!strcmp(#special_code, unicode_symbols[i]))
4411 leency 92
		{
8491 leency 93
			strncat(_line, unicode_symbols[i+1], line_size);
94
			return bufpos;
4411 leency 95
		}
96
	}
7749 leency 97
 
8491 leency 98
	if (special_code[0]=='#')
4411 leency 99
	{
8491 leency 100
		code = atoi(#special_code + 1);
7757 leency 101
		if (code>=0) && (code<=255)	{
8491 leency 102
			chrncat(_line, code, line_size); //NOT ALL ASCII CODES IN KOLIBRI ARE COMPATABLE WITH STANDARDS
103
			return bufpos;
7750 leency 104
		}
7757 leency 105
		if (code>=1040) && (code<=1040+72) {
8491 leency 106
			chrncat(_line, unicode_chars[code-1040], line_size);
107
			return bufpos;
7757 leency 108
		}
4411 leency 109
	}
7749 leency 110
 
8491 leency 111
	chrncat(_line, '&', line_size);
112
	return bufstart;
4411 leency 113
}