unicode.c 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. enum unicode_names {
  2. A_ACUTE,
  3. A_ACUTEC,
  4. E_ACUTE,
  5. E_ACUTEC,
  6. I_ACUTE,
  7. I_ACUTEC,
  8. O_ACUTE,
  9. O_ACUTEC,
  10. U_ACUTE,
  11. U_ACUTEC,
  12. U_DIERESIS,
  13. U_DIERESISC,
  14. N_TILDE,
  15. N_TILDEC,
  16. OPEN_EXCML,
  17. OPEN_QUEST,
  18. EURO,
  19. POUND,
  20. LEFT_ARROW,
  21. DOWN_ARROW,
  22. UP_ARROW,
  23. RIGHT_ARROW,
  24. LEFT_DARROW,
  25. DOWN_DARROW,
  26. UP_DARROW,
  27. RIGHT_DAROW,
  28. LEFT_DQUOT,
  29. RGHT_DQUOT,
  30. DEGREE,
  31. DEGREE_CELCIUS,
  32. SUPER_1,
  33. SUPER_2,
  34. SUPER_3,
  35. ONE_HALF,
  36. PER_MILLE,
  37. PER_THOUS,
  38. PILCROW,
  39. COPYRIGHT,
  40. REGISTERED,
  41. MICRO,
  42. MIDDLE_DOT,
  43. BOX_CORNER_1,
  44. BOX_CORNER_2,
  45. BOX_CORNER_3,
  46. BOX_CORNER_4,
  47. BOX_HORIZONTAL,
  48. BOX_VERTICAL,
  49. BOX_CROSS,
  50. BOX_UNION_1,
  51. BOX_UNION_2,
  52. BOX_UNION_3,
  53. BOX_UNION_4,
  54. DBOX_CORNER_1,
  55. DBOX_CORNER_2,
  56. DBOX_CORNER_3,
  57. DBOX_CORNER_4,
  58. DBOX_HORIZONT,
  59. DBOX_VERTICAL,
  60. DBOX_CROSS,
  61. DBOX_UNION_1,
  62. DBOX_UNION_2,
  63. DBOX_UNION_3,
  64. DBOX_UNION_4,
  65. LESS_EQUAL,
  66. MORE_EQUAL,
  67. DIVISION,
  68. SQUARE_ROOT,
  69. CUBE_ROOT,
  70. SPADE_SUIT,
  71. TREBOL_SUIT,
  72. HEART_SUIT,
  73. DIAMOND_SUIT,
  74. NARRAY_SUM,
  75. INFINIT_SYMBOL,
  76. DIAMOND_BULLET,
  77. CIRCLE_BULLET,
  78. SMILE_FACE,
  79. SAD_FACE
  80. };
  81. const uint32_t PROGMEM unicode_map[] = {
  82. [A_ACUTE] = 0x00E1,
  83. [A_ACUTEC] = 0x00C1,
  84. [E_ACUTE] = 0x00E9,
  85. [E_ACUTEC] = 0x00C9,
  86. [I_ACUTE] = 0x00ED,
  87. [I_ACUTEC] = 0x00CD,
  88. [O_ACUTE] = 0x00F3,
  89. [O_ACUTEC] = 0x00D3,
  90. [U_ACUTE] = 0x00FA,
  91. [U_ACUTEC] = 0x00DA,
  92. [U_DIERESIS] = 0x00FC,
  93. [U_DIERESISC] = 0x00DC,
  94. [N_TILDE] = 0x00F1,
  95. [N_TILDEC] = 0x00D1,
  96. [OPEN_EXCML] = 0x00A1,
  97. [OPEN_QUEST] = 0x00BF,
  98. [EURO] = 0x20AC,
  99. [POUND] = 0x00A3,
  100. [LEFT_ARROW] = 0x2190,
  101. [DOWN_ARROW] = 0x2193,
  102. [UP_ARROW] = 0x2191,
  103. [RIGHT_ARROW] = 0x2192,
  104. [LEFT_DARROW] = 0x21E6,
  105. [DOWN_DARROW] = 0x21D3,
  106. [UP_DARROW] = 0x21D1,
  107. [RIGHT_DAROW] = 0x21D2,
  108. [LEFT_DQUOT] = 0x00AB,
  109. [RGHT_DQUOT] = 0x00BB,
  110. [DEGREE] = 0x00B0,
  111. [DEGREE_CELCIUS]= 0x2103,
  112. [SUPER_1] = 0x00B9,
  113. [SUPER_2] = 0x00B2,
  114. [SUPER_3] = 0x00B3,
  115. [ONE_HALF] = 0x00BD,
  116. [PER_MILLE] = 0x0609,
  117. [PER_THOUS] = 0x060A,
  118. [PILCROW] = 0x00B6,
  119. [COPYRIGHT] = 0x00A9,
  120. [REGISTERED] = 0x00AE,
  121. [MICRO] = 0x00B5,
  122. [MIDDLE_DOT] = 0x00B7,
  123. [BOX_CORNER_1] = 0x250C,
  124. [BOX_CORNER_2] = 0x2510,
  125. [BOX_CORNER_3] = 0x2514,
  126. [BOX_CORNER_4] = 0x2518,
  127. [BOX_HORIZONTAL]= 0x2500,
  128. [BOX_VERTICAL] = 0x2502,
  129. [BOX_CROSS] = 0x253C,
  130. [BOX_UNION_1] = 0x2524,
  131. [BOX_UNION_2] = 0x252C,
  132. [BOX_UNION_3] = 0x2534,
  133. [BOX_UNION_4] = 0x251C,
  134. [DBOX_CORNER_1] = 0x2554,
  135. [DBOX_CORNER_2] = 0x2557,
  136. [DBOX_CORNER_3] = 0x255A,
  137. [DBOX_CORNER_4] = 0x255D,
  138. [DBOX_HORIZONT] = 0x2550,
  139. [DBOX_VERTICAL] = 0x2551,
  140. [DBOX_CROSS] = 0x256C,
  141. [DBOX_UNION_1] = 0x2563,
  142. [DBOX_UNION_2] = 0x2566,
  143. [DBOX_UNION_3] = 0x2569,
  144. [DBOX_UNION_4] = 0x2560,
  145. [LESS_EQUAL] = 0x2264,
  146. [MORE_EQUAL] = 0x2265,
  147. [DIVISION] = 0x00F7,
  148. [SQUARE_ROOT] = 0x221A,
  149. [CUBE_ROOT] = 0x221B,
  150. [SPADE_SUIT] = 0x2660,
  151. [TREBOL_SUIT] = 0x2663,
  152. [HEART_SUIT] = 0x2664,
  153. [DIAMOND_SUIT] = 0x2665,
  154. [NARRAY_SUM] = 0x2211,
  155. [INFINIT_SYMBOL]= 0x221E,
  156. [DIAMOND_BULLET]= 0x2B25,
  157. [CIRCLE_BULLET] = 0x2981,
  158. [SMILE_FACE] = 0x263A,
  159. [SAD_FACE] = 0x2639
  160. };
  161. #define UN_ESC XP(DEGREE, DEGREE_CELCIUS)
  162. #define UN_Q XP(OPEN_EXCML, SUPER_1)
  163. #define UN_W XP(SUPER_2, SUPER_3)
  164. #define UN_E XP(E_ACUTE, E_ACUTEC)
  165. #define UN_R XP(EURO, ONE_HALF)
  166. #define UN_T XP(PER_MILLE, PER_THOUS)
  167. #define UN_Y XP(U_DIERESIS, U_DIERESISC)
  168. #define UN_U XP(U_ACUTE, U_ACUTEC)
  169. #define UN_I XP(I_ACUTE, I_ACUTEC)
  170. #define UN_O XP(O_ACUTE, O_ACUTEC)
  171. #define UN_P XP(POUND, PILCROW)
  172. #define UN_BSPC XP(BOX_CROSS, DBOX_CROSS)
  173. #define UN_TAB XP(DIAMOND_BULLET, CIRCLE_BULLET)
  174. #define UN_A XP(A_ACUTE, A_ACUTEC)
  175. #define UN_S XP(BOX_CORNER_1, DBOX_CORNER_1)
  176. #define UN_D XP(BOX_CORNER_2, DBOX_CORNER_2)
  177. #define UN_F XP(BOX_CORNER_3, DBOX_CORNER_3)
  178. #define UN_G XP(BOX_CORNER_4, DBOX_CORNER_4)
  179. #define UN_H XP(BOX_UNION_1, DBOX_UNION_1)
  180. #define UN_J XP(BOX_UNION_2, DBOX_UNION_2)
  181. #define UN_K XP(BOX_UNION_3, DBOX_UNION_3)
  182. #define UN_L XP(BOX_UNION_4, DBOX_UNION_4)
  183. #define UN_SCLN XP(BOX_HORIZONTAL, DBOX_HORIZONT)
  184. #define UN_ENT XP(BOX_VERTICAL, DBOX_VERTICAL)
  185. #define UN_Z XP(NARRAY_SUM, INFINIT_SYMBOL)
  186. #define UN_X XP(SMILE_FACE, SAD_FACE)
  187. #define UN_C XP(COPYRIGHT, REGISTERED)
  188. #define UN_V XP(SPADE_SUIT, TREBOL_SUIT)
  189. #define UN_B XP(HEART_SUIT, DIAMOND_SUIT)
  190. #define UN_N XP(N_TILDE, N_TILDEC)
  191. #define UN_M XP(MICRO, MIDDLE_DOT)
  192. #define UN_COMM XP(LESS_EQUAL, LEFT_DQUOT)
  193. #define UN_DOT XP(MORE_EQUAL, RGHT_DQUOT)
  194. #define UN_SLSH XP(OPEN_QUEST, DIVISION)
  195. #define UN_LEFT XP(LEFT_ARROW, LEFT_DARROW)
  196. #define UN_DOWN XP(DOWN_ARROW, DOWN_DARROW)
  197. #define UN_UP XP(UP_ARROW, UP_DARROW)
  198. #define UN_RGHT XP(RIGHT_ARROW, RIGHT_DAROW)