unicode.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. };
  75. const uint32_t PROGMEM unicode_map[] = {
  76. [A_ACUTE] = 0x00E1,
  77. [A_ACUTEC] = 0x00C1,
  78. [E_ACUTE] = 0x00E9,
  79. [E_ACUTEC] = 0x00C9,
  80. [I_ACUTE] = 0x00ED,
  81. [I_ACUTEC] = 0x00CD,
  82. [O_ACUTE] = 0x00F3,
  83. [O_ACUTEC] = 0x00D3,
  84. [U_ACUTE] = 0x00FA,
  85. [U_ACUTEC] = 0x00DA,
  86. [U_DIERESIS] = 0x00FC,
  87. [U_DIERESISC] = 0x00DC,
  88. [N_TILDE] = 0x00F1,
  89. [N_TILDEC] = 0x00D1,
  90. [OPEN_EXCML] = 0x00A1,
  91. [OPEN_QUEST] = 0x00BF,
  92. [EURO] = 0x20AC,
  93. [POUND] = 0x00A3,
  94. [LEFT_ARROW] = 0x2190,
  95. [DOWN_ARROW] = 0x2193,
  96. [UP_ARROW] = 0x2191,
  97. [RIGHT_ARROW] = 0x2192,
  98. [LEFT_DARROW] = 0x21E6,
  99. [DOWN_DARROW] = 0x21D3,
  100. [UP_DARROW] = 0x21D1,
  101. [RIGHT_DAROW] = 0x21D2,
  102. [LEFT_DQUOT] = 0x00AB,
  103. [RGHT_DQUOT] = 0x00BB,
  104. [DEGREE] = 0x00B0,
  105. [DEGREE_CELCIUS]= 0x2103,
  106. [SUPER_1] = 0x00B9,
  107. [SUPER_2] = 0x00B2,
  108. [SUPER_3] = 0x00B3,
  109. [ONE_HALF] = 0x00BD,
  110. [PER_MILLE] = 0x0609,
  111. [PER_THOUS] = 0x060A,
  112. [PILCROW] = 0x00B6,
  113. [COPYRIGHT] = 0x00A9,
  114. [REGISTERED] = 0x00AE,
  115. [MICRO] = 0x00B5,
  116. [MIDDLE_DOT] = 0x00B7,
  117. [BOX_CORNER_1] = 0x250C,
  118. [BOX_CORNER_2] = 0x2510,
  119. [BOX_CORNER_3] = 0x2514,
  120. [BOX_CORNER_4] = 0x2518,
  121. [BOX_HORIZONTAL]= 0x2500,
  122. [BOX_VERTICAL] = 0x2502,
  123. [BOX_CROSS] = 0x253C,
  124. [BOX_UNION_1] = 0x2524,
  125. [BOX_UNION_2] = 0x252C,
  126. [BOX_UNION_3] = 0x2534,
  127. [BOX_UNION_4] = 0x251C,
  128. [DBOX_CORNER_1] = 0x2554,
  129. [DBOX_CORNER_2] = 0x2557,
  130. [DBOX_CORNER_3] = 0x255A,
  131. [DBOX_CORNER_4] = 0x255D,
  132. [DBOX_HORIZONT] = 0x2550,
  133. [DBOX_VERTICAL] = 0x2551,
  134. [DBOX_CROSS] = 0x256C,
  135. [DBOX_UNION_1] = 0x2563,
  136. [DBOX_UNION_2] = 0x2566,
  137. [DBOX_UNION_3] = 0x2569,
  138. [DBOX_UNION_4] = 0x2560,
  139. [LESS_EQUAL] = 0x2264,
  140. [MORE_EQUAL] = 0x2265,
  141. [DIVISION] = 0x00F7,
  142. [SQUARE_ROOT] = 0x221A,
  143. [CUBE_ROOT] = 0x221B,
  144. [SPADE_SUIT] = 0x2660,
  145. [TREBOL_SUIT] = 0x2663,
  146. [HEART_SUIT] = 0x2664,
  147. [DIAMOND_SUIT] = 0x2665
  148. };
  149. #define UN_ESC XP(DEGREE, DEGREE_CELCIUS)
  150. #define UN_Q XP(OPEN_EXCML, SUPER_1)
  151. #define UN_W XP(SUPER_2, SUPER_3)
  152. #define UN_E XP(E_ACUTE, E_ACUTEC)
  153. #define UN_R XP(EURO, ONE_HALF)
  154. #define UN_T XP(PER_MILLE, PER_THOUS)
  155. #define UN_Y XP(U_DIERESIS, U_DIERESISC)
  156. #define UN_U XP(U_ACUTE, U_ACUTEC)
  157. #define UN_I XP(I_ACUTE, I_ACUTEC)
  158. #define UN_O XP(O_ACUTE, O_ACUTEC)
  159. #define UN_P XP(POUND, PILCROW)
  160. #define UN_A XP(A_ACUTE, A_ACUTEC)
  161. #define UN_S XP(BOX_CORNER_1, DBOX_CORNER_1)
  162. #define UN_D XP(BOX_CORNER_2, DBOX_CORNER_2)
  163. #define UN_F XP(BOX_CORNER_3, DBOX_CORNER_3)
  164. #define UN_G XP(BOX_CORNER_4, DBOX_CORNER_4)
  165. #define UN_H XP(BOX_UNION_1, DBOX_UNION_1)
  166. #define UN_J XP(BOX_UNION_2, DBOX_UNION_2)
  167. #define UN_K XP(BOX_UNION_3, DBOX_UNION_3)
  168. #define UN_L XP(BOX_UNION_4, DBOX_UNION_4)
  169. #define UN_SCLN XP(BOX_HORIZONTAL, DBOX_HORIZONT)
  170. #define UN_Z XP(BOX_VERTICAL, DBOX_VERTICAL)
  171. #define UN_X XP(BOX_CROSS, DBOX_CROSS)
  172. #define UN_C XP(COPYRIGHT, REGISTERED)
  173. #define UN_V XP(SPADE_SUIT, TREBOL_SUIT)
  174. #define UN_B XP(HEART_SUIT, DIAMOND_SUIT)
  175. #define UN_N XP(N_TILDE, N_TILDEC)
  176. #define UN_M XP(MICRO, MIDDLE_DOT)
  177. #define UN_COMM XP(LESS_EQUAL, LEFT_DQUOT)
  178. #define UN_DOT XP(MORE_EQUAL, RGHT_DQUOT)
  179. #define UN_SLSH XP(OPEN_QUEST, DIVISION)
  180. #define UN_LEFT XP(LEFT_ARROW, LEFT_DARROW)
  181. #define UN_DOWN XP(DOWN_ARROW, DOWN_DARROW)
  182. #define UN_UP XP(UP_ARROW, UP_DARROW)
  183. #define UN_RGHT XP(RIGHT_ARROW, RIGHT_DAROW)