prawn-emoji 3.1.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (762) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +3 -0
  3. data/.github/workflows/test.yml +39 -0
  4. data/.gitignore +1 -0
  5. data/CHANGELOG.md +44 -0
  6. data/Dockerfile +4 -10
  7. data/Gemfile +5 -0
  8. data/README.md +37 -15
  9. data/emoji/LICENSE +1 -1
  10. data/emoji/images/1f36a.png +0 -0
  11. data/emoji/images/1f3c3-1f3fb.png +0 -0
  12. data/emoji/images/1f3c3-1f3fc.png +0 -0
  13. data/emoji/images/1f3c3-1f3fd.png +0 -0
  14. data/emoji/images/1f3c3-1f3fe.png +0 -0
  15. data/emoji/images/1f3c3-1f3ff.png +0 -0
  16. data/emoji/images/1f3c3.png +0 -0
  17. data/emoji/images/1f3c4-1f3fb.png +0 -0
  18. data/emoji/images/1f3c4-1f3fc.png +0 -0
  19. data/emoji/images/1f3c4-1f3fd.png +0 -0
  20. data/emoji/images/1f3c4-1f3fe.png +0 -0
  21. data/emoji/images/1f3c4-1f3ff.png +0 -0
  22. data/emoji/images/1f3c4.png +0 -0
  23. data/emoji/images/1f3ca-1f3fb.png +0 -0
  24. data/emoji/images/1f3ca-1f3fc.png +0 -0
  25. data/emoji/images/1f3ca-1f3fd.png +0 -0
  26. data/emoji/images/1f3ca-1f3fe.png +0 -0
  27. data/emoji/images/1f3ca-1f3ff.png +0 -0
  28. data/emoji/images/1f3ca.png +0 -0
  29. data/emoji/images/1f3cb-1f3fb.png +0 -0
  30. data/emoji/images/1f3cb-1f3fc.png +0 -0
  31. data/emoji/images/1f3cb-1f3fd.png +0 -0
  32. data/emoji/images/1f3cb-1f3fe.png +0 -0
  33. data/emoji/images/1f3cb-1f3ff.png +0 -0
  34. data/emoji/images/1f3cb.png +0 -0
  35. data/emoji/images/1f3cc-1f3fb.png +0 -0
  36. data/emoji/images/1f3cc-1f3fc.png +0 -0
  37. data/emoji/images/1f3cc-1f3fd.png +0 -0
  38. data/emoji/images/1f3cc-1f3fe.png +0 -0
  39. data/emoji/images/1f3cc-1f3ff.png +0 -0
  40. data/emoji/images/1f3cc.png +0 -0
  41. data/emoji/images/1f408-200d-2b1b.png +0 -0
  42. data/emoji/images/1f429.png +0 -0
  43. data/emoji/images/1f43b-200d-2744.png +0 -0
  44. data/emoji/images/1f468-1f3fb-200d-1f37c.png +0 -0
  45. data/emoji/images/1f468-1f3fb-200d-1f384.png +0 -0
  46. data/emoji/images/1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  47. data/emoji/images/1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  48. data/emoji/images/1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  49. data/emoji/images/1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  50. data/emoji/images/1f468-1f3fc-200d-1f37c.png +0 -0
  51. data/emoji/images/1f468-1f3fc-200d-1f384.png +0 -0
  52. data/emoji/images/1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  53. data/emoji/images/1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  54. data/emoji/images/1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  55. data/emoji/images/1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  56. data/emoji/images/1f468-1f3fd-200d-1f37c.png +0 -0
  57. data/emoji/images/1f468-1f3fd-200d-1f384.png +0 -0
  58. data/emoji/images/1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  59. data/emoji/images/1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  60. data/emoji/images/1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  61. data/emoji/images/1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  62. data/emoji/images/1f468-1f3fe-200d-1f37c.png +0 -0
  63. data/emoji/images/1f468-1f3fe-200d-1f384.png +0 -0
  64. data/emoji/images/1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  65. data/emoji/images/1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  66. data/emoji/images/1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  67. data/emoji/images/1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  68. data/emoji/images/1f468-1f3ff-200d-1f37c.png +0 -0
  69. data/emoji/images/1f468-1f3ff-200d-1f384.png +0 -0
  70. data/emoji/images/1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  71. data/emoji/images/1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  72. data/emoji/images/1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  73. data/emoji/images/1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  74. data/emoji/images/1f468-200d-1f37c.png +0 -0
  75. data/emoji/images/1f468-200d-1f384.png +0 -0
  76. data/emoji/images/1f469-1f3fb-200d-1f37c.png +0 -0
  77. data/emoji/images/1f469-1f3fb-200d-1f384.png +0 -0
  78. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  79. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  80. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  81. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  82. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc.png +0 -0
  83. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd.png +0 -0
  84. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe.png +0 -0
  85. data/emoji/images/1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff.png +0 -0
  86. data/emoji/images/1f469-1f3fc-200d-1f37c.png +0 -0
  87. data/emoji/images/1f469-1f3fc-200d-1f384.png +0 -0
  88. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  89. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  90. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  91. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  92. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb.png +0 -0
  93. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd.png +0 -0
  94. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe.png +0 -0
  95. data/emoji/images/1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff.png +0 -0
  96. data/emoji/images/1f469-1f3fd-200d-1f37c.png +0 -0
  97. data/emoji/images/1f469-1f3fd-200d-1f384.png +0 -0
  98. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  99. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  100. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  101. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  102. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb.png +0 -0
  103. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc.png +0 -0
  104. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe.png +0 -0
  105. data/emoji/images/1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff.png +0 -0
  106. data/emoji/images/1f469-1f3fe-200d-1f37c.png +0 -0
  107. data/emoji/images/1f469-1f3fe-200d-1f384.png +0 -0
  108. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  109. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  110. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  111. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff.png +0 -0
  112. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb.png +0 -0
  113. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc.png +0 -0
  114. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd.png +0 -0
  115. data/emoji/images/1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff.png +0 -0
  116. data/emoji/images/1f469-1f3ff-200d-1f37c.png +0 -0
  117. data/emoji/images/1f469-1f3ff-200d-1f384.png +0 -0
  118. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb.png +0 -0
  119. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc.png +0 -0
  120. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd.png +0 -0
  121. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe.png +0 -0
  122. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb.png +0 -0
  123. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc.png +0 -0
  124. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd.png +0 -0
  125. data/emoji/images/1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe.png +0 -0
  126. data/emoji/images/1f469-200d-1f37c.png +0 -0
  127. data/emoji/images/1f469-200d-1f384.png +0 -0
  128. data/emoji/images/1f46a.png +0 -0
  129. data/emoji/images/1f46b-1f3fb.png +0 -0
  130. data/emoji/images/1f46b-1f3fc.png +0 -0
  131. data/emoji/images/1f46b-1f3fd.png +0 -0
  132. data/emoji/images/1f46b-1f3fe.png +0 -0
  133. data/emoji/images/1f46b-1f3ff.png +0 -0
  134. data/emoji/images/1f46b.png +0 -0
  135. data/emoji/images/1f46c-1f3fb.png +0 -0
  136. data/emoji/images/1f46c-1f3fc.png +0 -0
  137. data/emoji/images/1f46c-1f3fd.png +0 -0
  138. data/emoji/images/1f46c-1f3fe.png +0 -0
  139. data/emoji/images/1f46c-1f3ff.png +0 -0
  140. data/emoji/images/1f46c.png +0 -0
  141. data/emoji/images/1f46d-1f3fb.png +0 -0
  142. data/emoji/images/1f46d-1f3fc.png +0 -0
  143. data/emoji/images/1f46d-1f3fd.png +0 -0
  144. data/emoji/images/1f46d-1f3fe.png +0 -0
  145. data/emoji/images/1f46d-1f3ff.png +0 -0
  146. data/emoji/images/1f46d.png +0 -0
  147. data/emoji/images/1f46e-1f3fb.png +0 -0
  148. data/emoji/images/1f46e-1f3fc.png +0 -0
  149. data/emoji/images/1f46e-1f3fd.png +0 -0
  150. data/emoji/images/1f46e-1f3fe.png +0 -0
  151. data/emoji/images/1f46e-1f3ff.png +0 -0
  152. data/emoji/images/1f46e.png +0 -0
  153. data/emoji/images/1f46f-200d-2640.png +0 -0
  154. data/emoji/images/1f46f-200d-2642.png +0 -0
  155. data/emoji/images/1f46f.png +0 -0
  156. data/emoji/images/1f470-1f3fb-200d-2640.png +0 -0
  157. data/emoji/images/1f470-1f3fb-200d-2642.png +0 -0
  158. data/emoji/images/1f470-1f3fb.png +0 -0
  159. data/emoji/images/1f470-1f3fc-200d-2640.png +0 -0
  160. data/emoji/images/1f470-1f3fc-200d-2642.png +0 -0
  161. data/emoji/images/1f470-1f3fc.png +0 -0
  162. data/emoji/images/1f470-1f3fd-200d-2640.png +0 -0
  163. data/emoji/images/1f470-1f3fd-200d-2642.png +0 -0
  164. data/emoji/images/1f470-1f3fd.png +0 -0
  165. data/emoji/images/1f470-1f3fe-200d-2640.png +0 -0
  166. data/emoji/images/1f470-1f3fe-200d-2642.png +0 -0
  167. data/emoji/images/1f470-1f3fe.png +0 -0
  168. data/emoji/images/1f470-1f3ff-200d-2640.png +0 -0
  169. data/emoji/images/1f470-1f3ff-200d-2642.png +0 -0
  170. data/emoji/images/1f470-1f3ff.png +0 -0
  171. data/emoji/images/1f470-200d-2640.png +0 -0
  172. data/emoji/images/1f470-200d-2642.png +0 -0
  173. data/emoji/images/1f470.png +0 -0
  174. data/emoji/images/1f471-1f3fb.png +0 -0
  175. data/emoji/images/1f471-1f3fc.png +0 -0
  176. data/emoji/images/1f471-1f3fd.png +0 -0
  177. data/emoji/images/1f471-1f3fe.png +0 -0
  178. data/emoji/images/1f471-1f3ff.png +0 -0
  179. data/emoji/images/1f471.png +0 -0
  180. data/emoji/images/1f473-1f3fb.png +0 -0
  181. data/emoji/images/1f473-1f3fc.png +0 -0
  182. data/emoji/images/1f473-1f3fd.png +0 -0
  183. data/emoji/images/1f473-1f3fe.png +0 -0
  184. data/emoji/images/1f473-1f3ff.png +0 -0
  185. data/emoji/images/1f473.png +0 -0
  186. data/emoji/images/1f477-1f3fb.png +0 -0
  187. data/emoji/images/1f477-1f3fc.png +0 -0
  188. data/emoji/images/1f477-1f3fd.png +0 -0
  189. data/emoji/images/1f477-1f3fe.png +0 -0
  190. data/emoji/images/1f477-1f3ff.png +0 -0
  191. data/emoji/images/1f477.png +0 -0
  192. data/emoji/images/1f481-1f3fb.png +0 -0
  193. data/emoji/images/1f481-1f3fc.png +0 -0
  194. data/emoji/images/1f481-1f3fd.png +0 -0
  195. data/emoji/images/1f481-1f3fe.png +0 -0
  196. data/emoji/images/1f481-1f3ff.png +0 -0
  197. data/emoji/images/1f481.png +0 -0
  198. data/emoji/images/1f482-1f3fb.png +0 -0
  199. data/emoji/images/1f482-1f3fc.png +0 -0
  200. data/emoji/images/1f482-1f3fd.png +0 -0
  201. data/emoji/images/1f482-1f3fe.png +0 -0
  202. data/emoji/images/1f482-1f3ff.png +0 -0
  203. data/emoji/images/1f482.png +0 -0
  204. data/emoji/images/1f486-1f3fb.png +0 -0
  205. data/emoji/images/1f486-1f3fc.png +0 -0
  206. data/emoji/images/1f486-1f3fd.png +0 -0
  207. data/emoji/images/1f486-1f3fe.png +0 -0
  208. data/emoji/images/1f486-1f3ff.png +0 -0
  209. data/emoji/images/1f486.png +0 -0
  210. data/emoji/images/1f487-1f3fb.png +0 -0
  211. data/emoji/images/1f487-1f3fc.png +0 -0
  212. data/emoji/images/1f487-1f3fd.png +0 -0
  213. data/emoji/images/1f487-1f3fe.png +0 -0
  214. data/emoji/images/1f487-1f3ff.png +0 -0
  215. data/emoji/images/1f487.png +0 -0
  216. data/emoji/images/1f48f.png +0 -0
  217. data/emoji/images/1f491.png +0 -0
  218. data/emoji/images/1f4aa-1f3fb.png +0 -0
  219. data/emoji/images/1f4aa-1f3fc.png +0 -0
  220. data/emoji/images/1f4aa-1f3fd.png +0 -0
  221. data/emoji/images/1f4aa-1f3fe.png +0 -0
  222. data/emoji/images/1f4aa-1f3ff.png +0 -0
  223. data/emoji/images/1f4aa.png +0 -0
  224. data/emoji/images/1f4b4.png +0 -0
  225. data/emoji/images/1f4b5.png +0 -0
  226. data/emoji/images/1f4b6.png +0 -0
  227. data/emoji/images/1f4b7.png +0 -0
  228. data/emoji/images/1f4b8.png +0 -0
  229. data/emoji/images/1f4ba.png +0 -0
  230. data/emoji/images/1f574-1f3fb.png +0 -0
  231. data/emoji/images/1f574-1f3fc.png +0 -0
  232. data/emoji/images/1f574-1f3fd.png +0 -0
  233. data/emoji/images/1f574-1f3fe.png +0 -0
  234. data/emoji/images/1f574-1f3ff.png +0 -0
  235. data/emoji/images/1f574.png +0 -0
  236. data/emoji/images/1f575-1f3fb.png +0 -0
  237. data/emoji/images/1f575-1f3fc.png +0 -0
  238. data/emoji/images/1f575-1f3fd.png +0 -0
  239. data/emoji/images/1f575-1f3fe.png +0 -0
  240. data/emoji/images/1f575-1f3ff.png +0 -0
  241. data/emoji/images/1f575.png +0 -0
  242. data/emoji/images/1f5e1.png +0 -0
  243. data/emoji/images/1f60b.png +0 -0
  244. data/emoji/images/1f61b.png +0 -0
  245. data/emoji/images/1f61c.png +0 -0
  246. data/emoji/images/1f61d.png +0 -0
  247. data/emoji/images/1f633.png +0 -0
  248. data/emoji/images/1f645-1f3fb.png +0 -0
  249. data/emoji/images/1f645-1f3fc.png +0 -0
  250. data/emoji/images/1f645-1f3fd.png +0 -0
  251. data/emoji/images/1f645-1f3fe.png +0 -0
  252. data/emoji/images/1f645-1f3ff.png +0 -0
  253. data/emoji/images/1f645.png +0 -0
  254. data/emoji/images/1f646-1f3fb.png +0 -0
  255. data/emoji/images/1f646-1f3fc.png +0 -0
  256. data/emoji/images/1f646-1f3fd.png +0 -0
  257. data/emoji/images/1f646-1f3fe.png +0 -0
  258. data/emoji/images/1f646-1f3ff.png +0 -0
  259. data/emoji/images/1f646.png +0 -0
  260. data/emoji/images/1f647-1f3fb.png +0 -0
  261. data/emoji/images/1f647-1f3fc.png +0 -0
  262. data/emoji/images/1f647-1f3fd.png +0 -0
  263. data/emoji/images/1f647-1f3fe.png +0 -0
  264. data/emoji/images/1f647-1f3ff.png +0 -0
  265. data/emoji/images/1f647.png +0 -0
  266. data/emoji/images/1f64b-1f3fb.png +0 -0
  267. data/emoji/images/1f64b-1f3fc.png +0 -0
  268. data/emoji/images/1f64b-1f3fd.png +0 -0
  269. data/emoji/images/1f64b-1f3fe.png +0 -0
  270. data/emoji/images/1f64b-1f3ff.png +0 -0
  271. data/emoji/images/1f64b.png +0 -0
  272. data/emoji/images/1f64d-1f3fb.png +0 -0
  273. data/emoji/images/1f64d-1f3fc.png +0 -0
  274. data/emoji/images/1f64d-1f3fd.png +0 -0
  275. data/emoji/images/1f64d-1f3fe.png +0 -0
  276. data/emoji/images/1f64d-1f3ff.png +0 -0
  277. data/emoji/images/1f64d.png +0 -0
  278. data/emoji/images/1f64e-1f3fb.png +0 -0
  279. data/emoji/images/1f64e-1f3fc.png +0 -0
  280. data/emoji/images/1f64e-1f3fd.png +0 -0
  281. data/emoji/images/1f64e-1f3fe.png +0 -0
  282. data/emoji/images/1f64e-1f3ff.png +0 -0
  283. data/emoji/images/1f64e.png +0 -0
  284. data/emoji/images/1f6a3-1f3fb.png +0 -0
  285. data/emoji/images/1f6a3-1f3fc.png +0 -0
  286. data/emoji/images/1f6a3-1f3fd.png +0 -0
  287. data/emoji/images/1f6a3-1f3fe.png +0 -0
  288. data/emoji/images/1f6a3-1f3ff.png +0 -0
  289. data/emoji/images/1f6a3.png +0 -0
  290. data/emoji/images/1f6b4-1f3fb.png +0 -0
  291. data/emoji/images/1f6b4-1f3fc.png +0 -0
  292. data/emoji/images/1f6b4-1f3fd.png +0 -0
  293. data/emoji/images/1f6b4-1f3fe.png +0 -0
  294. data/emoji/images/1f6b4-1f3ff.png +0 -0
  295. data/emoji/images/1f6b4.png +0 -0
  296. data/emoji/images/1f6b5-1f3fb.png +0 -0
  297. data/emoji/images/1f6b5-1f3fc.png +0 -0
  298. data/emoji/images/1f6b5-1f3fd.png +0 -0
  299. data/emoji/images/1f6b5-1f3fe.png +0 -0
  300. data/emoji/images/1f6b5-1f3ff.png +0 -0
  301. data/emoji/images/1f6b5.png +0 -0
  302. data/emoji/images/1f6b6-1f3fb.png +0 -0
  303. data/emoji/images/1f6b6-1f3fc.png +0 -0
  304. data/emoji/images/1f6b6-1f3fd.png +0 -0
  305. data/emoji/images/1f6b6-1f3fe.png +0 -0
  306. data/emoji/images/1f6b6-1f3ff.png +0 -0
  307. data/emoji/images/1f6b6.png +0 -0
  308. data/emoji/images/1f6d6.png +0 -0
  309. data/emoji/images/1f6d7.png +0 -0
  310. data/emoji/images/1f6fb.png +0 -0
  311. data/emoji/images/1f6fc.png +0 -0
  312. data/emoji/images/1f90c-1f3fb.png +0 -0
  313. data/emoji/images/1f90c-1f3fc.png +0 -0
  314. data/emoji/images/1f90c-1f3fd.png +0 -0
  315. data/emoji/images/1f90c-1f3fe.png +0 -0
  316. data/emoji/images/1f90c-1f3ff.png +0 -0
  317. data/emoji/images/1f90c.png +0 -0
  318. data/emoji/images/1f926-1f3fb.png +0 -0
  319. data/emoji/images/1f926-1f3fc.png +0 -0
  320. data/emoji/images/1f926-1f3fd.png +0 -0
  321. data/emoji/images/1f926-1f3fe.png +0 -0
  322. data/emoji/images/1f926-1f3ff.png +0 -0
  323. data/emoji/images/1f926.png +0 -0
  324. data/emoji/images/1f92f.png +0 -0
  325. data/emoji/images/1f933.png +0 -0
  326. data/emoji/images/1f935-1f3fb.png +0 -0
  327. data/emoji/images/1f935-1f3fc.png +0 -0
  328. data/emoji/images/1f935-1f3fd.png +0 -0
  329. data/emoji/images/1f935-1f3fe.png +0 -0
  330. data/emoji/images/1f935-1f3ff.png +0 -0
  331. data/emoji/images/1f935.png +0 -0
  332. data/emoji/images/1f937-1f3fb.png +0 -0
  333. data/emoji/images/1f937-1f3fc.png +0 -0
  334. data/emoji/images/1f937-1f3fd.png +0 -0
  335. data/emoji/images/1f937-1f3fe.png +0 -0
  336. data/emoji/images/1f937-1f3ff.png +0 -0
  337. data/emoji/images/1f937.png +0 -0
  338. data/emoji/images/1f938-1f3fb.png +0 -0
  339. data/emoji/images/1f938-1f3fc.png +0 -0
  340. data/emoji/images/1f938-1f3fd.png +0 -0
  341. data/emoji/images/1f938-1f3fe.png +0 -0
  342. data/emoji/images/1f938-1f3ff.png +0 -0
  343. data/emoji/images/1f938.png +0 -0
  344. data/emoji/images/1f939-1f3fb.png +0 -0
  345. data/emoji/images/1f939-1f3fc.png +0 -0
  346. data/emoji/images/1f939-1f3fd.png +0 -0
  347. data/emoji/images/1f939-1f3fe.png +0 -0
  348. data/emoji/images/1f939-1f3ff.png +0 -0
  349. data/emoji/images/1f939.png +0 -0
  350. data/emoji/images/1f93c.png +0 -0
  351. data/emoji/images/1f93d-1f3fb.png +0 -0
  352. data/emoji/images/1f93d-1f3fc.png +0 -0
  353. data/emoji/images/1f93d-1f3fd.png +0 -0
  354. data/emoji/images/1f93d-1f3fe.png +0 -0
  355. data/emoji/images/1f93d-1f3ff.png +0 -0
  356. data/emoji/images/1f93d.png +0 -0
  357. data/emoji/images/1f93e-1f3fb.png +0 -0
  358. data/emoji/images/1f93e-1f3fc.png +0 -0
  359. data/emoji/images/1f93e-1f3fd.png +0 -0
  360. data/emoji/images/1f93e-1f3fe.png +0 -0
  361. data/emoji/images/1f93e-1f3ff.png +0 -0
  362. data/emoji/images/1f93e.png +0 -0
  363. data/emoji/images/1f94d.png +0 -0
  364. data/emoji/images/1f972.png +0 -0
  365. data/emoji/images/1f977-1f3fb.png +0 -0
  366. data/emoji/images/1f977-1f3fc.png +0 -0
  367. data/emoji/images/1f977-1f3fd.png +0 -0
  368. data/emoji/images/1f977-1f3fe.png +0 -0
  369. data/emoji/images/1f977-1f3ff.png +0 -0
  370. data/emoji/images/1f977.png +0 -0
  371. data/emoji/images/1f978.png +0 -0
  372. data/emoji/images/1f97b.png +0 -0
  373. data/emoji/images/1f9a3.png +0 -0
  374. data/emoji/images/1f9a4.png +0 -0
  375. data/emoji/images/1f9ab.png +0 -0
  376. data/emoji/images/1f9ac.png +0 -0
  377. data/emoji/images/1f9ad.png +0 -0
  378. data/emoji/images/1f9b8-1f3fb-200d-2640.png +0 -0
  379. data/emoji/images/1f9b8-1f3fb-200d-2642.png +0 -0
  380. data/emoji/images/1f9b8-1f3fb.png +0 -0
  381. data/emoji/images/1f9b8-1f3fc-200d-2640.png +0 -0
  382. data/emoji/images/1f9b8-1f3fc-200d-2642.png +0 -0
  383. data/emoji/images/1f9b8-1f3fc.png +0 -0
  384. data/emoji/images/1f9b8-1f3fd-200d-2640.png +0 -0
  385. data/emoji/images/1f9b8-1f3fd-200d-2642.png +0 -0
  386. data/emoji/images/1f9b8-1f3fd.png +0 -0
  387. data/emoji/images/1f9b8-1f3fe-200d-2640.png +0 -0
  388. data/emoji/images/1f9b8-1f3fe-200d-2642.png +0 -0
  389. data/emoji/images/1f9b8-1f3fe.png +0 -0
  390. data/emoji/images/1f9b8-1f3ff-200d-2640.png +0 -0
  391. data/emoji/images/1f9b8-1f3ff-200d-2642.png +0 -0
  392. data/emoji/images/1f9b8-1f3ff.png +0 -0
  393. data/emoji/images/1f9b8-200d-2640.png +0 -0
  394. data/emoji/images/1f9b8-200d-2642.png +0 -0
  395. data/emoji/images/1f9b8.png +0 -0
  396. data/emoji/images/1f9b9-1f3fb-200d-2640.png +0 -0
  397. data/emoji/images/1f9b9-1f3fb-200d-2642.png +0 -0
  398. data/emoji/images/1f9b9-1f3fb.png +0 -0
  399. data/emoji/images/1f9b9-1f3fc-200d-2640.png +0 -0
  400. data/emoji/images/1f9b9-1f3fc-200d-2642.png +0 -0
  401. data/emoji/images/1f9b9-1f3fc.png +0 -0
  402. data/emoji/images/1f9b9-1f3fd-200d-2640.png +0 -0
  403. data/emoji/images/1f9b9-1f3fd-200d-2642.png +0 -0
  404. data/emoji/images/1f9b9-1f3fd.png +0 -0
  405. data/emoji/images/1f9b9-1f3fe-200d-2640.png +0 -0
  406. data/emoji/images/1f9b9-1f3fe-200d-2642.png +0 -0
  407. data/emoji/images/1f9b9-1f3fe.png +0 -0
  408. data/emoji/images/1f9b9-1f3ff-200d-2640.png +0 -0
  409. data/emoji/images/1f9b9-1f3ff-200d-2642.png +0 -0
  410. data/emoji/images/1f9b9-1f3ff.png +0 -0
  411. data/emoji/images/1f9b9-200d-2640.png +0 -0
  412. data/emoji/images/1f9b9-200d-2642.png +0 -0
  413. data/emoji/images/1f9b9.png +0 -0
  414. data/emoji/images/1f9cb.png +0 -0
  415. data/emoji/images/1f9cd-1f3fb.png +0 -0
  416. data/emoji/images/1f9cd-1f3fc.png +0 -0
  417. data/emoji/images/1f9cd-1f3fd.png +0 -0
  418. data/emoji/images/1f9cd-1f3fe.png +0 -0
  419. data/emoji/images/1f9cd-1f3ff.png +0 -0
  420. data/emoji/images/1f9cd.png +0 -0
  421. data/emoji/images/1f9ce-1f3fb.png +0 -0
  422. data/emoji/images/1f9ce-1f3fc.png +0 -0
  423. data/emoji/images/1f9ce-1f3fd.png +0 -0
  424. data/emoji/images/1f9ce-1f3fe.png +0 -0
  425. data/emoji/images/1f9ce-1f3ff.png +0 -0
  426. data/emoji/images/1f9ce.png +0 -0
  427. data/emoji/images/1f9cf-1f3fb.png +0 -0
  428. data/emoji/images/1f9cf-1f3fc.png +0 -0
  429. data/emoji/images/1f9cf-1f3fd.png +0 -0
  430. data/emoji/images/1f9cf-1f3fe.png +0 -0
  431. data/emoji/images/1f9cf-1f3ff.png +0 -0
  432. data/emoji/images/1f9cf.png +0 -0
  433. data/emoji/images/1f9d1-1f3fb-200d-1f33e.png +0 -0
  434. data/emoji/images/1f9d1-1f3fb-200d-1f373.png +0 -0
  435. data/emoji/images/1f9d1-1f3fb-200d-1f37c.png +0 -0
  436. data/emoji/images/1f9d1-1f3fb-200d-1f384.png +0 -0
  437. data/emoji/images/1f9d1-1f3fb-200d-1f393.png +0 -0
  438. data/emoji/images/1f9d1-1f3fb-200d-1f3a4.png +0 -0
  439. data/emoji/images/1f9d1-1f3fb-200d-1f3a8.png +0 -0
  440. data/emoji/images/1f9d1-1f3fb-200d-1f3eb.png +0 -0
  441. data/emoji/images/1f9d1-1f3fb-200d-1f3ed.png +0 -0
  442. data/emoji/images/1f9d1-1f3fb-200d-1f4bb.png +0 -0
  443. data/emoji/images/1f9d1-1f3fb-200d-1f4bc.png +0 -0
  444. data/emoji/images/1f9d1-1f3fb-200d-1f527.png +0 -0
  445. data/emoji/images/1f9d1-1f3fb-200d-1f52c.png +0 -0
  446. data/emoji/images/1f9d1-1f3fb-200d-1f680.png +0 -0
  447. data/emoji/images/1f9d1-1f3fb-200d-1f692.png +0 -0
  448. data/emoji/images/1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb.png +0 -0
  449. data/emoji/images/1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc.png +0 -0
  450. data/emoji/images/1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd.png +0 -0
  451. data/emoji/images/1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe.png +0 -0
  452. data/emoji/images/1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff.png +0 -0
  453. data/emoji/images/1f9d1-1f3fb-200d-1f9af.png +0 -0
  454. data/emoji/images/1f9d1-1f3fb-200d-1f9b0.png +0 -0
  455. data/emoji/images/1f9d1-1f3fb-200d-1f9b1.png +0 -0
  456. data/emoji/images/1f9d1-1f3fb-200d-1f9b2.png +0 -0
  457. data/emoji/images/1f9d1-1f3fb-200d-1f9b3.png +0 -0
  458. data/emoji/images/1f9d1-1f3fb-200d-1f9bc.png +0 -0
  459. data/emoji/images/1f9d1-1f3fb-200d-1f9bd.png +0 -0
  460. data/emoji/images/1f9d1-1f3fb-200d-2695.png +0 -0
  461. data/emoji/images/1f9d1-1f3fb-200d-2696.png +0 -0
  462. data/emoji/images/1f9d1-1f3fb-200d-2708.png +0 -0
  463. data/emoji/images/1f9d1-1f3fb.png +0 -0
  464. data/emoji/images/1f9d1-1f3fc-200d-1f33e.png +0 -0
  465. data/emoji/images/1f9d1-1f3fc-200d-1f373.png +0 -0
  466. data/emoji/images/1f9d1-1f3fc-200d-1f37c.png +0 -0
  467. data/emoji/images/1f9d1-1f3fc-200d-1f384.png +0 -0
  468. data/emoji/images/1f9d1-1f3fc-200d-1f393.png +0 -0
  469. data/emoji/images/1f9d1-1f3fc-200d-1f3a4.png +0 -0
  470. data/emoji/images/1f9d1-1f3fc-200d-1f3a8.png +0 -0
  471. data/emoji/images/1f9d1-1f3fc-200d-1f3eb.png +0 -0
  472. data/emoji/images/1f9d1-1f3fc-200d-1f3ed.png +0 -0
  473. data/emoji/images/1f9d1-1f3fc-200d-1f4bb.png +0 -0
  474. data/emoji/images/1f9d1-1f3fc-200d-1f4bc.png +0 -0
  475. data/emoji/images/1f9d1-1f3fc-200d-1f527.png +0 -0
  476. data/emoji/images/1f9d1-1f3fc-200d-1f52c.png +0 -0
  477. data/emoji/images/1f9d1-1f3fc-200d-1f680.png +0 -0
  478. data/emoji/images/1f9d1-1f3fc-200d-1f692.png +0 -0
  479. data/emoji/images/1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb.png +0 -0
  480. data/emoji/images/1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc.png +0 -0
  481. data/emoji/images/1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd.png +0 -0
  482. data/emoji/images/1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe.png +0 -0
  483. data/emoji/images/1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff.png +0 -0
  484. data/emoji/images/1f9d1-1f3fc-200d-1f9af.png +0 -0
  485. data/emoji/images/1f9d1-1f3fc-200d-1f9b0.png +0 -0
  486. data/emoji/images/1f9d1-1f3fc-200d-1f9b1.png +0 -0
  487. data/emoji/images/1f9d1-1f3fc-200d-1f9b2.png +0 -0
  488. data/emoji/images/1f9d1-1f3fc-200d-1f9b3.png +0 -0
  489. data/emoji/images/1f9d1-1f3fc-200d-1f9bc.png +0 -0
  490. data/emoji/images/1f9d1-1f3fc-200d-1f9bd.png +0 -0
  491. data/emoji/images/1f9d1-1f3fc-200d-2695.png +0 -0
  492. data/emoji/images/1f9d1-1f3fc-200d-2696.png +0 -0
  493. data/emoji/images/1f9d1-1f3fc-200d-2708.png +0 -0
  494. data/emoji/images/1f9d1-1f3fc.png +0 -0
  495. data/emoji/images/1f9d1-1f3fd-200d-1f33e.png +0 -0
  496. data/emoji/images/1f9d1-1f3fd-200d-1f373.png +0 -0
  497. data/emoji/images/1f9d1-1f3fd-200d-1f37c.png +0 -0
  498. data/emoji/images/1f9d1-1f3fd-200d-1f384.png +0 -0
  499. data/emoji/images/1f9d1-1f3fd-200d-1f393.png +0 -0
  500. data/emoji/images/1f9d1-1f3fd-200d-1f3a4.png +0 -0
  501. data/emoji/images/1f9d1-1f3fd-200d-1f3a8.png +0 -0
  502. data/emoji/images/1f9d1-1f3fd-200d-1f3eb.png +0 -0
  503. data/emoji/images/1f9d1-1f3fd-200d-1f3ed.png +0 -0
  504. data/emoji/images/1f9d1-1f3fd-200d-1f4bb.png +0 -0
  505. data/emoji/images/1f9d1-1f3fd-200d-1f4bc.png +0 -0
  506. data/emoji/images/1f9d1-1f3fd-200d-1f527.png +0 -0
  507. data/emoji/images/1f9d1-1f3fd-200d-1f52c.png +0 -0
  508. data/emoji/images/1f9d1-1f3fd-200d-1f680.png +0 -0
  509. data/emoji/images/1f9d1-1f3fd-200d-1f692.png +0 -0
  510. data/emoji/images/1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb.png +0 -0
  511. data/emoji/images/1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc.png +0 -0
  512. data/emoji/images/1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd.png +0 -0
  513. data/emoji/images/1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe.png +0 -0
  514. data/emoji/images/1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff.png +0 -0
  515. data/emoji/images/1f9d1-1f3fd-200d-1f9af.png +0 -0
  516. data/emoji/images/1f9d1-1f3fd-200d-1f9b0.png +0 -0
  517. data/emoji/images/1f9d1-1f3fd-200d-1f9b1.png +0 -0
  518. data/emoji/images/1f9d1-1f3fd-200d-1f9b2.png +0 -0
  519. data/emoji/images/1f9d1-1f3fd-200d-1f9b3.png +0 -0
  520. data/emoji/images/1f9d1-1f3fd-200d-1f9bc.png +0 -0
  521. data/emoji/images/1f9d1-1f3fd-200d-1f9bd.png +0 -0
  522. data/emoji/images/1f9d1-1f3fd-200d-2695.png +0 -0
  523. data/emoji/images/1f9d1-1f3fd-200d-2696.png +0 -0
  524. data/emoji/images/1f9d1-1f3fd-200d-2708.png +0 -0
  525. data/emoji/images/1f9d1-1f3fd.png +0 -0
  526. data/emoji/images/1f9d1-1f3fe-200d-1f33e.png +0 -0
  527. data/emoji/images/1f9d1-1f3fe-200d-1f373.png +0 -0
  528. data/emoji/images/1f9d1-1f3fe-200d-1f37c.png +0 -0
  529. data/emoji/images/1f9d1-1f3fe-200d-1f384.png +0 -0
  530. data/emoji/images/1f9d1-1f3fe-200d-1f393.png +0 -0
  531. data/emoji/images/1f9d1-1f3fe-200d-1f3a4.png +0 -0
  532. data/emoji/images/1f9d1-1f3fe-200d-1f3a8.png +0 -0
  533. data/emoji/images/1f9d1-1f3fe-200d-1f3eb.png +0 -0
  534. data/emoji/images/1f9d1-1f3fe-200d-1f3ed.png +0 -0
  535. data/emoji/images/1f9d1-1f3fe-200d-1f4bb.png +0 -0
  536. data/emoji/images/1f9d1-1f3fe-200d-1f4bc.png +0 -0
  537. data/emoji/images/1f9d1-1f3fe-200d-1f527.png +0 -0
  538. data/emoji/images/1f9d1-1f3fe-200d-1f52c.png +0 -0
  539. data/emoji/images/1f9d1-1f3fe-200d-1f680.png +0 -0
  540. data/emoji/images/1f9d1-1f3fe-200d-1f692.png +0 -0
  541. data/emoji/images/1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb.png +0 -0
  542. data/emoji/images/1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc.png +0 -0
  543. data/emoji/images/1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd.png +0 -0
  544. data/emoji/images/1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe.png +0 -0
  545. data/emoji/images/1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff.png +0 -0
  546. data/emoji/images/1f9d1-1f3fe-200d-1f9af.png +0 -0
  547. data/emoji/images/1f9d1-1f3fe-200d-1f9b0.png +0 -0
  548. data/emoji/images/1f9d1-1f3fe-200d-1f9b1.png +0 -0
  549. data/emoji/images/1f9d1-1f3fe-200d-1f9b2.png +0 -0
  550. data/emoji/images/1f9d1-1f3fe-200d-1f9b3.png +0 -0
  551. data/emoji/images/1f9d1-1f3fe-200d-1f9bc.png +0 -0
  552. data/emoji/images/1f9d1-1f3fe-200d-1f9bd.png +0 -0
  553. data/emoji/images/1f9d1-1f3fe-200d-2695.png +0 -0
  554. data/emoji/images/1f9d1-1f3fe-200d-2696.png +0 -0
  555. data/emoji/images/1f9d1-1f3fe-200d-2708.png +0 -0
  556. data/emoji/images/1f9d1-1f3fe.png +0 -0
  557. data/emoji/images/1f9d1-1f3ff-200d-1f33e.png +0 -0
  558. data/emoji/images/1f9d1-1f3ff-200d-1f373.png +0 -0
  559. data/emoji/images/1f9d1-1f3ff-200d-1f37c.png +0 -0
  560. data/emoji/images/1f9d1-1f3ff-200d-1f384.png +0 -0
  561. data/emoji/images/1f9d1-1f3ff-200d-1f393.png +0 -0
  562. data/emoji/images/1f9d1-1f3ff-200d-1f3a4.png +0 -0
  563. data/emoji/images/1f9d1-1f3ff-200d-1f3a8.png +0 -0
  564. data/emoji/images/1f9d1-1f3ff-200d-1f3eb.png +0 -0
  565. data/emoji/images/1f9d1-1f3ff-200d-1f3ed.png +0 -0
  566. data/emoji/images/1f9d1-1f3ff-200d-1f4bb.png +0 -0
  567. data/emoji/images/1f9d1-1f3ff-200d-1f4bc.png +0 -0
  568. data/emoji/images/1f9d1-1f3ff-200d-1f527.png +0 -0
  569. data/emoji/images/1f9d1-1f3ff-200d-1f52c.png +0 -0
  570. data/emoji/images/1f9d1-1f3ff-200d-1f680.png +0 -0
  571. data/emoji/images/1f9d1-1f3ff-200d-1f692.png +0 -0
  572. data/emoji/images/1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb.png +0 -0
  573. data/emoji/images/1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc.png +0 -0
  574. data/emoji/images/1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd.png +0 -0
  575. data/emoji/images/1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe.png +0 -0
  576. data/emoji/images/1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff.png +0 -0
  577. data/emoji/images/1f9d1-1f3ff-200d-1f9af.png +0 -0
  578. data/emoji/images/1f9d1-1f3ff-200d-1f9b0.png +0 -0
  579. data/emoji/images/1f9d1-1f3ff-200d-1f9b1.png +0 -0
  580. data/emoji/images/1f9d1-1f3ff-200d-1f9b2.png +0 -0
  581. data/emoji/images/1f9d1-1f3ff-200d-1f9b3.png +0 -0
  582. data/emoji/images/1f9d1-1f3ff-200d-1f9bc.png +0 -0
  583. data/emoji/images/1f9d1-1f3ff-200d-1f9bd.png +0 -0
  584. data/emoji/images/1f9d1-1f3ff-200d-2695.png +0 -0
  585. data/emoji/images/1f9d1-1f3ff-200d-2696.png +0 -0
  586. data/emoji/images/1f9d1-1f3ff-200d-2708.png +0 -0
  587. data/emoji/images/1f9d1-1f3ff.png +0 -0
  588. data/emoji/images/1f9d1-200d-1f33e.png +0 -0
  589. data/emoji/images/1f9d1-200d-1f373.png +0 -0
  590. data/emoji/images/1f9d1-200d-1f37c.png +0 -0
  591. data/emoji/images/1f9d1-200d-1f384.png +0 -0
  592. data/emoji/images/1f9d1-200d-1f393.png +0 -0
  593. data/emoji/images/1f9d1-200d-1f3a4.png +0 -0
  594. data/emoji/images/1f9d1-200d-1f3a8.png +0 -0
  595. data/emoji/images/1f9d1-200d-1f3eb.png +0 -0
  596. data/emoji/images/1f9d1-200d-1f3ed.png +0 -0
  597. data/emoji/images/1f9d1-200d-1f4bb.png +0 -0
  598. data/emoji/images/1f9d1-200d-1f4bc.png +0 -0
  599. data/emoji/images/1f9d1-200d-1f527.png +0 -0
  600. data/emoji/images/1f9d1-200d-1f52c.png +0 -0
  601. data/emoji/images/1f9d1-200d-1f680.png +0 -0
  602. data/emoji/images/1f9d1-200d-1f692.png +0 -0
  603. data/emoji/images/1f9d1-200d-1f91d-200d-1f9d1.png +0 -0
  604. data/emoji/images/1f9d1-200d-1f9af.png +0 -0
  605. data/emoji/images/1f9d1-200d-1f9b0.png +0 -0
  606. data/emoji/images/1f9d1-200d-1f9b1.png +0 -0
  607. data/emoji/images/1f9d1-200d-1f9b2.png +0 -0
  608. data/emoji/images/1f9d1-200d-1f9b3.png +0 -0
  609. data/emoji/images/1f9d1-200d-1f9bc.png +0 -0
  610. data/emoji/images/1f9d1-200d-1f9bd.png +0 -0
  611. data/emoji/images/1f9d1-200d-2695.png +0 -0
  612. data/emoji/images/1f9d1-200d-2696.png +0 -0
  613. data/emoji/images/1f9d1-200d-2708.png +0 -0
  614. data/emoji/images/1f9d1.png +0 -0
  615. data/emoji/images/1f9d2-1f3fb.png +0 -0
  616. data/emoji/images/1f9d2-1f3fc.png +0 -0
  617. data/emoji/images/1f9d2-1f3fd.png +0 -0
  618. data/emoji/images/1f9d2-1f3fe.png +0 -0
  619. data/emoji/images/1f9d2-1f3ff.png +0 -0
  620. data/emoji/images/1f9d2.png +0 -0
  621. data/emoji/images/1f9d3-1f3fb.png +0 -0
  622. data/emoji/images/1f9d3-1f3fc.png +0 -0
  623. data/emoji/images/1f9d3-1f3fd.png +0 -0
  624. data/emoji/images/1f9d3-1f3fe.png +0 -0
  625. data/emoji/images/1f9d3-1f3ff.png +0 -0
  626. data/emoji/images/1f9d3.png +0 -0
  627. data/emoji/images/1f9d4-1f3fb.png +0 -0
  628. data/emoji/images/1f9d4-1f3fc.png +0 -0
  629. data/emoji/images/1f9d4-1f3fd.png +0 -0
  630. data/emoji/images/1f9d4-1f3fe.png +0 -0
  631. data/emoji/images/1f9d4-1f3ff.png +0 -0
  632. data/emoji/images/1f9d4.png +0 -0
  633. data/emoji/images/1f9d6-1f3fb.png +0 -0
  634. data/emoji/images/1f9d6-1f3fc.png +0 -0
  635. data/emoji/images/1f9d6-1f3fd.png +0 -0
  636. data/emoji/images/1f9d6-1f3fe.png +0 -0
  637. data/emoji/images/1f9d6-1f3ff.png +0 -0
  638. data/emoji/images/1f9d6.png +0 -0
  639. data/emoji/images/1f9d7-1f3fb.png +0 -0
  640. data/emoji/images/1f9d7-1f3fc.png +0 -0
  641. data/emoji/images/1f9d7-1f3fd.png +0 -0
  642. data/emoji/images/1f9d7-1f3fe.png +0 -0
  643. data/emoji/images/1f9d7-1f3ff.png +0 -0
  644. data/emoji/images/1f9d7.png +0 -0
  645. data/emoji/images/1f9d8-1f3fb.png +0 -0
  646. data/emoji/images/1f9d8-1f3fc.png +0 -0
  647. data/emoji/images/1f9d8-1f3fd.png +0 -0
  648. data/emoji/images/1f9d8-1f3fe.png +0 -0
  649. data/emoji/images/1f9d8-1f3ff.png +0 -0
  650. data/emoji/images/1f9d8.png +0 -0
  651. data/emoji/images/1f9d9-1f3fb.png +0 -0
  652. data/emoji/images/1f9d9-1f3fc.png +0 -0
  653. data/emoji/images/1f9d9-1f3fd.png +0 -0
  654. data/emoji/images/1f9d9-1f3fe.png +0 -0
  655. data/emoji/images/1f9d9-1f3ff.png +0 -0
  656. data/emoji/images/1f9d9.png +0 -0
  657. data/emoji/images/1f9da-1f3fb.png +0 -0
  658. data/emoji/images/1f9da-1f3fc.png +0 -0
  659. data/emoji/images/1f9da-1f3fd.png +0 -0
  660. data/emoji/images/1f9da-1f3fe.png +0 -0
  661. data/emoji/images/1f9da-1f3ff.png +0 -0
  662. data/emoji/images/1f9da.png +0 -0
  663. data/emoji/images/1f9db-1f3fb.png +0 -0
  664. data/emoji/images/1f9db-1f3fc.png +0 -0
  665. data/emoji/images/1f9db-1f3fd.png +0 -0
  666. data/emoji/images/1f9db-1f3fe.png +0 -0
  667. data/emoji/images/1f9db-1f3ff.png +0 -0
  668. data/emoji/images/1f9db.png +0 -0
  669. data/emoji/images/1f9dc-1f3fb.png +0 -0
  670. data/emoji/images/1f9dc-1f3fc.png +0 -0
  671. data/emoji/images/1f9dc-1f3fd.png +0 -0
  672. data/emoji/images/1f9dc-1f3fe.png +0 -0
  673. data/emoji/images/1f9dc-1f3ff.png +0 -0
  674. data/emoji/images/1f9dc.png +0 -0
  675. data/emoji/images/1f9dd-1f3fb.png +0 -0
  676. data/emoji/images/1f9dd-1f3fc.png +0 -0
  677. data/emoji/images/1f9dd-1f3fd.png +0 -0
  678. data/emoji/images/1f9dd-1f3fe.png +0 -0
  679. data/emoji/images/1f9dd-1f3ff.png +0 -0
  680. data/emoji/images/1f9dd.png +0 -0
  681. data/emoji/images/1f9de.png +0 -0
  682. data/emoji/images/1f9df.png +0 -0
  683. data/emoji/images/1f9e9.png +0 -0
  684. data/emoji/images/1fa74.png +0 -0
  685. data/emoji/images/1fa83.png +0 -0
  686. data/emoji/images/1fa84.png +0 -0
  687. data/emoji/images/1fa85.png +0 -0
  688. data/emoji/images/1fa86.png +0 -0
  689. data/emoji/images/1fa96.png +0 -0
  690. data/emoji/images/1fa97.png +0 -0
  691. data/emoji/images/1fa98.png +0 -0
  692. data/emoji/images/1fa99.png +0 -0
  693. data/emoji/images/1fa9a.png +0 -0
  694. data/emoji/images/1fa9b.png +0 -0
  695. data/emoji/images/1fa9c.png +0 -0
  696. data/emoji/images/1fa9d.png +0 -0
  697. data/emoji/images/1fa9e.png +0 -0
  698. data/emoji/images/1fa9f.png +0 -0
  699. data/emoji/images/1faa0.png +0 -0
  700. data/emoji/images/1faa1.png +0 -0
  701. data/emoji/images/1faa2.png +0 -0
  702. data/emoji/images/1faa3.png +0 -0
  703. data/emoji/images/1faa4.png +0 -0
  704. data/emoji/images/1faa5.png +0 -0
  705. data/emoji/images/1faa6.png +0 -0
  706. data/emoji/images/1faa7.png +0 -0
  707. data/emoji/images/1faa8.png +0 -0
  708. data/emoji/images/1fab0.png +0 -0
  709. data/emoji/images/1fab1.png +0 -0
  710. data/emoji/images/1fab2.png +0 -0
  711. data/emoji/images/1fab3.png +0 -0
  712. data/emoji/images/1fab4.png +0 -0
  713. data/emoji/images/1fab5.png +0 -0
  714. data/emoji/images/1fab6.png +0 -0
  715. data/emoji/images/1fac0.png +0 -0
  716. data/emoji/images/1fac1.png +0 -0
  717. data/emoji/images/1fac2.png +0 -0
  718. data/emoji/images/1fad0.png +0 -0
  719. data/emoji/images/1fad1.png +0 -0
  720. data/emoji/images/1fad2.png +0 -0
  721. data/emoji/images/1fad3.png +0 -0
  722. data/emoji/images/1fad4.png +0 -0
  723. data/emoji/images/1fad5.png +0 -0
  724. data/emoji/images/1fad6.png +0 -0
  725. data/emoji/images/2694.png +0 -0
  726. data/emoji/images/26f9-1f3fb.png +0 -0
  727. data/emoji/images/26f9-1f3fc.png +0 -0
  728. data/emoji/images/26f9-1f3fd.png +0 -0
  729. data/emoji/images/26f9-1f3fe.png +0 -0
  730. data/emoji/images/26f9-1f3ff.png +0 -0
  731. data/emoji/images/26f9.png +0 -0
  732. data/emoji/index.yml +283 -0
  733. data/lib/prawn/emoji.rb +17 -2
  734. data/lib/prawn/emoji/char.rb +39 -0
  735. data/lib/prawn/emoji/drawable.rb +9 -2
  736. data/lib/prawn/emoji/drawer.rb +36 -26
  737. data/lib/prawn/emoji/image.rb +24 -16
  738. data/lib/prawn/emoji/index.rb +1 -1
  739. data/lib/prawn/emoji/text.rb +10 -9
  740. data/lib/prawn/emoji/version.rb +1 -1
  741. data/prawn-emoji.gemspec +7 -15
  742. metadata +294 -112
  743. data/.travis.yml +0 -18
  744. data/lib/prawn/emoji/substitution.rb +0 -40
  745. data/lib/prawn/emoji/unicode.rb +0 -31
  746. data/test/fonts/DejaVuSans.ttf +0 -0
  747. data/test/fonts/IPA_Font_License_Agreement_v1.0.txt +0 -116
  748. data/test/fonts/ipag.ttf +0 -0
  749. data/test/pdf/emoji_rendering/expect.pdf +0 -0
  750. data/test/pdf/emoji_rendering/test_case.rb +0 -52
  751. data/test/pdf/prawn_integration/expect.pdf +0 -0
  752. data/test/pdf/prawn_integration/test_case.rb +0 -74
  753. data/test/pdf/test_helper.rb +0 -92
  754. data/test/units/prawn/emoji/drawable_test.rb +0 -25
  755. data/test/units/prawn/emoji/drawer_test.rb +0 -120
  756. data/test/units/prawn/emoji/image_test.rb +0 -32
  757. data/test/units/prawn/emoji/index_test.rb +0 -22
  758. data/test/units/prawn/emoji/substitution_test.rb +0 -37
  759. data/test/units/prawn/emoji/text_test.rb +0 -62
  760. data/test/units/prawn/emoji/unicode_test.rb +0 -50
  761. data/test/units/prawn/emoji_test.rb +0 -68
  762. data/test/units/test_helper.rb +0 -10
