eia608_charmap.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. /**********************************************************************************************/
  2. /* The MIT License */
  3. /* */
  4. /* Copyright 2016-2017 Twitch Interactive, Inc. or its affiliates. All Rights Reserved. */
  5. /* */
  6. /* Permission is hereby granted, free of charge, to any person obtaining a copy */
  7. /* of this software and associated documentation files (the "Software"), to deal */
  8. /* in the Software without restriction, including without limitation the rights */
  9. /* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell */
  10. /* copies of the Software, and to permit persons to whom the Software is */
  11. /* furnished to do so, subject to the following conditions: */
  12. /* */
  13. /* The above copyright notice and this permission notice shall be included in */
  14. /* all copies or substantial portions of the Software. */
  15. /* */
  16. /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR */
  17. /* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */
  18. /* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */
  19. /* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */
  20. /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, */
  21. /* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN */
  22. /* THE SOFTWARE. */
  23. /**********************************************************************************************/
  24. #ifndef LIBCAPTION_EIA608_CHARMAP_H
  25. #define LIBCAPTION_EIA608_CHARMAP_H
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. #define EIA608_CHAR_COUNT 176
  30. extern const char* eia608_char_map[EIA608_CHAR_COUNT];
  31. // Helper char
  32. #define EIA608_CHAR_NULL ""
  33. // Basic North American character set
  34. #define EIA608_CHAR_SPACE "\x20"
  35. #define EIA608_CHAR_EXCLAMATION_MARK "\x21"
  36. #define EIA608_CHAR_QUOTATION_MARK "\x22"
  37. #define EIA608_CHAR_NUMBER_SIGN "\x23"
  38. #define EIA608_CHAR_DOLLAR_SIGN "\x24"
  39. #define EIA608_CHAR_PERCENT_SIGN "\x25"
  40. #define EIA608_CHAR_AMPERSAND "\x26"
  41. #define EIA608_CHAR_LEFT_SINGLE_QUOTATION_MARK "\xE2\x80\x98"
  42. #define EIA608_CHAR_LEFT_PARENTHESIS "\x28"
  43. #define EIA608_CHAR_RIGHT_PARENTHESIS "\x29"
  44. #define EIA608_CHAR_LATIN_SMALL_LETTER_A_WITH_ACUTE "\xC3\xA1"
  45. #define EIA608_CHAR_PLUS_SIGN "\x2B"
  46. #define EIA608_CHAR_COMMA "\x2C"
  47. #define EIA608_CHAR_HYPHEN_MINUS "\x2D"
  48. #define EIA608_CHAR_FULL_STOP "\x2E"
  49. #define EIA608_CHAR_SOLIDUS "\x2F"
  50. // Basic North American character set
  51. #define EIA608_CHAR_DIGIT_ZERO "\x30"
  52. #define EIA608_CHAR_DIGIT_ONE "\x31"
  53. #define EIA608_CHAR_DIGIT_TWO "\x32"
  54. #define EIA608_CHAR_DIGIT_THREE "\x33"
  55. #define EIA608_CHAR_DIGIT_FOUR "\x34"
  56. #define EIA608_CHAR_DIGIT_FIVE "\x35"
  57. #define EIA608_CHAR_DIGIT_SIX "\x36"
  58. #define EIA608_CHAR_DIGIT_SEVEN "\x37"
  59. #define EIA608_CHAR_DIGIT_EIGHT "\x38"
  60. #define EIA608_CHAR_DIGIT_NINE "\x39"
  61. #define EIA608_CHAR_COLON "\x3A"
  62. #define EIA608_CHAR_SEMICOLON "\x3B"
  63. #define EIA608_CHAR_LESS_THAN_SIGN "\x3C"
  64. #define EIA608_CHAR_EQUALS_SIGN "\x3D"
  65. #define EIA608_CHAR_GREATER_THAN_SIGN "\x3E"
  66. #define EIA608_CHAR_QUESTION_MARK "\x3F"
  67. // Basic North American character set
  68. #define EIA608_CHAR_COMMERCIAL_AT "\x40"
  69. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A "\x41"
  70. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_B "\x42"
  71. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_C "\x43"
  72. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_D "\x44"
  73. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_E "\x45"
  74. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_F "\x46"
  75. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_G "\x47"
  76. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_H "\x48"
  77. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_I "\x49"
  78. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_J "\x4A"
  79. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_K "\x4B"
  80. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_L "\x4C"
  81. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_M "\x4D"
  82. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_N "\x4E"
  83. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O "\x4F"
  84. // Basic North American character set
  85. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_P "\x50"
  86. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_Q "\x51"
  87. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_R "\x52"
  88. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_S "\x53"
  89. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_T "\x54"
  90. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_U "\x55"
  91. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_V "\x56"
  92. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_W "\x57"
  93. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_X "\x58"
  94. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_Y "\x59"
  95. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_Z "\x5A"
  96. #define EIA608_CHAR_LEFT_SQUARE_BRACKET "\x5B"
  97. #define EIA608_CHAR_LATIN_SMALL_LETTER_E_WITH_ACUTE "\xC3\xA9"
  98. #define EIA608_CHAR_RIGHT_SQUARE_BRACKET "\x5D"
  99. #define EIA608_CHAR_LATIN_SMALL_LETTER_I_WITH_ACUTE "\xC3\xAD"
  100. #define EIA608_CHAR_LATIN_SMALL_LETTER_O_WITH_ACUTE "\xC3\xB3"
  101. // Basic North American character set
  102. #define EIA608_CHAR_LATIN_SMALL_LETTER_U_WITH_ACUTE "\xC3\xBA"
  103. #define EIA608_CHAR_LATIN_SMALL_LETTER_A "\x61"
  104. #define EIA608_CHAR_LATIN_SMALL_LETTER_B "\x62"
  105. #define EIA608_CHAR_LATIN_SMALL_LETTER_C "\x63"
  106. #define EIA608_CHAR_LATIN_SMALL_LETTER_D "\x64"
  107. #define EIA608_CHAR_LATIN_SMALL_LETTER_E "\x65"
  108. #define EIA608_CHAR_LATIN_SMALL_LETTER_F "\x66"
  109. #define EIA608_CHAR_LATIN_SMALL_LETTER_G "\x67"
  110. #define EIA608_CHAR_LATIN_SMALL_LETTER_H "\x68"
  111. #define EIA608_CHAR_LATIN_SMALL_LETTER_I "\x69"
  112. #define EIA608_CHAR_LATIN_SMALL_LETTER_J "\x6A"
  113. #define EIA608_CHAR_LATIN_SMALL_LETTER_K "\x6B"
  114. #define EIA608_CHAR_LATIN_SMALL_LETTER_L "\x6C"
  115. #define EIA608_CHAR_LATIN_SMALL_LETTER_M "\x6D"
  116. #define EIA608_CHAR_LATIN_SMALL_LETTER_N "\x6E"
  117. #define EIA608_CHAR_LATIN_SMALL_LETTER_O "\x6F"
  118. // Basic North American character set
  119. #define EIA608_CHAR_LATIN_SMALL_LETTER_P "\x70"
  120. #define EIA608_CHAR_LATIN_SMALL_LETTER_Q "\x71"
  121. #define EIA608_CHAR_LATIN_SMALL_LETTER_R "\x72"
  122. #define EIA608_CHAR_LATIN_SMALL_LETTER_S "\x73"
  123. #define EIA608_CHAR_LATIN_SMALL_LETTER_T "\x74"
  124. #define EIA608_CHAR_LATIN_SMALL_LETTER_U "\x75"
  125. #define EIA608_CHAR_LATIN_SMALL_LETTER_V "\x76"
  126. #define EIA608_CHAR_LATIN_SMALL_LETTER_W "\x77"
  127. #define EIA608_CHAR_LATIN_SMALL_LETTER_X "\x78"
  128. #define EIA608_CHAR_LATIN_SMALL_LETTER_Y "\x79"
  129. #define EIA608_CHAR_LATIN_SMALL_LETTER_Z "\x7A"
  130. #define EIA608_CHAR_LATIN_SMALL_LETTER_C_WITH_CEDILLA "\xC3\xA7"
  131. #define EIA608_CHAR_DIVISION_SIGN "\xC3\xB7"
  132. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_N_WITH_TILDE "\xC3\x91"
  133. #define EIA608_CHAR_LATIN_SMALL_LETTER_N_WITH_TILDE "\xC3\xB1"
  134. #define EIA608_CHAR_FULL_BLOCK "\xE2\x96\x88"
  135. // Special North American character set[edit]
  136. #define EIA608_CHAR_REGISTERED_SIGN "\xC2\xAE"
  137. #define EIA608_CHAR_DEGREE_SIGN "\xC2\xB0"
  138. #define EIA608_CHAR_VULGAR_FRACTION_ONE_HALF "\xC2\xBD"
  139. #define EIA608_CHAR_INVERTED_QUESTION_MARK "\xC2\xBF"
  140. #define EIA608_CHAR_TRADE_MARK_SIGN "\xE2\x84\xA2"
  141. #define EIA608_CHAR_CENT_SIGN "\xC2\xA2"
  142. #define EIA608_CHAR_POUND_SIGN "\xC2\xA3"
  143. #define EIA608_CHAR_EIGHTH_NOTE "\xE2\x99\xAA"
  144. #define EIA608_CHAR_LATIN_SMALL_LETTER_A_WITH_GRAVE "\xC3\xA0"
  145. #define EIA608_CHAR_NO_BREAK_SPACE "\xC2\xA0"
  146. #define EIA608_CHAR_LATIN_SMALL_LETTER_E_WITH_GRAVE "\xC3\xA8"
  147. #define EIA608_CHAR_LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX "\xC3\xA2"
  148. #define EIA608_CHAR_LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX "\xC3\xAA"
  149. #define EIA608_CHAR_LATIN_SMALL_LETTER_I_WITH_CIRCUMFLEX "\xC3\xAE"
  150. #define EIA608_CHAR_LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX "\xC3\xB4"
  151. #define EIA608_CHAR_LATIN_SMALL_LETTER_U_WITH_CIRCUMFLEX "\xC3\xBB"
  152. // Extended Western European character set : Extended Spanish/Miscellaneous
  153. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A_WITH_ACUTE "\xC3\x81"
  154. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_E_WITH_ACUTE "\xC3\x89"
  155. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O_WITH_ACUTE "\xC3\x93"
  156. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_U_WITH_ACUTE "\xC3\x9A"
  157. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS "\xC3\x9C"
  158. #define EIA608_CHAR_LATIN_SMALL_LETTER_U_WITH_DIAERESIS "\xC3\xBC"
  159. #define EIA608_CHAR_RIGHT_SINGLE_QUOTATION_MARK "\xE2\x80\x99"
  160. #define EIA608_CHAR_INVERTED_EXCLAMATION_MARK "\xC2\xA1"
  161. #define EIA608_CHAR_ASTERISK "\x2A"
  162. #define EIA608_CHAR_APOSTROPHE "\x27"
  163. #define EIA608_CHAR_EM_DASH "\xE2\x80\x94"
  164. #define EIA608_CHAR_COPYRIGHT_SIGN "\xC2\xA9"
  165. #define EIA608_CHAR_SERVICE_MARK "\xE2\x84\xA0"
  166. #define EIA608_CHAR_BULLET "\xE2\x80\xA2"
  167. #define EIA608_CHAR_LEFT_DOUBLE_QUOTATION_MARK "\xE2\x80\x9C"
  168. #define EIA608_CHAR_RIGHT_DOUBLE_QUOTATION_MARK "\xE2\x80\x9D"
  169. // Extended Western European character set : Extended French
  170. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A_WITH_GRAVE "\xC3\x80"
  171. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX "\xC3\x82"
  172. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_C_WITH_CEDILLA "\xC3\x87"
  173. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_E_WITH_GRAVE "\xC3\x88"
  174. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX "\xC3\x8A"
  175. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_E_WITH_DIAERESIS "\xC3\x8B"
  176. #define EIA608_CHAR_LATIN_SMALL_LETTER_E_WITH_DIAERESIS "\xC3\xAB"
  177. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_I_WITH_CIRCUMFLEX "\xC3\x8E"
  178. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_I_WITH_DIAERESIS "\xC3\x8F"
  179. #define EIA608_CHAR_LATIN_SMALL_LETTER_I_WITH_DIAERESIS "\xC3\xAF"
  180. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX "\xC3\x94"
  181. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_U_WITH_GRAVE "\xC3\x99"
  182. #define EIA608_CHAR_LATIN_SMALL_LETTER_U_WITH_GRAVE "\xC3\xB9"
  183. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_U_WITH_CIRCUMFLEX "\xC3\x9B"
  184. #define EIA608_CHAR_LEFT_POINTING_DOUBLE_ANGLE_QUOTATION_MARK "\xC2\xAB"
  185. #define EIA608_CHAR_RIGHT_POINTING_DOUBLE_ANGLE_QUOTATION_MARK "\xC2\xBB"
  186. // Extended Western European character set : Portuguese
  187. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A_WITH_TILDE "\xC3\x83"
  188. #define EIA608_CHAR_LATIN_SMALL_LETTER_A_WITH_TILDE "\xC3\xA3"
  189. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_I_WITH_ACUTE "\xC3\x8D"
  190. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_I_WITH_GRAVE "\xC3\x8C"
  191. #define EIA608_CHAR_LATIN_SMALL_LETTER_I_WITH_GRAVE "\xC3\xAC"
  192. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O_WITH_GRAVE "\xC3\x92"
  193. #define EIA608_CHAR_LATIN_SMALL_LETTER_O_WITH_GRAVE "\xC3\xB2"
  194. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O_WITH_TILDE "\xC3\x95"
  195. #define EIA608_CHAR_LATIN_SMALL_LETTER_O_WITH_TILDE "\xC3\xB5"
  196. #define EIA608_CHAR_LEFT_CURLY_BRACKET "\x7B"
  197. #define EIA608_CHAR_RIGHT_CURLY_BRACKET "\x7D"
  198. #define EIA608_CHAR_REVERSE_SOLIDUS "\x5C"
  199. #define EIA608_CHAR_CIRCUMFLEX_ACCENT "\x5E"
  200. #define EIA608_CHAR_LOW_LINE "\x5F"
  201. #define EIA608_CHAR_VERTICAL_LINE "\x7C"
  202. #define EIA608_CHAR_TILDE "\x7E"
  203. // Extended Western European character set : German/Danish
  204. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A_WITH_DIAERESIS "\xC3\x84"
  205. #define EIA608_CHAR_LATIN_SMALL_LETTER_A_WITH_DIAERESIS "\xC3\xA4"
  206. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS "\xC3\x96"
  207. #define EIA608_CHAR_LATIN_SMALL_LETTER_O_WITH_DIAERESIS "\xC3\xB6"
  208. #define EIA608_CHAR_LATIN_SMALL_LETTER_SHARP_S "\xC3\x9F"
  209. #define EIA608_CHAR_YEN_SIGN "\xC2\xA5"
  210. #define EIA608_CHAR_CURRENCY_SIGN "\xC2\xA4"
  211. #define EIA608_CHAR_BROKEN_BAR "\xC2\xA6"
  212. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE "\xC3\x85"
  213. #define EIA608_CHAR_LATIN_SMALL_LETTER_A_WITH_RING_ABOVE "\xC3\xA5"
  214. #define EIA608_CHAR_LATIN_CAPITAL_LETTER_O_WITH_STROKE "\xC3\x98"
  215. #define EIA608_CHAR_LATIN_SMALL_LETTER_O_WITH_STROKE "\xC3\xB8"
  216. #define EIA608_CHAR_BOX_DRAWINGS_LIGHT_DOWN_AND_RIGHT "\xE2\x94\x8C" // top left
  217. #define EIA608_CHAR_BOX_DRAWINGS_LIGHT_DOWN_AND_LEFT "\xE2\x94\x90" // top right
  218. #define EIA608_CHAR_BOX_DRAWINGS_LIGHT_UP_AND_RIGHT "\xE2\x94\x94" // lower left
  219. #define EIA608_CHAR_BOX_DRAWINGS_LIGHT_UP_AND_LEFT "\xE2\x94\x98" // bottom right
  220. #ifdef __cplusplus
  221. }
  222. #endif
  223. #endif