pango 3.2.5-x64-mingw32 → 3.2.6-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING.LIB +502 -0
  3. data/README.md +25 -0
  4. data/Rakefile +8 -8
  5. data/ext/pango/extconf.rb +4 -1
  6. data/ext/pango/pango.def +1 -0
  7. data/ext/pango/rb-pango-attr-list.c +3 -3
  8. data/ext/pango/rb-pango-attribute.c +67 -57
  9. data/ext/pango/rb-pango-conversions.h +3 -3
  10. data/ext/pango/rb-pango-private.h +0 -1
  11. data/ext/pango/rb-pango.c +0 -1
  12. data/ext/pango/rb-pango.h +2 -1
  13. data/lib/2.2/pango.so +0 -0
  14. data/lib/2.3/pango.so +0 -0
  15. data/lib/2.4/pango.so +0 -0
  16. data/lib/2.5/pango.so +0 -0
  17. data/lib/pango/loader.rb +13 -1
  18. data/lib/pango/rectangle.rb +7 -1
  19. data/pango.gemspec +43 -0
  20. data/vendor/local/bin/derb.exe +0 -0
  21. data/vendor/local/bin/escapesrc.exe +0 -0
  22. data/vendor/local/bin/fribidi.exe +0 -0
  23. data/vendor/local/bin/genbrk.exe +0 -0
  24. data/vendor/local/bin/genccode.exe +0 -0
  25. data/vendor/local/bin/gencfu.exe +0 -0
  26. data/vendor/local/bin/gencmn.exe +0 -0
  27. data/vendor/local/bin/gencnval.exe +0 -0
  28. data/vendor/local/bin/gendict.exe +0 -0
  29. data/vendor/local/bin/gennorm2.exe +0 -0
  30. data/vendor/local/bin/genrb.exe +0 -0
  31. data/vendor/local/bin/gensprep.exe +0 -0
  32. data/vendor/local/bin/hb-ot-shape-closure.exe +0 -0
  33. data/vendor/local/bin/hb-shape.exe +0 -0
  34. data/vendor/local/bin/hb-subset.exe +0 -0
  35. data/vendor/local/bin/hb-view.exe +0 -0
  36. data/vendor/local/bin/icu-config +13 -8
  37. data/vendor/local/bin/icuinfo.exe +0 -0
  38. data/vendor/local/bin/icupkg.exe +0 -0
  39. data/vendor/local/bin/libfribidi-0.dll +0 -0
  40. data/vendor/local/bin/libgraphene-1.0-0.dll +0 -0
  41. data/vendor/local/bin/libharfbuzz-0.dll +0 -0
  42. data/vendor/local/bin/libharfbuzz-subset-0.dll +0 -0
  43. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  44. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  45. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  46. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  47. data/vendor/local/bin/makeconv.exe +0 -0
  48. data/vendor/local/bin/pango-view.exe +0 -0
  49. data/vendor/local/bin/pkgdata.exe +0 -0
  50. data/vendor/local/bin/uconv.exe +0 -0
  51. data/vendor/local/include/fribidi/fribidi-config.h +2 -2
  52. data/vendor/local/include/harfbuzz/hb-blob.h +2 -0
  53. data/vendor/local/include/harfbuzz/hb-common.h +24 -3
  54. data/vendor/local/include/harfbuzz/hb-face.h +4 -0
  55. data/vendor/local/include/harfbuzz/hb-map.h +104 -0
  56. data/vendor/local/include/harfbuzz/hb-ot-layout.h +1 -1
  57. data/vendor/local/include/harfbuzz/hb-set.h +0 -2
  58. data/vendor/local/include/harfbuzz/hb-subset-plan.hh +46 -25
  59. data/vendor/local/include/harfbuzz/hb-subset.h +4 -1
  60. data/vendor/local/include/harfbuzz/hb-version.h +3 -3
  61. data/vendor/local/include/harfbuzz/hb.h +1 -0
  62. data/vendor/local/include/pango-1.0/pango/pango-features.h +2 -2
  63. data/vendor/local/include/unicode/alphaindex.h +2 -1
  64. data/vendor/local/include/unicode/appendable.h +25 -25
  65. data/vendor/local/include/unicode/basictz.h +1 -1
  66. data/vendor/local/include/unicode/brkiter.h +19 -24
  67. data/vendor/local/include/unicode/bytestream.h +26 -13
  68. data/vendor/local/include/unicode/bytestrie.h +2 -2
  69. data/vendor/local/include/unicode/bytestriebuilder.h +4 -5
  70. data/vendor/local/include/unicode/calendar.h +11 -11
  71. data/vendor/local/include/unicode/caniter.h +3 -3
  72. data/vendor/local/include/unicode/casemap.h +494 -0
  73. data/vendor/local/include/unicode/char16ptr.h +302 -0
  74. data/vendor/local/include/unicode/chariter.h +22 -18
  75. data/vendor/local/include/unicode/choicfmt.h +1 -1
  76. data/vendor/local/include/unicode/coleitr.h +2 -1
  77. data/vendor/local/include/unicode/coll.h +17 -17
  78. data/vendor/local/include/unicode/compactdecimalformat.h +10 -2
  79. data/vendor/local/include/unicode/curramt.h +5 -5
  80. data/vendor/local/include/unicode/currpinf.h +1 -1
  81. data/vendor/local/include/unicode/currunit.h +24 -6
  82. data/vendor/local/include/unicode/datefmt.h +3 -2
  83. data/vendor/local/include/unicode/dbbi.h +1 -1
  84. data/vendor/local/include/unicode/dcfmtsym.h +89 -13
  85. data/vendor/local/include/unicode/decimfmt.h +38 -39
  86. data/vendor/local/include/unicode/docmain.h +7 -2
  87. data/vendor/local/include/unicode/dtfmtsym.h +7 -6
  88. data/vendor/local/include/unicode/dtintrv.h +2 -2
  89. data/vendor/local/include/unicode/dtitvfmt.h +2 -2
  90. data/vendor/local/include/unicode/dtitvinf.h +1 -3
  91. data/vendor/local/include/unicode/dtptngen.h +48 -24
  92. data/vendor/local/include/unicode/dtrule.h +1 -1
  93. data/vendor/local/include/unicode/edits.h +424 -0
  94. data/vendor/local/include/unicode/enumset.h +1 -1
  95. data/vendor/local/include/unicode/errorcode.h +2 -2
  96. data/vendor/local/include/unicode/fieldpos.h +1 -1
  97. data/vendor/local/include/unicode/filteredbrk.h +35 -5
  98. data/vendor/local/include/unicode/fmtable.h +1 -1
  99. data/vendor/local/include/unicode/format.h +1 -1
  100. data/vendor/local/include/unicode/fpositer.h +11 -3
  101. data/vendor/local/include/unicode/gender.h +1 -1
  102. data/vendor/local/include/unicode/gregocal.h +1 -1
  103. data/vendor/local/include/unicode/icudataver.h +1 -1
  104. data/vendor/local/include/unicode/icuplug.h +1 -1
  105. data/vendor/local/include/unicode/idna.h +2 -2
  106. data/vendor/local/include/unicode/listformatter.h +4 -2
  107. data/vendor/local/include/unicode/localpointer.h +6 -43
  108. data/vendor/local/include/unicode/locdspnm.h +2 -1
  109. data/vendor/local/include/unicode/locid.h +7 -6
  110. data/vendor/local/include/unicode/measfmt.h +18 -7
  111. data/vendor/local/include/unicode/measunit.h +31 -60
  112. data/vendor/local/include/unicode/measure.h +1 -1
  113. data/vendor/local/include/unicode/messagepattern.h +2 -2
  114. data/vendor/local/include/unicode/msgfmt.h +2 -2
  115. data/vendor/local/include/unicode/normalizer2.h +130 -16
  116. data/vendor/local/include/unicode/normlzr.h +5 -5
  117. data/vendor/local/include/unicode/nounit.h +111 -0
  118. data/vendor/local/include/unicode/numberformatter.h +2194 -0
  119. data/vendor/local/include/unicode/numfmt.h +81 -7
  120. data/vendor/local/include/unicode/numsys.h +2 -2
  121. data/vendor/local/include/unicode/parseerr.h +3 -3
  122. data/vendor/local/include/unicode/parsepos.h +1 -1
  123. data/vendor/local/include/unicode/platform.h +66 -63
  124. data/vendor/local/include/unicode/plurfmt.h +1 -1
  125. data/vendor/local/include/unicode/plurrule.h +23 -4
  126. data/vendor/local/include/unicode/ptypes.h +1 -1
  127. data/vendor/local/include/unicode/putil.h +4 -4
  128. data/vendor/local/include/unicode/rbbi.h +105 -134
  129. data/vendor/local/include/unicode/rbnf.h +65 -3
  130. data/vendor/local/include/unicode/rbtz.h +1 -1
  131. data/vendor/local/include/unicode/regex.h +17 -17
  132. data/vendor/local/include/unicode/region.h +1 -1
  133. data/vendor/local/include/unicode/reldatefmt.h +4 -5
  134. data/vendor/local/include/unicode/rep.h +4 -4
  135. data/vendor/local/include/unicode/resbund.h +3 -3
  136. data/vendor/local/include/unicode/schriter.h +3 -3
  137. data/vendor/local/include/unicode/scientificnumberformatter.h +1 -1
  138. data/vendor/local/include/unicode/search.h +1 -1
  139. data/vendor/local/include/unicode/selfmt.h +1 -1
  140. data/vendor/local/include/unicode/simpleformatter.h +31 -25
  141. data/vendor/local/include/unicode/simpletz.h +5 -3
  142. data/vendor/local/include/unicode/smpdtfmt.h +17 -7
  143. data/vendor/local/include/unicode/sortkey.h +1 -1
  144. data/vendor/local/include/unicode/std_string.h +6 -8
  145. data/vendor/local/include/unicode/strenum.h +5 -5
  146. data/vendor/local/include/unicode/stringoptions.h +198 -0
  147. data/vendor/local/include/unicode/stringpiece.h +1 -3
  148. data/vendor/local/include/unicode/stringtriebuilder.h +19 -19
  149. data/vendor/local/include/unicode/stsearch.h +1 -1
  150. data/vendor/local/include/unicode/symtable.h +1 -1
  151. data/vendor/local/include/unicode/tblcoll.h +13 -13
  152. data/vendor/local/include/unicode/timezone.h +5 -5
  153. data/vendor/local/include/unicode/tmunit.h +1 -1
  154. data/vendor/local/include/unicode/tmutamt.h +1 -1
  155. data/vendor/local/include/unicode/tmutfmt.h +1 -1
  156. data/vendor/local/include/unicode/translit.h +2 -2
  157. data/vendor/local/include/unicode/tzfmt.h +4 -4
  158. data/vendor/local/include/unicode/tznames.h +3 -5
  159. data/vendor/local/include/unicode/tzrule.h +1 -1
  160. data/vendor/local/include/unicode/tztrans.h +1 -1
  161. data/vendor/local/include/unicode/ubidi.h +11 -8
  162. data/vendor/local/include/unicode/ubiditransform.h +16 -19
  163. data/vendor/local/include/unicode/ubrk.h +61 -4
  164. data/vendor/local/include/unicode/ucal.h +3 -3
  165. data/vendor/local/include/unicode/ucasemap.h +7 -47
  166. data/vendor/local/include/unicode/ucat.h +1 -1
  167. data/vendor/local/include/unicode/uchar.h +62 -37
  168. data/vendor/local/include/unicode/ucharstrie.h +48 -48
  169. data/vendor/local/include/unicode/ucharstriebuilder.h +12 -12
  170. data/vendor/local/include/unicode/uchriter.h +33 -29
  171. data/vendor/local/include/unicode/uclean.h +15 -13
  172. data/vendor/local/include/unicode/ucnv.h +11 -11
  173. data/vendor/local/include/unicode/ucnv_cb.h +1 -1
  174. data/vendor/local/include/unicode/ucnv_err.h +7 -7
  175. data/vendor/local/include/unicode/ucnvsel.h +1 -1
  176. data/vendor/local/include/unicode/ucol.h +6 -6
  177. data/vendor/local/include/unicode/ucoleitr.h +3 -3
  178. data/vendor/local/include/unicode/uconfig.h +8 -5
  179. data/vendor/local/include/unicode/ucsdet.h +7 -3
  180. data/vendor/local/include/unicode/ucurr.h +14 -1
  181. data/vendor/local/include/unicode/udat.h +39 -41
  182. data/vendor/local/include/unicode/udata.h +2 -2
  183. data/vendor/local/include/unicode/udateintervalformat.h +1 -1
  184. data/vendor/local/include/unicode/udatpg.h +56 -5
  185. data/vendor/local/include/unicode/udisplaycontext.h +4 -8
  186. data/vendor/local/include/unicode/uenum.h +5 -3
  187. data/vendor/local/include/unicode/ufieldpositer.h +1 -1
  188. data/vendor/local/include/unicode/uformattable.h +2 -2
  189. data/vendor/local/include/unicode/ugender.h +1 -1
  190. data/vendor/local/include/unicode/uidna.h +2 -2
  191. data/vendor/local/include/unicode/uiter.h +2 -2
  192. data/vendor/local/include/unicode/uldnames.h +1 -1
  193. data/vendor/local/include/unicode/ulistformatter.h +4 -4
  194. data/vendor/local/include/unicode/uloc.h +29 -16
  195. data/vendor/local/include/unicode/ulocdata.h +5 -5
  196. data/vendor/local/include/unicode/umachine.h +81 -38
  197. data/vendor/local/include/unicode/umisc.h +2 -2
  198. data/vendor/local/include/unicode/umsg.h +2 -2
  199. data/vendor/local/include/unicode/unifilt.h +2 -2
  200. data/vendor/local/include/unicode/unifunct.h +1 -1
  201. data/vendor/local/include/unicode/unimatch.h +1 -1
  202. data/vendor/local/include/unicode/unirepl.h +1 -1
  203. data/vendor/local/include/unicode/uniset.h +5 -4
  204. data/vendor/local/include/unicode/unistr.h +322 -208
  205. data/vendor/local/include/unicode/unorm.h +9 -9
  206. data/vendor/local/include/unicode/unorm2.h +3 -26
  207. data/vendor/local/include/unicode/unum.h +71 -11
  208. data/vendor/local/include/unicode/unumsys.h +1 -1
  209. data/vendor/local/include/unicode/uobject.h +2 -2
  210. data/vendor/local/include/unicode/upluralrules.h +51 -6
  211. data/vendor/local/include/unicode/uregex.h +2 -2
  212. data/vendor/local/include/unicode/uregion.h +2 -2
  213. data/vendor/local/include/unicode/ureldatefmt.h +33 -39
  214. data/vendor/local/include/unicode/urename.h +18 -17
  215. data/vendor/local/include/unicode/urep.h +1 -1
  216. data/vendor/local/include/unicode/ures.h +9 -9
  217. data/vendor/local/include/unicode/uscript.h +10 -3
  218. data/vendor/local/include/unicode/usearch.h +3 -3
  219. data/vendor/local/include/unicode/uset.h +2 -2
  220. data/vendor/local/include/unicode/usetiter.h +1 -1
  221. data/vendor/local/include/unicode/ushape.h +3 -3
  222. data/vendor/local/include/unicode/uspoof.h +24 -29
  223. data/vendor/local/include/unicode/usprep.h +7 -7
  224. data/vendor/local/include/unicode/ustdio.h +1 -1
  225. data/vendor/local/include/unicode/ustream.h +2 -9
  226. data/vendor/local/include/unicode/ustring.h +3 -13
  227. data/vendor/local/include/unicode/ustringtrie.h +2 -2
  228. data/vendor/local/include/unicode/utext.h +16 -16
  229. data/vendor/local/include/unicode/utf.h +19 -19
  230. data/vendor/local/include/unicode/utf16.h +128 -8
  231. data/vendor/local/include/unicode/utf32.h +2 -2
  232. data/vendor/local/include/unicode/utf8.h +177 -121
  233. data/vendor/local/include/unicode/utf_old.h +40 -7
  234. data/vendor/local/include/unicode/utmscale.h +8 -1
  235. data/vendor/local/include/unicode/utrace.h +4 -4
  236. data/vendor/local/include/unicode/utrans.h +3 -3
  237. data/vendor/local/include/unicode/utypes.h +13 -10
  238. data/vendor/local/include/unicode/uvernum.h +18 -11
  239. data/vendor/local/include/unicode/uversion.h +10 -4
  240. data/vendor/local/include/unicode/vtzone.h +1 -1
  241. data/vendor/local/lib/cmake/harfbuzz/harfbuzz-config.cmake +1 -1
  242. data/vendor/local/lib/icu/{58.2 → 61.1}/Makefile.inc +7 -7
  243. data/vendor/local/lib/icu/{58.2 → 61.1}/pkgdata.inc +2 -2
  244. data/vendor/local/lib/icu/Makefile.inc +7 -7
  245. data/vendor/local/lib/icu/pkgdata.inc +2 -2
  246. data/vendor/local/lib/icudt.dll +0 -0
  247. data/vendor/local/lib/{icudt58.dll → icudt61.dll} +0 -0
  248. data/vendor/local/lib/icuin.dll +0 -0
  249. data/vendor/local/lib/icuin61.dll +0 -0
  250. data/vendor/local/lib/icuio.dll +0 -0
  251. data/vendor/local/lib/{icuio58.dll → icuio61.dll} +0 -0
  252. data/vendor/local/lib/icutest.dll +0 -0
  253. data/vendor/local/lib/{icutest58.dll → icutest61.dll} +0 -0
  254. data/vendor/local/lib/icutu.dll +0 -0
  255. data/vendor/local/lib/icutu61.dll +0 -0
  256. data/vendor/local/lib/icuuc.dll +0 -0
  257. data/vendor/local/lib/icuuc61.dll +0 -0
  258. data/vendor/local/lib/libfribidi.dll.a +0 -0
  259. data/vendor/local/lib/libgraphene-1.0.dll.a +0 -0
  260. data/vendor/local/lib/libharfbuzz-icu.a +0 -0
  261. data/vendor/local/lib/libharfbuzz-icu.la +3 -3
  262. data/vendor/local/lib/libharfbuzz-subset.dll.a +0 -0
  263. data/vendor/local/lib/libharfbuzz-subset.la +3 -3
  264. data/vendor/local/lib/libharfbuzz.dll.a +0 -0
  265. data/vendor/local/lib/libharfbuzz.la +3 -3
  266. data/vendor/local/lib/libicudt.dll.a +0 -0
  267. data/vendor/local/lib/libicuin.dll.a +0 -0
  268. data/vendor/local/lib/libicuio.dll.a +0 -0
  269. data/vendor/local/lib/libicutest.dll.a +0 -0
  270. data/vendor/local/lib/libicutu.dll.a +0 -0
  271. data/vendor/local/lib/libicuuc.dll.a +0 -0
  272. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  273. data/vendor/local/lib/libpango-1.0.la +2 -2
  274. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  275. data/vendor/local/lib/libpangocairo-1.0.la +2 -2
  276. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  277. data/vendor/local/lib/libpangoft2-1.0.la +2 -2
  278. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  279. data/vendor/local/lib/libpangowin32-1.0.la +2 -2
  280. data/vendor/local/lib/pkgconfig/fribidi.pc +1 -1
  281. data/vendor/local/lib/pkgconfig/harfbuzz-icu.pc +1 -1
  282. data/vendor/local/lib/pkgconfig/harfbuzz-subset.pc +1 -1
  283. data/vendor/local/lib/pkgconfig/harfbuzz.pc +1 -1
  284. data/vendor/local/lib/pkgconfig/icu-i18n.pc +7 -7
  285. data/vendor/local/lib/pkgconfig/icu-io.pc +7 -7
  286. data/vendor/local/lib/pkgconfig/icu-uc.pc +7 -7
  287. data/vendor/local/lib/pkgconfig/pango.pc +2 -2
  288. data/vendor/local/lib/pkgconfig/pangocairo.pc +2 -2
  289. data/vendor/local/lib/pkgconfig/pangoft2.pc +2 -2
  290. data/vendor/local/lib/pkgconfig/pangowin32.pc +1 -1
  291. data/vendor/local/libexec/installed-tests/graphene-1.0/box.exe +0 -0
  292. data/vendor/local/libexec/installed-tests/graphene-1.0/euler.exe +0 -0
  293. data/vendor/local/libexec/installed-tests/graphene-1.0/frustum.exe +0 -0
  294. data/vendor/local/libexec/installed-tests/graphene-1.0/matrix.exe +0 -0
  295. data/vendor/local/libexec/installed-tests/graphene-1.0/plane.exe +0 -0
  296. data/vendor/local/libexec/installed-tests/graphene-1.0/point.exe +0 -0
  297. data/vendor/local/libexec/installed-tests/graphene-1.0/point3d.exe +0 -0
  298. data/vendor/local/libexec/installed-tests/graphene-1.0/quad.exe +0 -0
  299. data/vendor/local/libexec/installed-tests/graphene-1.0/quaternion.exe +0 -0
  300. data/vendor/local/libexec/installed-tests/graphene-1.0/ray.exe +0 -0
  301. data/vendor/local/libexec/installed-tests/graphene-1.0/rect.exe +0 -0
  302. data/vendor/local/libexec/installed-tests/graphene-1.0/simd.exe +0 -0
  303. data/vendor/local/libexec/installed-tests/graphene-1.0/size.exe +0 -0
  304. data/vendor/local/libexec/installed-tests/graphene-1.0/sphere.exe +0 -0
  305. data/vendor/local/libexec/installed-tests/graphene-1.0/triangle.exe +0 -0
  306. data/vendor/local/libexec/installed-tests/graphene-1.0/vec2.exe +0 -0
  307. data/vendor/local/libexec/installed-tests/graphene-1.0/vec3.exe +0 -0
  308. data/vendor/local/libexec/installed-tests/graphene-1.0/vec4.exe +0 -0
  309. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-Buffers.html +5 -3
  310. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-common.html +5 -0
  311. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz.devhelp2 +1 -0
  312. data/vendor/local/share/gtk-doc/html/harfbuzz/pt02.html +1 -1
  313. data/vendor/local/share/gtk-doc/html/pango/index.html +1 -1
  314. data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +2 -2
  315. data/vendor/local/share/icu/{58.2 → 61.1}/LICENSE +32 -3
  316. data/vendor/local/share/icu/{58.2 → 61.1}/config/mh-mingw64 +4 -0
  317. data/vendor/local/share/icu/{58.2 → 61.1}/install-sh +0 -0
  318. data/vendor/local/share/icu/{58.2 → 61.1}/mkinstalldirs +0 -0
  319. data/vendor/local/share/man/man1/derb.1 +2 -2
  320. data/vendor/local/share/man/man1/genbrk.1 +2 -2
  321. data/vendor/local/share/man/man1/gencfu.1 +1 -1
  322. data/vendor/local/share/man/man1/gencnval.1 +3 -3
  323. data/vendor/local/share/man/man1/gendict.1 +2 -2
  324. data/vendor/local/share/man/man1/genrb.1 +3 -3
  325. data/vendor/local/share/man/man1/icu-config.1 +2 -2
  326. data/vendor/local/share/man/man1/makeconv.1 +5 -5
  327. data/vendor/local/share/man/man1/pkgdata.1 +2 -2
  328. data/vendor/local/share/man/man1/uconv.1 +9 -9
  329. data/vendor/local/share/man/man3/fribidi_charset_to_unicode.3 +98 -0
  330. data/vendor/local/share/man/man3/fribidi_debug_status.3 +44 -0
  331. data/vendor/local/share/man/man3/fribidi_get_bidi_type.3 +58 -0
  332. data/vendor/local/share/man/man3/fribidi_get_bidi_type_name.3 +56 -0
  333. data/vendor/local/share/man/man3/fribidi_get_bidi_types.3 +68 -0
  334. data/vendor/local/share/man/man3/fribidi_get_bracket.3 +59 -0
  335. data/vendor/local/share/man/man3/fribidi_get_bracket_types.3 +73 -0
  336. data/vendor/local/share/man/man3/fribidi_get_joining_type.3 +87 -0
  337. data/vendor/local/share/man/man3/fribidi_get_joining_type_name.3 +83 -0
  338. data/vendor/local/share/man/man3/fribidi_get_joining_types.3 +96 -0
  339. data/vendor/local/share/man/man3/fribidi_get_mirror_char.3 +68 -0
  340. data/vendor/local/share/man/man3/fribidi_get_par_direction.3 +100 -0
  341. data/vendor/local/share/man/man3/fribidi_get_par_embedding_levels.3 +98 -0
  342. data/vendor/local/share/man/man3/fribidi_get_par_embedding_levels_ex.3 +114 -0
  343. data/vendor/local/share/man/man3/fribidi_get_type.3 +50 -0
  344. data/vendor/local/share/man/man3/fribidi_get_type_internal.3 +50 -0
  345. data/vendor/local/share/man/man3/fribidi_join_arabic.3 +92 -0
  346. data/vendor/local/share/man/man3/fribidi_log2vis.3 +124 -0
  347. data/vendor/local/share/man/man3/fribidi_log2vis_get_embedding_levels.3 +97 -0
  348. data/vendor/local/share/man/man3/fribidi_mirroring_status.3 +44 -0
  349. data/vendor/local/share/man/man3/fribidi_parse_charset.3 +78 -0
  350. data/vendor/local/share/man/man3/fribidi_remove_bidi_marks.3 +96 -0
  351. data/vendor/local/share/man/man3/fribidi_reorder_line.3 +146 -0
  352. data/vendor/local/share/man/man3/fribidi_reorder_nsm_status.3 +44 -0
  353. data/vendor/local/share/man/man3/fribidi_set_debug.3 +48 -0
  354. data/vendor/local/share/man/man3/fribidi_set_mirroring.3 +58 -0
  355. data/vendor/local/share/man/man3/fribidi_set_reorder_nsm.3 +60 -0
  356. data/vendor/local/share/man/man3/fribidi_shape.3 +89 -0
  357. data/vendor/local/share/man/man3/fribidi_shape_arabic.3 +95 -0
  358. data/vendor/local/share/man/man3/fribidi_shape_mirroring.3 +71 -0
  359. data/vendor/local/share/man/man3/fribidi_unicode_to_charset.3 +99 -0
  360. data/vendor/local/share/man/man8/genccode.8 +2 -2
  361. data/vendor/local/share/man/man8/gencmn.8 +3 -3
  362. data/vendor/local/share/man/man8/gensprep.8 +3 -3
  363. data/vendor/local/share/man/man8/icupkg.8 +1 -1
  364. metadata +58 -59
  365. data/ext/pango/rb-pango-context.c +0 -79
  366. data/vendor/local/lib/icuin58.dll +0 -0
  367. data/vendor/local/lib/icutu58.dll +0 -0
  368. data/vendor/local/lib/icuuc58.dll +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  *******************************************************************************