@@ -1,120 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
-
5
- describe Prawn::Emoji::Drawer do
6
- let(:document) { Prawn::Document.new }
7
- let(:drawer) { Prawn::Emoji::Drawer.new(document) }
8
-
9
- before do
10
- document.font Prawn::Emoji.root.join 'test', 'fonts', 'DejaVuSans.ttf'
11
- end
12
-
13
- subject { drawer.draw(text, text_options) }
14
-
15
- describe 'skip drawing' do
16
- let(:text_options) { {} }
17
-
18
- describe 'text is not utf8' do
19
- let(:text) { 'a'.encode('ascii-8bit') }
20
- it { _(subject).must_be_same_as text }
21
- end
22
-
23
- describe 'text does not include emoji' do
24
- let(:text) { 'abcdefg' }
25
- it { _(subject).must_be_same_as text }
26
- end
27
- end
28
-
29
- describe 'text that contains supported emojis' do
30
- let(:sushi) { '🍣' }
31
- let(:sushi_unicode) { Prawn::Emoji::Unicode.new(sushi) }
32
- let(:sushi_image) { Prawn::Emoji::Image.new(sushi_unicode, 12) }
33
- let(:text_options) { { at: [100, 200], font_size: 12 } }
34
- let(:sub_char) { Prawn::Emoji::Substitution.new(document) }
35
-
36
- let(:text) { "aaa#{sushi}bbb#{sushi}#{sushi}ccc" }
37
-
38
- it 'draws alternative images for each emoji included in the text' do
39
- image_x_positions = [
40
- 100 + document.width_of('aaa', text_options),
41
- 100 + document.width_of("aaa#{sub_char}bbb", text_options),
42
- 100 + document.width_of("aaa#{sub_char}bbb#{sub_char}", text_options)
43
- ]
44
-
45
- image_x_positions.each do |x|
46
- position = [
47
- sushi_image.adjust_x(x),
48
- sushi_image.adjust_y(200)
49
- ]
50
- mock(document).image(sushi_image.path, at: position, width: sushi_image.width).once
51
- end
52
- subject
53
- end
54
-
55
- it 'returns text that all emoji has substituted' do
56
- _(subject).must_equal "aaa#{sub_char}bbb#{sub_char}#{sub_char}ccc"
57
- end
58
- end
59
-
60
- describe 'text that contains unsupported emojis' do
61
- let(:text) { '😴︎ is not supported' }
62
- let(:text_options) { { at: [100, 200], font_size: 12 } }
63
-
64
- it 'does not draw emoji' do
65
- mock(document).image.never
66
- subject
67
- end
68
-
69
- it 'returns the original text' do
70
- _(subject).must_equal text
71
- end
72
- end
73
-
74
- describe 'text is empty' do
75
- let(:text) { '' }
76
- let(:text_options) { {} }
77
-
78
- it { _(subject).must_be_same_as text }
79
- end
80
-
81
- describe 'preserve the original text' do
82
- let(:text_options) { { at: [100, 200], font_size: 12 } }
83
- let(:sub_char) { Prawn::Emoji::Substitution.new(document).to_s }
84
-
85
- let(:emojis) { '🍣👨‍👨‍👦' }
86
-
87
- describe 'ASCII Character' do
88
- let(:ascii_33_79) { (33..79).map(&:chr).join }
89
- let(:ascii_80_126) { (80..126).map(&:chr).join }
90
- let(:text) {
91
- [emojis, ascii_33_79, emojis, ascii_80_126, emojis].join
92
- }
93
- it { _(subject).must_equal [sub_char * 2, ascii_33_79, sub_char * 2, ascii_80_126, sub_char * 2].join }
94
- end
95
-
96
- describe 'Textual Emoji' do
97
- let(:textual_emoji) { '▶' }
98
- let(:emoji_with_text_presentation) { "\u{1f634}\u{FE0E}" }
99
- let(:text) {
100
- [
101
- emojis, textual_emoji, emoji_with_text_presentation,
102
- emojis, textual_emoji, emoji_with_text_presentation, emojis
103
- ].join
104
- }
105
- it do
106
- _(subject).must_equal [
107
- sub_char * 2, textual_emoji, emoji_with_text_presentation,
108
- sub_char * 2, textual_emoji, emoji_with_text_presentation, sub_char * 2
109
- ].join
110
- end
111
- end
112
-
113
- describe 'CJK' do
114
- let(:japanese) { 'あいうえお日本語¥〇〒' }
115
- let(:text) { [emojis, japanese, emojis, japanese, emojis].join }
116
-
117
- it { _(subject).must_equal [sub_char * 2, japanese, sub_char * 2, japanese, sub_char * 2].join }
118
- end
119
- end
120
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
-
5
- describe Prawn::Emoji::Image do
6
- describe '#path' do
7
- let(:emojis) { %w( 😀 © 🇯🇵 ) }
8
- let(:emoji_unicodes) { emojis.map { |emoji| Prawn::Emoji::Unicode.new(emoji) } }
9
-
10
- it 'possible to find the image file' do
11
- emoji_unicodes.each do |emoji_unicode|
12
- emoji_image = Prawn::Emoji::Image.new(emoji_unicode, 12)
13
- assert File.exist?(emoji_image.path), "#{emoji_unicode} not found"
14
- end
15
- end
16
- end
17
-
18
- describe '#adjust_x' do
19
- subject { Prawn::Emoji::Image.new('🍣', 12).adjust_x(100) }
20
- it { _(subject).must_equal 100.9 }
21
- end
22
-
23
- describe '#adjust_y' do
24
- subject { Prawn::Emoji::Image.new('❤', 18).adjust_y(100) }
25
- it { _(subject).must_equal 114.4 }
26
- end
27
-
28
- describe '#width' do
29
- subject { Prawn::Emoji::Image.new('❤', 10).width }
30
- it { _(subject).must_equal 8.5 }
31
- end
32
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
- require 'yaml'
5
-
6
- describe Prawn::Emoji::Index do
7
- let(:index) { Prawn::Emoji::Index.new }
8
-
9
- describe '#codepoints' do
10
- subject { index.codepoints }
11
-
12
- let(:all_codes) { YAML.load_file(Prawn::Emoji.root.join('emoji', 'index.yml')) }
13
-
14
- it { _(subject).must_equal all_codes }
15
- end
16
-
17
- describe '#include?' do
18
- it { _(index.include?('0023-20e3')).must_equal true }
19
- it { _(index.include?('3299')).must_equal true }
20
- it { _(index.include?('unknown')).must_equal false }
21
- end
22
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
-
5
- describe Prawn::Emoji::Substitution do
6
- let(:document) { Prawn::Document.new }
7
- let(:font_size) { 12 }
8
- let(:substitution) { Prawn::Emoji::Substitution.new(document) }
9
-
10
- before do
11
- document.font(font) if font
12
- document.font_size = 12
13
- end
14
-
15
- subject { substitution.to_s }
16
-
17
- describe 'When Japanese TTF font' do
18
- let(:font) { Prawn::Emoji.root.join('test', 'fonts', 'ipag.ttf') }
19
-
20
- it { _(subject).must_equal ' ' }
21
- it { _(document.width_of(subject)).must_equal font_size }
22
- end
23
-
24
- describe 'When ASCII TTF font' do
25
- let(:font) { Prawn::Emoji.root.join('test', 'fonts', 'DejaVuSans.ttf') }
26
-
27
- it { _(subject).must_match(/^#{Prawn::Text::NBSP}+$/) }
28
- it { _(document.width_of(subject)).must_be :>=, font_size - 1 }
29
- it { _(document.width_of(subject)).must_be :<=, font_size + 1 }
30
- end
31
-
32
- describe 'When built-in AFM font' do
33
- let(:font) { nil }
34
-
35
- it { _ { subject }.must_raise Prawn::Errors::IncompatibleStringEncoding }
36
- end
37
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
-
5
- describe Prawn::Emoji::Text do
6
- subject { Prawn::Emoji::Text.new(text) }
7
-
8
- describe 'partition by emoji' do
9
- let(:text) { 'leftleft🍣remaining'}
10
-
11
- it { _(subject.left).must_equal 'leftleft' }
12
- it { _(subject.remaining).must_equal 'remaining' }
13
- it { _(subject.emoji).must_be_instance_of Prawn::Emoji::Unicode }
14
- it { _(subject.emoji.to_s).must_equal '🍣' }
15
-
16
- describe 'no emoji' do
17
- let(:text) { 'abcd' }
18
-
19
- it { _(subject.left).must_equal 'abcd' }
20
- it { _(subject.emoji).must_be_nil }
21
- it { _(subject.remaining).must_equal '' }
22
- end
23
-
24
- describe 'emoji only' do
25
- let(:text) { '🎉' }
26
-
27
- it { _(subject.left).must_equal '' }
28
- it { _(subject.emoji.to_s).must_equal '🎉' }
29
- it { _(subject.remaining).must_equal '' }
30
- end
31
-
32
- describe 'empty' do
33
- let(:text) { '' }
34
-
35
- it { _(subject.left).must_equal '' }
36
- it { _(subject.emoji).must_be_nil }
37
- it { _(subject.remaining).must_equal '' }
38
- end
39
- end
40
-
41
- describe '#contains_emoji?' do
42
- describe 'includes' do
43
- let(:text) { '👍' }
44
- it { _(subject).must_be :contains_emoji? }
45
- end
46
-
47
- describe 'not includes' do
48
- let(:text) { 'text only' }
49
- it { _(subject).wont_be :contains_emoji? }
50
- end
51
- end
52
-
53
- describe '#left_with_emoji' do
54
- let(:text) { 'aaaaaa📌bbbbbb' }
55
- it { _(subject.left_with_emoji).must_equal 'aaaaaa📌' }
56
- end
57
-
58
- describe '#to_s' do
59
- let(:text) { 'aaaaaa📌bbbbbb' }
60
- it { _(subject.to_s).must_equal text }
61
- end
62
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
-
5
- describe Prawn::Emoji::Unicode do
6
- def unicode(emoji)
7
- Prawn::Emoji::Unicode.new(emoji)
8
- end
9
-
10
- describe '.format_codepoint' do
11
- [
12
- [%w(abcd), 'abcd'],
13
- [%w(ABCD), 'abcd'],
14
- [%w(a), '000a'],
15
- [%w(1234 5678 9012), '1234-5678-9012'],
16
- [%w(A B C), '000a-000b-000c']
17
- ].each do |(args, expect)|
18
- it { _(Prawn::Emoji::Unicode.format_codepoint(args)).must_equal expect }
19
- end
20
- end
21
-
22
- describe '#==' do
23
- it { _(unicode('🐟')).must_be :==, unicode('🐟') }
24
- it { _(unicode('🐟')).wont_be :==, unicode('🍣') }
25
- end
26
-
27
- describe '#codepoint' do
28
- it { _(unicode('🍣').codepoint).must_equal '1f363' }
29
- it { _(unicode('🇯🇵').codepoint).must_equal '1f1ef-1f1f5' }
30
- end
31
-
32
- describe '#to_s' do
33
- it { _(unicode('🍣').to_s).must_equal '🍣' }
34
- it { _(unicode('❤️').to_s).must_equal "\u2764\ufe0f" }
35
- end
36
-
37
- describe 'delete variation selector' do
38
- describe 'no selector' do
39
- it { _(unicode("\u2600").codepoint).must_equal '2600' }
40
- end
41
-
42
- describe 'with text presentation selector' do
43
- it { _(unicode("\u2600\ufe0e").codepoint).must_equal '2600' }
44
- end
45
-
46
- describe 'with emoji presentation selector' do
47
- it { _(unicode("\u2600\ufe0f").codepoint).must_equal '2600' }
48
- end
49
- end
50
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'units/test_helper'
4
-
5
- describe 'Prawn integration' do
6
- describe 'Prawn::Document#text' do
7
- it 'properly render text' do
8
- pdf = Prawn::Document.new do |doc|
9
- doc.font font_path('DejaVuSans.ttf')
10
- doc.text 'sushi🍣teacup🍵'
11
-
12
- doc.move_down 20
13
-
14
- doc.font font_path('ipag.ttf')
15
- doc.text '寿司🍣お茶🍵'
16
- end
17
-
18
- assert_properly_render_text(pdf)
19
- end
20
- end
21
-
22
- describe 'Prawn::Document#text_box' do
23
- it 'properly render text' do
24
- pdf = Prawn::Document.new do |doc|
25
- doc.font font_path('DejaVuSans.ttf')
26
- doc.text_box 'sushi🍣teacup🍵', at: [100, 100], width: 500
27
-
28
- doc.font font_path('ipag.ttf')
29
- doc.text_box '寿司🍣お茶🍵', at: [100, 300], width: 500
30
- end
31
-
32
- assert_properly_render_text(pdf)
33
- end
34
- end
35
-
36
- describe 'Prawn::Document#draw_text' do
37
- it 'properly render text' do
38
- pdf = Prawn::Document.new do |doc|
39
- doc.font font_path('DejaVuSans.ttf')
40
- doc.draw_text 'sushi🍣teacup🍵', at: [100, 100]
41
-
42
- doc.font font_path('ipag.ttf')
43
- doc.draw_text '寿司🍣お茶🍵', at: [100, 300]
44
- end
45
-
46
- assert_properly_render_text(pdf)
47
- end
48
- end
49
-
50
- def assert_properly_render_text(pdf)
51
- pdf_strings = extract_strings(pdf.render)
52
-
53
- _(pdf_strings).must_include "sushi#{nbsp * 3}teacup#{nbsp * 3}"
54
- _(pdf_strings).must_include "寿司 お茶 "
55
- end
56
-
57
- def font_path(name)
58
- Prawn::Emoji.root.join 'test', 'fonts', name
59
- end
60
-
61
- def extract_strings(pdf)
62
- PDF::Inspector::Text.analyze(pdf).strings
63
- end
64
-
65
- def nbsp
66
- Prawn::Text::NBSP
67
- end
68
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- $:.unshift File.expand_path('../../../lib', __FILE__)
4
-
5
- require 'prawn'
6
- require 'prawn/emoji'
7
-
8
- require 'minitest/autorun'
9
- require 'rr'
10
- require 'pdf/inspector'