Subversion Repositories Kolibri OS

Rev

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

  1. char *unicode_symbols[]={
  2. "quot","\"",
  3. "amp", "&",
  4. "lt",  "<",
  5. "gt",  ">",
  6. "#183","\31",   "middot", "\31",
  7. "#149","-",
  8. "#151","-",
  9. "#160"," ",     "nbsp", "\t",   "emsp", " ",
  10. "#169","(c)",   "copy", "(c)",
  11. "#171","<<",    "laquo","<<",
  12. "#174","(r)",   "reg",  "(r)",
  13. "#187",">>",    "raquo",">>",
  14. "hellip", "...",
  15.  
  16. "trade", "[TM]",
  17. "bdquo", ",,",
  18.  
  19. "minus", "-",
  20. "ndash", "-",
  21. "mdash", "-", //--
  22.  
  23. "rsquo", "'", "apos", "'",
  24. "sect", "#",
  25.  
  26. "ensp",    " ",
  27. "emsp13",  " ",
  28. "emsp14",  " ",
  29. "numsp",   " ",
  30. "puncsp",  " ",
  31. "thinsp",  " ",
  32.  
  33. "#1028", "\242",
  34. "#1030", "I",
  35. "#1031", "\244",
  36.  
  37. "#8211", "-",
  38. "#8212", "-",
  39. "#8217", "'",
  40. "#8220", "\"",
  41. "#8222", "\"", "ldquo", "\"",
  42. "#8221", "\"", "rdquo", "\"",
  43. "#8470", "N",
  44. "#8722", "-",
  45. "#9642", "-", //square in the middle of the line
  46. "#9658", ">",
  47. "#9660", "v",
  48. "#10094", "<",
  49. "#10095", ">",
  50. "#65122", "+",
  51.  
  52. "#8594", "->",
  53.  
  54. "uarr",  "^",
  55. "darr",  "v",
  56. "rarr",  "->",
  57. "larr",  "<-",
  58.  
  59. "bull",  "\31",
  60. "percnt","%",
  61.  
  62. "#xfeff", "",
  63.  
  64. "times", "x",
  65. "lowast","*",
  66.  
  67. 0};
  68.  
  69.  
  70. unsigned char unicode_chars[] = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯àáâãäåæçèéêëìíîïðñh£\243i\105\244\0";
  71.  
  72. bool GetUnicodeSymbol(dword _line, line_size, bufpos, buf_end)
  73. {
  74.         int i;
  75.         int code;
  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;
  84.                 if (!strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789#", ESBYTE[bufpos])) {bufpos--; break;}
  85.                 special_code[i] = ESBYTE[bufpos];
  86.         }
  87.         special_code[i] = '\0';
  88.        
  89.         for (i=0; unicode_symbols[i]!=0; i+=2;)
  90.         {
  91.                 if (!strcmp(#special_code, unicode_symbols[i]))
  92.                 {
  93.                         strncat(_line, unicode_symbols[i+1], line_size);
  94.                         return bufpos;
  95.                 }
  96.         }
  97.  
  98.         if (special_code[0]=='#')
  99.         {
  100.                 code = atoi(#special_code + 1);
  101.                 if (code>=0) && (code<=255)     {
  102.                         chrncat(_line, code, line_size); //NOT ALL ASCII CODES IN KOLIBRI ARE COMPATABLE WITH STANDARDS
  103.                         return bufpos;
  104.                 }
  105.                 if (code>=1040) && (code<=1040+72) {
  106.                         chrncat(_line, unicode_chars[code-1040], line_size);
  107.                         return bufpos;
  108.                 }
  109.         }
  110.  
  111.         chrncat(_line, '&', line_size);
  112.         return bufstart;
  113. }
  114.