@@ -8,7 +8,7 @@
8
8
  *
9
9
  *******************************************************************************
10
10
  * file name: usprep.h
11
- * encoding: US-ASCII
11
+ * encoding: UTF-8
12
12
  * tab size: 8 (not used)
13
13
  * indentation:4
14
14
  *
@@ -33,14 +33,14 @@
33
33
  * StringPrep prepares Unicode strings for use in network protocols.
34
34
  * Profiles of StingPrep are set of rules and data according to with the
35
35
  * Unicode Strings are prepared. Each profiles contains tables which describe
36
- * how a code point should be treated. The tables are broadly classied into
36
+ * how a code point should be treated. The tables are broadly classified into
37
37
  * <ul>
38
- * <li> Unassinged Table: Contains code points that are unassigned
38
+ * <li> Unassigned Table: Contains code points that are unassigned
39
39
  * in the Unicode Version supported by StringPrep. Currently
40
40
  * RFC 3454 supports Unicode 3.2. </li>
41
- * <li> Prohibited Table: Contains code points that are prohibted from
41
+ * <li> Prohibited Table: Contains code points that are prohibited from
42
42
  * the output of the StringPrep processing function. </li>
43
- * <li> Mapping Table: Contains code ponts that are deleted from the output or case mapped. </li>
43
+ * <li> Mapping Table: Contains code points that are deleted from the output or case mapped. </li>
44
44
  * </ul>
