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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.)