Subversion Repositories Kolibri OS

Rev

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