45
45
  *
46
46
  * The procedure for preparing Unicode strings:
@@ -230,7 +230,7 @@ U_NAMESPACE_END
230
230
 
231
231
  /**
232
232
  * Prepare the input buffer for use in applications with the given profile. This operation maps, normalizes(NFKC),
233
- * checks for prohited and BiDi characters in the order defined by RFC 3454
233
+ * checks for prohibited and BiDi characters in the order defined by RFC 3454
234
234
  * depending on the options specified in the profile.
235
235
  *
236
236
  * @param prep The profile to use
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  ******************************************************************************
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  **********************************************************************
@@ -30,17 +30,11 @@
30
30
  * C++ I/O stream API.
31
31
  */
32
32
 
33
- #if !defined(_MSC_VER)
33
+ #if defined(__GLIBCXX__)
34
34
  namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
35
35
  #endif
36
36
 
37
- #if U_IOSTREAM_SOURCE >= 199711
38
- #if (__GNUC__ == 2)
39
37
  #include <iostream>
40
- #else
41
- #include <istream>
42
- #include <ostream>
43
- #endif
44
38
 
45
39
  U_NAMESPACE_BEGIN
46
40
 
@@ -67,4 +61,3 @@ U_NAMESPACE_END
67
61
  /* No operator for UChar because it can conflict with wchar_t */
68
62
 
69
63
  #endif
70
- #endif
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  **********************************************************************
@@ -403,7 +403,7 @@ u_strspn(const UChar *string, const UChar *matchSet);
403
403
  * @param saveState The current pointer within the original string,
404
404
  * which is set by this function. The saveState
405
405
  * parameter should the address of a local variable of type
406
- * UChar *. (i.e. defined "Uhar *myLocalSaveState" and use
406
+ * UChar *. (i.e. defined "UChar *myLocalSaveState" and use
407
407
  * &myLocalSaveState for this parameter).
408
408
  * @return A pointer to the next token found in src, or NULL
409
409
  * when there are no more tokens.
@@ -497,16 +497,6 @@ u_strCompare(const UChar *s1, int32_t length1,
497
497
  U_STABLE int32_t U_EXPORT2
498
498
  u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrder);
499
499
 
500
- #ifndef U_COMPARE_CODE_POINT_ORDER
501
- /* see also unistr.h and unorm.h */
502
- /**
503
- * Option bit for u_strCaseCompare, u_strcasecmp, unorm_compare, etc:
504
- * Compare strings in code point order instead of code unit order.
505
- * @stable ICU 2.2
506
- */
507
- #define U_COMPARE_CODE_POINT_ORDER 0x8000
508
- #endif
509
-
510
500
  /**
511
501
  * Compare two strings case-insensitively using full case folding.
512
502
  * This is equivalent to
@@ -894,7 +884,7 @@ u_memrchr32(const UChar *s, UChar32 c, int32_t count);
894
884
  * Unicode String literals in C.
895
885
  * We need one macro to declare a variable for the string
896
886
  * and to statically preinitialize it if possible,
897
- * and a second macro to dynamically intialize such a string variable if necessary.
887
+ * and a second macro to dynamically initialize such a string variable if necessary.
898
888
  *
899
889
  * The macros are defined for maximum performance.
900
890
  * They work only for strings that contain "invariant characters", i.e.,
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  *******************************************************************************
@@ -6,7 +6,7 @@
6
6
  * Corporation and others. All Rights Reserved.
7
7
  *******************************************************************************
8
8
  * file name: udicttrie.h
9
- * encoding: US-ASCII
9
+ * encoding: UTF-8
10
10
  * tab size: 8 (not used)
11
11
  * indentation:4
12
12
  *
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  *******************************************************************************
@@ -8,7 +8,7 @@
8
8
  *
9
9
  *******************************************************************************
10
10
  * file name: utext.h
11
- * encoding: US-ASCII
11
+ * encoding: UTF-8
12
12
  * tab size: 8 (not used)
13
13
  * indentation:4
14
14
  *
@@ -389,7 +389,7 @@ utext_equals(const UText *a, const UText *b);
389
389
 
390
390
  /*****************************************************************************
391
391
  *
392
- * Functions to work with the text represeted by a UText wrapper
392
+ * Functions to work with the text represented by a UText wrapper
393
393
  *
394
394
  *****************************************************************************/
395
395
 
@@ -433,7 +433,7 @@ utext_isLengthExpensive(const UText *ut);
433
433
  *
434
434
  * The iteration position will be set to the start of the returned code point.
435
435
  *
436
- * This function is roughly equivalent to the the sequence
436
+ * This function is roughly equivalent to the sequence
437
437
  * utext_setNativeIndex(index);
438
438
  * utext_current32();
439
439
  * (There is a subtle difference if the index is out of bounds by being less than zero -
@@ -592,7 +592,7 @@ U_STABLE void U_EXPORT2
592
592
  utext_setNativeIndex(UText *ut, int64_t nativeIndex);
593
593
 
594
594
  /**
595
- * Move the iterator postion by delta code points. The number of code points
595
+ * Move the iterator position by delta code points. The number of code points
596
596
  * is a signed number; a negative delta will move the iterator backwards,
597
597
  * towards the start of the text.
598
598
  * <p>
@@ -611,7 +611,7 @@ U_STABLE UBool U_EXPORT2
611
611
  utext_moveIndex32(UText *ut, int32_t delta);
612
612
 
613
613
  /**
614
- * Get the native index of the character preceeding the current position.
614
+ * Get the native index of the character preceding the current position.
615
615
  * If the iteration position is already at the start of the text, zero
616
616
  * is returned.
617
617
  * The value returned is the same as that obtained from the following sequence,
@@ -628,7 +628,7 @@ utext_moveIndex32(UText *ut, int32_t delta);
628
628
  * native index of the character most recently returned from utext_next().
629
629
  *
630
630
  * @param ut the text to be accessed
631
- * @return the native index of the character preceeding the current index position,
631
+ * @return the native index of the character preceding the current index position,
632
632
  * or zero if the current position is at the start of the text.
633
633
  * @stable ICU 3.6
634
634
  */
@@ -655,10 +655,10 @@ utext_getPreviousNativeIndex(UText *ut);
655
655
  * @param ut the UText from which to extract data.
656
656
  * @param nativeStart the native index of the first character to extract.\
657
657
  * If the specified index is out of range,
658
- * it will be pinned to to be within 0 <= index <= textLength
658
+ * it will be pinned to be within 0 <= index <= textLength
659
659
  * @param nativeLimit the native string index of the position following the last
660
660
  * character to extract. If the specified index is out of range,
661
- * it will be pinned to to be within 0 <= index <= textLength.
661
+ * it will be pinned to be within 0 <= index <= textLength.
662
662
  * nativeLimit must be >= nativeStart.
663
663
  * @param dest the UChar (UTF-16) buffer into which the extracted text is placed
664
664
  * @param destCapacity The size, in UChars, of the destination buffer. May be zero
@@ -768,7 +768,7 @@ utext_extract(UText *ut,
768
768
  */
769
769
  #define UTEXT_SETNATIVEINDEX(ut, ix) \
770
770
  { int64_t __offset = (ix) - (ut)->chunkNativeStart; \
771
- if (__offset>=0 && __offset<=(int64_t)(ut)->nativeIndexingLimit) { \
771
+ if (__offset>=0 && __offset<(int64_t)(ut)->nativeIndexingLimit && (ut)->chunkContents[__offset]<0xdc00) { \
772
772
  (ut)->chunkOffset=(int32_t)__offset; \
773
773
  } else { \
774
774
  utext_setNativeIndex((ut), (ix)); } }
@@ -906,7 +906,7 @@ utext_copy(UText *ut,
906
906
  * Caution: freezing a UText will disable changes made via the specific
907
907
  * frozen UText wrapper only; it will not have any effect on the ability to
908
908
  * directly modify the text by bypassing the UText. Any such backdoor modifications
909
- * are always an error while UText access is occuring because the underlying
909
+ * are always an error while UText access is occurring because the underlying
910
910
  * text can get out of sync with UText's buffering.
911
911
  * </p>
912
912
  *
@@ -1054,7 +1054,7 @@ UTextAccess(UText *ut, int64_t nativeIndex, UBool forward);
1054
1054
  * be NUL-terminated if there is sufficient space in the destination buffer.
1055
1055
  *
1056
1056
  * @param ut the UText from which to extract data.
1057
- * @param nativeStart the native index of the first characer to extract.
1057
+ * @param nativeStart the native index of the first character to extract.
1058
1058
  * @param nativeLimit the native string index of the position following the last
1059
1059
  * character to extract.
1060
1060
  * @param dest the UChar (UTF-16) buffer into which the extracted text is placed
@@ -1211,7 +1211,7 @@ UTextClose(UText *ut);
1211
1211
  struct UTextFuncs {
1212
1212
  /**
1213
1213
  * (public) Function table size, sizeof(UTextFuncs)
1214
- * Intended for use should the table grow to accomodate added
1214
+ * Intended for use should the table grow to accommodate added
1215
1215
  * functions in the future, to allow tests for older format
1216
1216
  * function tables that do not contain the extensions.
1217
1217
  *
@@ -1345,7 +1345,7 @@ typedef struct UTextFuncs UTextFuncs;
1345
1345
  struct UText {
1346
1346
  /**
1347
1347
  * (private) Magic. Used to help detect when UText functions are handed
1348
- * invalid or unitialized UText structs.
1348
+ * invalid or uninitialized UText structs.
1349
1349
  * utext_openXYZ() functions take an initialized,
1350
1350
  * but not necessarily open, UText struct as an
1351
1351
  * optional fill-in parameter. This magic field
@@ -1367,7 +1367,7 @@ struct UText {
1367
1367
 
1368
1368
 
1369
1369
  /**
1370
- * Text provider properties. This set of flags is maintainted by the
1370
+ * Text provider properties. This set of flags is maintained by the
1371
1371
  * text provider implementation.
1372
1372
  * @stable ICU 3.4
1373
1373
  */
@@ -1452,7 +1452,7 @@ struct UText {
1452
1452
  void *pExtra;
1453
1453
 
1454
1454
  /**
1455
- * (protected) Pointer to string or text-containin object or similar.
1455
+ * (protected) Pointer to string or text-containing object or similar.
1456
1456
  * This is the source of the text that this UText is wrapping, in a format
1457
1457
  * that is known to the text provider functions.
1458
1458
  * @stable ICU 3.4
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  *******************************************************************************
@@ -8,7 +8,7 @@
8
8
  *
9
9
  *******************************************************************************
10
10
  * file name: utf.h
11
- * encoding: US-ASCII
11
+ * encoding: UTF-8
12
12
  * tab size: 8 (not used)
13
13
  * indentation:4
14
14
  *
@@ -23,9 +23,6 @@
23
23
  * This file defines macros for checking whether a code point is
24
24
  * a surrogate or a non-character etc.
25
25
  *
26
- * The UChar and UChar32 data types for Unicode code units and code points
27
- * are defined in umachine.h because they can be machine-dependent.
28
- *
29
26
  * If U_NO_DEFAULT_INCLUDE_UTF_HEADERS is 0 then utf.h is included by utypes.h
30
27
  * and itself includes utf8.h and utf16.h after some
31
28
  * common definitions.
@@ -50,11 +47,11 @@
50
47
  * but are optimized for the much more frequently occurring BMP code points.
51
48
  *
52
49
  * umachine.h defines UChar to be an unsigned 16-bit integer.
53
- * Where available, UChar is defined to be a char16_t
54
- * or a wchar_t (if that is an unsigned 16-bit type), otherwise uint16_t.
50
+ * Since ICU 59, ICU uses char16_t in C++, UChar only in C,
51
+ * and defines UChar=char16_t by default. See the UChar API docs for details.
55
52
  *
56
53
  * UChar32 is defined to be a signed 32-bit integer (int32_t), large enough for a 21-bit
57
- * Unicode code point (Unicode scalar value, 0..0x10ffff).
54
+ * Unicode code point (Unicode scalar value, 0..0x10ffff) and U_SENTINEL (-1).
58
55
  * Before ICU 2.4, the definition of UChar32 was similarly platform-dependent as
59
56
  * the definition of UChar. For details see the documentation for UChar32 itself.
60
57
  *
@@ -63,11 +60,20 @@
63
60
  * For actual Unicode character properties see uchar.h.
64
61
  *
65
62
  * By default, string operations must be done with error checking in case
66
- * a string is not well-formed UTF-16.
67
- * The macros will detect if a surrogate code unit is unpaired
63
+ * a string is not well-formed UTF-16 or UTF-8.
64
+ *
65
+ * The U16_ macros detect if a surrogate code unit is unpaired
68
66
  * (lead unit without trail unit or vice versa) and just return the unit itself
69
67
  * as the code point.
70
68
  *
69
+ * The U8_ macros detect illegal byte sequences and return a negative value.
70
+ * Starting with ICU 60, the observable length of a single illegal byte sequence
71
+ * skipped by one of these macros follows the Unicode 6+ recommendation
72
+ * which is consistent with the W3C Encoding Standard.
73
+ *
74
+ * There are ..._OR_FFFD versions of both U16_ and U8_ macros
75
+ * that return U+FFFD for illegal code unit sequences.
76
+ *
71
77
  * The regular "safe" macros require that the initial, passed-in string index
72
78
  * is within bounds. They only check the index when they read more than one
73
79
  * code unit. This is usually done with code similar to the following loop:
@@ -91,10 +97,7 @@
91
97
  * The performance differences are much larger here because UTF-8 provides so
92
98
  * many opportunities for malformed sequences.
93
99
  * The unsafe UTF-8 macros are entirely implemented inside the macro definitions
94
- * and are fast, while the safe UTF-8 macros call functions for all but the
95
- * trivial (ASCII) cases.
96
- * (ICU 3.6 optimizes U8_NEXT() and U8_APPEND() to handle most other common
97
- * characters inline as well.)
100
+ * and are fast, while the safe UTF-8 macros call functions for some complicated cases.
98
101
  *
99
102
  * Unlike with UTF-16, malformed sequences cannot be expressed with distinct
100
103
  * code point values (0..U+10ffff). They are indicated with negative values instead.
@@ -126,8 +129,7 @@
126
129
  */
127
130
  #define U_IS_UNICODE_NONCHAR(c) \
128
131
  ((c)>=0xfdd0 && \
129
- ((uint32_t)(c)<=0xfdef || ((c)&0xfffe)==0xfffe) && \
130
- (uint32_t)(c)<=0x10ffff)
132
+ ((c)<=0xfdef || ((c)&0xfffe)==0xfffe) && (c)<=0x10ffff)
131
133
 
132
134
  /**
133
135
  * Is c a Unicode code point value (0..U+10ffff)
@@ -148,9 +150,7 @@
148
150
  */
149
151
  #define U_IS_UNICODE_CHAR(c) \
150
152
  ((uint32_t)(c)<0xd800 || \
151
- ((uint32_t)(c)>0xdfff && \
152
- (uint32_t)(c)<=0x10ffff && \
153
- !U_IS_UNICODE_NONCHAR(c)))
153
+ (0xdfff<(c) && (c)<=0x10ffff && !U_IS_UNICODE_NONCHAR(c)))
154
154
 
155
155
  /**
156
156
  * Is this code point a BMP code point (U+0000..U+ffff)?
@@ -1,4 +1,4 @@
1
- // Copyright (C) 2016 and later: Unicode, Inc. and others.
1
+ // © 2016 and later: Unicode, Inc. and others.
2
2
  // License & terms of use: http://www.unicode.org/copyright.html
3
3
  /*
4
4
  *******************************************************************************
@@ -8,7 +8,7 @@
8
8
  *
9
9
  *******************************************************************************
10
10
  * file name: utf16.h
11
- * encoding: US-ASCII
11
+ * encoding: UTF-8
12
12
  * tab size: 8 (not used)
13
13
  * indentation:4
14
14
  *
@@ -185,8 +185,8 @@
185
185
  *
186
186
  * The length can be negative for a NUL-terminated string.
187
187
  *
188
- * If the offset points to a single, unpaired surrogate, then that itself
189
- * will be returned as the code point.
188
+ * If the offset points to a single, unpaired surrogate, then
189
+ * c is set to that unpaired surrogate.
190
190
  * Iteration through a string is more efficient with U16_NEXT_UNSAFE or U16_NEXT.
191
191
  *
192
192
  * @param s const UChar * string
@@ -213,6 +213,53 @@
213
213
  } \
214
214
  }
215
215
 
216
+ #ifndef U_HIDE_DRAFT_API
217
+
218
+ /**
219
+ * Get a code point from a string at a random-access offset,
220
+ * without changing the offset.
221
+ * "Safe" macro, handles unpaired surrogates and checks for string boundaries.
222
+ *
223
+ * The offset may point to either the lead or trail surrogate unit
224
+ * for a supplementary code point, in which case the macro will read
225
+ * the adjacent matching surrogate as well.
226
+ *
227
+ * The length can be negative for a NUL-terminated string.
228
+ *
229
+ * If the offset points to a single, unpaired surrogate, then
230
+ * c is set to U+FFFD.
231
+ * Iteration through a string is more efficient with U16_NEXT_UNSAFE or U16_NEXT_OR_FFFD.
232
+ *
233
+ * @param s const UChar * string
234
+ * @param start starting string offset (usually 0)
235
+ * @param i string offset, must be start<=i<length
236
+ * @param length string length
237
+ * @param c output UChar32 variable
238
+ * @see U16_GET_UNSAFE
239
+ * @draft ICU 60
240
+ */
241
+ #define U16_GET_OR_FFFD(s, start, i, length, c) { \
242
+ (c)=(s)[i]; \
243
+ if(U16_IS_SURROGATE(c)) { \
244
+ uint16_t __c2; \
245
+ if(U16_IS_SURROGATE_LEAD(c)) { \
246
+ if((i)+1!=(length) && U16_IS_TRAIL(__c2=(s)[(i)+1])) { \
247
+ (c)=U16_GET_SUPPLEMENTARY((c), __c2); \
248
+ } else { \
249
+ (c)=0xfffd; \
250
+ } \
251
+ } else { \
252
+ if((i)>(start) && U16_IS_LEAD(__c2=(s)[(i)-1])) { \
253
+ (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \
254
+ } else { \
255
+ (c)=0xfffd; \
256
+ } \
257
+ } \
258
+ } \
259
+ }
260
+
261
+ #endif // U_HIDE_DRAFT_API
262
+
216
263
  /* definitions with forward iteration --------------------------------------- */
217
264
 
218
265
  /**
@@ -253,8 +300,7 @@
253
300
  * for a supplementary code point, in which case the macro will read
254
301
  * the following trail surrogate as well.
255
302
  * If the offset points to a trail surrogate or
256
- * to a single, unpaired lead surrogate, then that itself
257
- * will be returned as the code point.
303
+ * to a single, unpaired lead surrogate, then c is set to that unpaired surrogate.
258
304
  *
259
305
  * @param s const UChar * string
260
306
  * @param i string offset, must be i<length
@@ -274,6 +320,44 @@
274
320
  } \
275
321
  }
276
322
 
323
+ #ifndef U_HIDE_DRAFT_API
324
+
325
+ /**
326
+ * Get a code point from a string at a code point boundary offset,
327
+ * and advance the offset to the next code point boundary.
328
+ * (Post-incrementing forward iteration.)
329
+ * "Safe" macro, handles unpaired surrogates and checks for string boundaries.
330
+ *
331
+ * The length can be negative for a NUL-terminated string.
332
+ *
333
+ * The offset may point to the lead surrogate unit
334
+ * for a supplementary code point, in which case the macro will read
335
+ * the following trail surrogate as well.
336
+ * If the offset points to a trail surrogate or
337
+ * to a single, unpaired lead surrogate, then c is set to U+FFFD.
338
+ *
339
+ * @param s const UChar * string
340
+ * @param i string offset, must be i<length
341
+ * @param length string length
342
+ * @param c output UChar32 variable
343
+ * @see U16_NEXT_UNSAFE
344
+ * @draft ICU 60
345
+ */
346
+ #define U16_NEXT_OR_FFFD(s, i, length, c) { \
347
+ (c)=(s)[(i)++]; \
348
+ if(U16_IS_SURROGATE(c)) { \
349
+ uint16_t __c2; \
350
+ if(U16_IS_SURROGATE_LEAD(c) && (i)!=(length) && U16_IS_TRAIL(__c2=(s)[(i)])) { \
351
+ ++(i); \
352
+ (c)=U16_GET_SUPPLEMENTARY((c), __c2); \
353
+ } else { \
354
+ (c)=0xfffd; \
355
+ } \
356
+ } \
357
+ }
358
+
359
+ #endif // U_HIDE_DRAFT_API
360
+
277
361
  /**
278
362
  * Append a code point to a string, overwriting 1 or 2 code units.
279
363
  * The offset points to the current end of the string contents
@@ -481,8 +565,7 @@
481
565
  * for a supplementary code point, then the macro will read
482
566
  * the preceding lead surrogate as well.
483
567
  * If the offset is behind a lead surrogate or behind a single, unpaired
484
- * trail surrogate, then that itself
485
- * will be returned as the code point.
568
+ * trail surrogate, then c is set to that unpaired surrogate.
486
569
  *
487
570
  * @param s const UChar * string
488
571
  * @param start starting string offset (usually 0)
@@ -502,6 +585,43 @@
502
585
  } \
503
586
  }
504
587
 
588
+ #ifndef U_HIDE_DRAFT_API
589
+
590
+ /**
591
+ * Move the string offset from one code point boundary to the previous one
592
+ * and get the code point between them.
593
+ * (Pre-decrementing backward iteration.)
594
+ * "Safe" macro, handles unpaired surrogates and checks for string boundaries.
595
+ *
596
+ * The input offset may be the same as the string length.
597
+ * If the offset is behind a trail surrogate unit
598
+ * for a supplementary code point, then the macro will read
599
+ * the preceding lead surrogate as well.
600
+ * If the offset is behind a lead surrogate or behind a single, unpaired
601
+ * trail surrogate, then c is set to U+FFFD.
602
+ *
603
+ * @param s const UChar * string
604
+ * @param start starting string offset (usually 0)
605
+ * @param i string offset, must be start<i
606
+ * @param c output UChar32 variable
607
+ * @see U16_PREV_UNSAFE
608
+ * @draft ICU 60
609
+ */
610
+ #define U16_PREV_OR_FFFD(s, start, i, c) { \
611
+ (c)=(s)[--(i)]; \
612
+ if(U16_IS_SURROGATE(c)) { \
613
+ uint16_t __c2; \
614
+ if(U16_IS_SURROGATE_TRAIL(c) && (i)>(start) && U16_IS_LEAD(__c2=(s)[(i)-1])) { \
615
+ --(i); \
616
+ (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \
617
+ } else { \
618
+ (c)=0xfffd; \
619
+ } \
620
+ } \
621
+ }
622
+
623
+ #endif // U_HIDE_DRAFT_API
624
+
505
625
  /**
506
626
  * Move the string offset from one code point boundary to the previous one.
507
627
  * (Pre-decrementing backward iteration.)