@hxa-rn/react-native-gcanvas 6.0.24-beta.1

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 (1280) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +207 -0
  4. package/harmony/gcanvas/LICENSE +21 -0
  5. package/harmony/gcanvas/NOTICE +33 -0
  6. package/harmony/gcanvas/OAT.xml +38 -0
  7. package/harmony/gcanvas/build-profile.json5 +16 -0
  8. package/harmony/gcanvas/consumer-rules.txt +0 -0
  9. package/harmony/gcanvas/hvigorfile.ts +2 -0
  10. package/harmony/gcanvas/index.ets +1 -0
  11. package/harmony/gcanvas/oh-package.json5 +14 -0
  12. package/harmony/gcanvas/src/main/cpp/CMakeLists.txt +126 -0
  13. package/harmony/gcanvas/src/main/cpp/GCanvasEngine.cpp +665 -0
  14. package/harmony/gcanvas/src/main/cpp/GCanvasEngine.h +123 -0
  15. package/harmony/gcanvas/src/main/cpp/GCanvasNapi.cpp +485 -0
  16. package/harmony/gcanvas/src/main/cpp/GCanvasXComponent.cpp +166 -0
  17. package/harmony/gcanvas/src/main/cpp/GcanvasPackage.h +24 -0
  18. package/harmony/gcanvas/src/main/cpp/core/CMakeLists.txt +221 -0
  19. package/harmony/gcanvas/src/main/cpp/core/README.md +1 -0
  20. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/gmanager.cpp +69 -0
  21. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/gmanager.h +34 -0
  22. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/jsc/weexjsc.h +14 -0
  23. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/util/auto_ptr.h +110 -0
  24. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/util/i_delete.h +23 -0
  25. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/util/ref_count.h +34 -0
  26. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/GcanvasWeexOhos.cpp +28 -0
  27. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/GcanvasWeexOhos.h +27 -0
  28. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/grenderer.cpp +677 -0
  29. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/grenderer.h +127 -0
  30. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/LICENSE.TXT +46 -0
  31. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/README +107 -0
  32. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftconfig.h +51 -0
  33. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftheader.h +836 -0
  34. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftmodule.h +33 -0
  35. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftoption.h +1030 -0
  36. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftstdlib.h +185 -0
  37. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/integer-types.h +250 -0
  38. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/mac-support.h +49 -0
  39. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/public-macros.h +138 -0
  40. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/freetype.h +5289 -0
  41. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftadvanc.h +188 -0
  42. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbbox.h +101 -0
  43. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbdf.h +212 -0
  44. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbitmap.h +329 -0
  45. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbzip2.h +102 -0
  46. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftcache.h +1087 -0
  47. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftchapters.h +168 -0
  48. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftcid.h +167 -0
  49. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftcolor.h +1667 -0
  50. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftdriver.h +1320 -0
  51. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fterrdef.h +283 -0
  52. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fterrors.h +296 -0
  53. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftfntfmt.h +93 -0
  54. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftgasp.h +143 -0
  55. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftglyph.h +750 -0
  56. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftgxval.h +354 -0
  57. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftgzip.h +151 -0
  58. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftimage.h +1289 -0
  59. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftincrem.h +348 -0
  60. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlcdfil.h +323 -0
  61. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlist.h +296 -0
  62. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlogging.h +184 -0
  63. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlzw.h +100 -0
  64. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmac.h +289 -0
  65. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmm.h +834 -0
  66. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmodapi.h +807 -0
  67. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmoderr.h +204 -0
  68. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftotval.h +206 -0
  69. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftoutln.h +588 -0
  70. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftparams.h +218 -0
  71. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftpfr.h +179 -0
  72. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftrender.h +244 -0
  73. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsizes.h +159 -0
  74. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsnames.h +272 -0
  75. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftstroke.h +773 -0
  76. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsynth.h +104 -0
  77. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsystem.h +350 -0
  78. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fttrigon.h +350 -0
  79. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fttypes.h +617 -0
  80. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftwinfnt.h +276 -0
  81. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/autohint.h +234 -0
  82. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/cffotypes.h +107 -0
  83. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/cfftypes.h +416 -0
  84. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/compiler-macros.h +343 -0
  85. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftcalc.h +584 -0
  86. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftdebug.h +442 -0
  87. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftdrv.h +289 -0
  88. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftgloadr.h +147 -0
  89. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/fthash.h +135 -0
  90. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftmemory.h +401 -0
  91. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftmmtypes.h +91 -0
  92. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftobjs.h +1232 -0
  93. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftpsprop.h +47 -0
  94. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftrfork.h +245 -0
  95. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftserv.h +495 -0
  96. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftstream.h +570 -0
  97. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/fttrace.h +173 -0
  98. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftvalid.h +160 -0
  99. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/psaux.h +1447 -0
  100. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/pshints.h +699 -0
  101. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svbdf.h +66 -0
  102. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svcfftl.h +90 -0
  103. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svcid.h +69 -0
  104. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svfntfmt.h +55 -0
  105. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svgldict.h +72 -0
  106. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svgxval.h +72 -0
  107. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svkern.h +51 -0
  108. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svmetric.h +131 -0
  109. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svmm.h +214 -0
  110. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svotval.h +55 -0
  111. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpfr.h +65 -0
  112. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpostnm.h +65 -0
  113. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svprop.h +66 -0
  114. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpscmap.h +145 -0
  115. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpsinfo.h +86 -0
  116. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svsfnt.h +88 -0
  117. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svttcmap.h +90 -0
  118. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svtteng.h +53 -0
  119. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svttglyf.h +56 -0
  120. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svwinfnt.h +50 -0
  121. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/sfnt.h +1099 -0
  122. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/svginterface.h +46 -0
  123. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/t1types.h +307 -0
  124. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/tttypes.h +1747 -0
  125. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/wofftypes.h +312 -0
  126. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/otsvg.h +336 -0
  127. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/t1tables.h +735 -0
  128. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ttnameid.h +1235 -0
  129. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/tttables.h +856 -0
  130. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/tttags.h +124 -0
  131. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/ft2build.h +42 -0
  132. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.c +779 -0
  133. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.cin +39 -0
  134. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.dat +1121 -0
  135. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.h +429 -0
  136. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.hin +146 -0
  137. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afcjk.c +2383 -0
  138. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afcjk.h +141 -0
  139. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afcover.h +105 -0
  140. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afdummy.c +77 -0
  141. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afdummy.h +40 -0
  142. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aferrors.h +42 -0
  143. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afglobal.c +513 -0
  144. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afglobal.h +173 -0
  145. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afhints.c +1796 -0
  146. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afhints.h +467 -0
  147. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afindic.c +157 -0
  148. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afindic.h +41 -0
  149. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aflatin.c +3643 -0
  150. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aflatin.h +194 -0
  151. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afloader.c +706 -0
  152. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afloader.h +91 -0
  153. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afmodule.c +527 -0
  154. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afmodule.h +55 -0
  155. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afranges.c +1072 -0
  156. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afranges.h +47 -0
  157. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afscript.h +408 -0
  158. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afshaper.c +690 -0
  159. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afshaper.h +71 -0
  160. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afstyles.h +487 -0
  161. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aftypes.h +511 -0
  162. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afws-decl.h +33 -0
  163. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afws-iter.h +31 -0
  164. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/autofit.c +35 -0
  165. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/ft-hb.c +115 -0
  166. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/ft-hb.h +48 -0
  167. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/module.mk +23 -0
  168. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/rules.mk +88 -0
  169. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftadvanc.c +174 -0
  170. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbase.c +41 -0
  171. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbase.h +82 -0
  172. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbbox.c +542 -0
  173. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbdf.c +90 -0
  174. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbitmap.c +1144 -0
  175. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftcalc.c +1126 -0
  176. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftcid.c +117 -0
  177. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftcolor.c +156 -0
  178. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftdbgmem.c +971 -0
  179. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftdebug.c +644 -0
  180. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fterrors.c +45 -0
  181. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftfntfmt.c +54 -0
  182. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftfstype.c +61 -0
  183. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftgasp.c +60 -0
  184. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftgloadr.c +383 -0
  185. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftglyph.c +911 -0
  186. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftgxval.c +141 -0
  187. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fthash.c +338 -0
  188. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftinit.c +263 -0
  189. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftlcdfil.c +437 -0
  190. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftmac.c +1099 -0
  191. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftmm.c +704 -0
  192. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftobjs.c +5917 -0
  193. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftotval.c +90 -0
  194. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftoutln.c +1120 -0
  195. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftpatent.c +50 -0
  196. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftpfr.c +152 -0
  197. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftpsprop.c +284 -0
  198. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftrfork.c +934 -0
  199. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftsnames.c +185 -0
  200. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftstream.c +872 -0
  201. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftstroke.c +2403 -0
  202. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftsynth.c +180 -0
  203. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftsystem.c +338 -0
  204. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fttrigon.c +517 -0
  205. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fttype1.c +126 -0
  206. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftutil.c +442 -0
  207. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftver.rc +61 -0
  208. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftwinfnt.c +52 -0
  209. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/md5.c +291 -0
  210. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/md5.h +45 -0
  211. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/rules.mk +108 -0
  212. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/README +152 -0
  213. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdf.c +34 -0
  214. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdf.h +253 -0
  215. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdfdrivr.c +1013 -0
  216. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdfdrivr.h +72 -0
  217. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdferror.h +45 -0
  218. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdflib.c +2378 -0
  219. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/module.mk +34 -0
  220. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/rules.mk +84 -0
  221. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bzip2/ftbzip2.c +535 -0
  222. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bzip2/rules.mk +64 -0
  223. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcache.c +31 -0
  224. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcbasic.c +598 -0
  225. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccache.c +584 -0
  226. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccache.h +359 -0
  227. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccback.h +85 -0
  228. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccmap.c +323 -0
  229. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcerror.h +42 -0
  230. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcglyph.c +204 -0
  231. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcglyph.h +314 -0
  232. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcimage.c +158 -0
  233. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcimage.h +106 -0
  234. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmanag.c +677 -0
  235. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmanag.h +175 -0
  236. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmru.c +341 -0
  237. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmru.h +242 -0
  238. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcsbits.c +413 -0
  239. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcsbits.h +91 -0
  240. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/rules.mk +85 -0
  241. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cff.c +28 -0
  242. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffcmap.c +230 -0
  243. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffcmap.h +67 -0
  244. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffdrivr.c +1263 -0
  245. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffdrivr.h +35 -0
  246. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cfferrs.h +42 -0
  247. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffgload.c +762 -0
  248. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffgload.h +62 -0
  249. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffload.c +2570 -0
  250. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffload.h +124 -0
  251. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffobjs.c +1175 -0
  252. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffobjs.h +84 -0
  253. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffparse.c +1550 -0
  254. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffparse.h +144 -0
  255. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cfftoken.h +150 -0
  256. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/module.mk +23 -0
  257. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/rules.mk +75 -0
  258. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/ciderrs.h +41 -0
  259. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidgload.c +618 -0
  260. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidgload.h +58 -0
  261. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidload.c +937 -0
  262. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidload.h +52 -0
  263. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidobjs.c +543 -0
  264. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidobjs.h +154 -0
  265. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidparse.c +311 -0
  266. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidparse.h +130 -0
  267. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidriver.c +274 -0
  268. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidriver.h +36 -0
  269. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidtoken.h +115 -0
  270. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/module.mk +23 -0
  271. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/rules.mk +73 -0
  272. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/type1cid.c +28 -0
  273. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/dlg/dlgwrap.c +32 -0
  274. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/dlg/rules.mk +70 -0
  275. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/README +532 -0
  276. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvalid.c +46 -0
  277. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvalid.h +107 -0
  278. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvbsln.c +334 -0
  279. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvcommn.c +1747 -0
  280. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvcommn.h +581 -0
  281. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxverror.h +51 -0
  282. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvfeat.c +339 -0
  283. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvfeat.h +173 -0
  284. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvfgen.c +484 -0
  285. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvjust.c +721 -0
  286. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvkern.c +920 -0
  287. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvlcar.c +224 -0
  288. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmod.c +288 -0
  289. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmod.h +46 -0
  290. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort.c +301 -0
  291. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort.h +99 -0
  292. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort0.c +152 -0
  293. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort1.c +260 -0
  294. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort2.c +312 -0
  295. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort4.c +126 -0
  296. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort5.c +234 -0
  297. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx.c +199 -0
  298. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx.h +73 -0
  299. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx0.c +112 -0
  300. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx1.c +278 -0
  301. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx2.c +331 -0
  302. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx4.c +56 -0
  303. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx5.c +226 -0
  304. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvopbd.c +218 -0
  305. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvprop.c +330 -0
  306. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvtrak.c +288 -0
  307. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/module.mk +23 -0
  308. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/rules.mk +98 -0
  309. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/README.freetype +22 -0
  310. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/adler32.c +168 -0
  311. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/crc32.c +1061 -0
  312. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/crc32.h +9446 -0
  313. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/ftgzip.c +805 -0
  314. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/ftzconf.h +551 -0
  315. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/gzguts.h +218 -0
  316. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inffast.c +320 -0
  317. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inffast.h +11 -0
  318. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inffixed.h +94 -0
  319. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inflate.c +1534 -0
  320. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inflate.h +131 -0
  321. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inftrees.c +299 -0
  322. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inftrees.h +67 -0
  323. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/patches/freetype-zlib.diff +451 -0
  324. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/rules.mk +81 -0
  325. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/zlib.h +1972 -0
  326. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/zutil.c +305 -0
  327. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/zutil.h +281 -0
  328. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/ftlzw.c +415 -0
  329. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/ftzopen.c +429 -0
  330. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/ftzopen.h +174 -0
  331. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/rules.mk +72 -0
  332. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/module.mk +23 -0
  333. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvalid.c +31 -0
  334. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvalid.h +77 -0
  335. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvbase.c +345 -0
  336. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvcommn.c +1099 -0
  337. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvcommn.h +468 -0
  338. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otverror.h +42 -0
  339. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgdef.c +303 -0
  340. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgpos.c +1051 -0
  341. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgpos.h +36 -0
  342. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgsub.c +627 -0
  343. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvjstf.c +259 -0
  344. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvmath.c +453 -0
  345. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvmod.c +281 -0
  346. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvmod.h +38 -0
  347. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/rules.mk +81 -0
  348. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/README +96 -0
  349. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/module.mk +34 -0
  350. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcf.c +35 -0
  351. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcf.h +251 -0
  352. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfdrivr.c +836 -0
  353. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfdrivr.h +44 -0
  354. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcferror.h +41 -0
  355. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfread.c +1731 -0
  356. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfread.h +44 -0
  357. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfutil.c +119 -0
  358. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfutil.h +55 -0
  359. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/rules.mk +82 -0
  360. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/module.mk +23 -0
  361. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfr.c +29 -0
  362. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrcmap.c +188 -0
  363. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrcmap.h +45 -0
  364. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrdrivr.c +212 -0
  365. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrdrivr.h +36 -0
  366. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrerror.h +41 -0
  367. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrgload.c +849 -0
  368. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrgload.h +49 -0
  369. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrload.c +1062 -0
  370. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrload.h +123 -0
  371. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrobjs.c +603 -0
  372. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrobjs.h +96 -0
  373. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrsbit.c +813 -0
  374. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrsbit.h +37 -0
  375. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrtypes.h +331 -0
  376. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/rules.mk +76 -0
  377. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/afmparse.c +1094 -0
  378. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/afmparse.h +88 -0
  379. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/cffdecode.c +2411 -0
  380. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/cffdecode.h +63 -0
  381. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/module.mk +23 -0
  382. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psarrst.c +240 -0
  383. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psarrst.h +99 -0
  384. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psaux.c +40 -0
  385. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psauxerr.h +42 -0
  386. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psauxmod.c +190 -0
  387. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psauxmod.h +60 -0
  388. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psblues.c +571 -0
  389. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psblues.h +185 -0
  390. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psconv.c +610 -0
  391. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psconv.h +70 -0
  392. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pserror.c +52 -0
  393. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pserror.h +120 -0
  394. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psfixed.h +94 -0
  395. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psfont.c +566 -0
  396. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psfont.h +134 -0
  397. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psft.c +895 -0
  398. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psft.h +167 -0
  399. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psglue.h +144 -0
  400. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pshints.c +1952 -0
  401. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pshints.h +288 -0
  402. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psintrp.c +3050 -0
  403. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psintrp.h +83 -0
  404. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psobjs.c +2560 -0
  405. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psobjs.h +312 -0
  406. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psread.c +112 -0
  407. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psread.h +68 -0
  408. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psstack.c +329 -0
  409. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psstack.h +122 -0
  410. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pstypes.h +77 -0
  411. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/rules.mk +89 -0
  412. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1cmap.c +393 -0
  413. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1cmap.h +104 -0
  414. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1decode.c +2159 -0
  415. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1decode.h +73 -0
  416. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/module.mk +23 -0
  417. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshalgo.c +2191 -0
  418. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshalgo.h +233 -0
  419. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshglob.c +795 -0
  420. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshglob.h +196 -0
  421. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshinter.c +27 -0
  422. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshmod.c +125 -0
  423. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshmod.h +38 -0
  424. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshnterr.h +41 -0
  425. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshrec.c +1224 -0
  426. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshrec.h +171 -0
  427. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/rules.mk +75 -0
  428. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/module.mk +23 -0
  429. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psmodule.c +621 -0
  430. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psmodule.h +37 -0
  431. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psnamerr.h +42 -0
  432. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psnames.c +24 -0
  433. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/pstables.h +4238 -0
  434. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/rules.mk +73 -0
  435. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftmisc.h +118 -0
  436. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftraster.c +2738 -0
  437. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftraster.h +47 -0
  438. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftrend1.c +209 -0
  439. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftrend1.h +37 -0
  440. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/module.mk +23 -0
  441. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/raster.c +25 -0
  442. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/rasterrs.h +42 -0
  443. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/rules.mk +72 -0
  444. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftbsdf.c +1350 -0
  445. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdf.c +3932 -0
  446. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdf.h +97 -0
  447. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfcommon.c +104 -0
  448. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfcommon.h +140 -0
  449. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdferrs.h +37 -0
  450. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfrend.c +603 -0
  451. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfrend.h +118 -0
  452. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/module.mk +29 -0
  453. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/rules.mk +78 -0
  454. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/sdf.c +29 -0
  455. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/module.mk +23 -0
  456. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/pngshim.c +474 -0
  457. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/pngshim.h +50 -0
  458. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/rules.mk +87 -0
  459. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfdriver.c +1384 -0
  460. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfdriver.h +35 -0
  461. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sferrors.h +41 -0
  462. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfnt.c +41 -0
  463. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfobjs.c +1552 -0
  464. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfobjs.h +58 -0
  465. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff.c +426 -0
  466. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff.h +43 -0
  467. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff2.c +2380 -0
  468. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff2.h +78 -0
  469. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttbdf.c +257 -0
  470. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttbdf.h +49 -0
  471. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcmap.c +3902 -0
  472. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcmap.h +126 -0
  473. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcmapc.h +56 -0
  474. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcolr.c +1923 -0
  475. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcolr.h +83 -0
  476. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcpal.c +310 -0
  477. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcpal.h +48 -0
  478. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttgpos.c +598 -0
  479. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttgpos.h +53 -0
  480. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttkern.c +317 -0
  481. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttkern.h +51 -0
  482. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttload.c +1496 -0
  483. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttload.h +111 -0
  484. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttmtx.c +338 -0
  485. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttmtx.h +54 -0
  486. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttpost.c +484 -0
  487. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttpost.h +46 -0
  488. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsbit.c +1685 -0
  489. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsbit.h +62 -0
  490. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsvg.c +413 -0
  491. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsvg.h +43 -0
  492. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/woff2tags.c +119 -0
  493. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/woff2tags.h +41 -0
  494. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftgrays.c +2149 -0
  495. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftgrays.h +57 -0
  496. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftsmerrs.h +42 -0
  497. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftsmooth.c +605 -0
  498. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftsmooth.h +37 -0
  499. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/module.mk +23 -0
  500. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/rules.mk +73 -0
  501. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/smooth.c +25 -0
  502. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/ftsvg.c +355 -0
  503. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/ftsvg.h +35 -0
  504. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/module.mk +23 -0
  505. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/rules.mk +70 -0
  506. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/svg.c +24 -0
  507. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/svgtypes.h +42 -0
  508. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/afblue.pl +551 -0
  509. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/apinames.c +556 -0
  510. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/chktrcmp.py +119 -0
  511. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/cordic.py +32 -0
  512. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/ftrandom/Makefile +45 -0
  513. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/ftrandom/README +69 -0
  514. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/ftrandom/ftrandom.c +720 -0
  515. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/glnames.py +5533 -0
  516. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/make_distribution_archives.py +208 -0
  517. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/no-copyright +66 -0
  518. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/test_afm.c +156 -0
  519. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/test_bbox.c +187 -0
  520. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/test_trig.c +257 -0
  521. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/update-copyright +14 -0
  522. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/update-copyright-year +157 -0
  523. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/vms_shorten_symbol.c +250 -0
  524. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/module.mk +23 -0
  525. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/rules.mk +75 -0
  526. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/truetype.c +29 -0
  527. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttdriver.c +704 -0
  528. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttdriver.h +35 -0
  529. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/tterrors.h +42 -0
  530. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgload.c +2740 -0
  531. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgload.h +61 -0
  532. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgxvar.c +4594 -0
  533. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgxvar.h +453 -0
  534. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttinterp.c +7751 -0
  535. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttinterp.h +465 -0
  536. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttobjs.c +1543 -0
  537. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttobjs.h +426 -0
  538. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttpload.c +665 -0
  539. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttpload.h +74 -0
  540. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/module.mk +23 -0
  541. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/rules.mk +76 -0
  542. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1afm.c +413 -0
  543. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1afm.h +53 -0
  544. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1driver.c +807 -0
  545. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1driver.h +35 -0
  546. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1errors.h +41 -0
  547. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1gload.c +606 -0
  548. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1gload.h +52 -0
  549. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1load.c +2755 -0
  550. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1load.h +126 -0
  551. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1objs.c +655 -0
  552. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1objs.h +160 -0
  553. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1parse.c +487 -0
  554. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1parse.h +137 -0
  555. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1tokens.h +143 -0
  556. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/type1.c +29 -0
  557. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/module.mk +23 -0
  558. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/rules.mk +73 -0
  559. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42drivr.c +248 -0
  560. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42drivr.h +36 -0
  561. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42error.h +41 -0
  562. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42objs.c +698 -0
  563. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42objs.h +123 -0
  564. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42parse.c +1351 -0
  565. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42parse.h +91 -0
  566. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42types.h +56 -0
  567. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/type42.c +26 -0
  568. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/fnterrs.h +42 -0
  569. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/module.mk +23 -0
  570. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/rules.mk +68 -0
  571. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/winfnt.c +1219 -0
  572. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/winfnt.h +164 -0
  573. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/.appveyor.yml +69 -0
  574. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/.travis.yml +41 -0
  575. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ANNOUNCE +55 -0
  576. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/AUTHORS +46 -0
  577. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/CHANGES +6111 -0
  578. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/CMakeLists.txt +1042 -0
  579. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/INSTALL +465 -0
  580. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/LICENSE +134 -0
  581. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/Makefile.am +392 -0
  582. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/Makefile.in +2420 -0
  583. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/README +183 -0
  584. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/TODO +23 -0
  585. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/TRADEMARK +8 -0
  586. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/aclocal.m4 +1196 -0
  587. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/arm_init.c +136 -0
  588. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/filter_neon.S +253 -0
  589. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/filter_neon_intrinsics.c +402 -0
  590. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/palette_neon_intrinsics.c +149 -0
  591. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/autogen.sh +225 -0
  592. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ci/ci_autotools.sh +95 -0
  593. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ci/ci_cmake.sh +127 -0
  594. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ci/ci_legacy.sh +116 -0
  595. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/compile +348 -0
  596. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/config.guess +1476 -0
  597. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/config.h.in +126 -0
  598. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/config.sub +1801 -0
  599. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/configure +16116 -0
  600. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/configure.ac +532 -0
  601. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/README.txt +5 -0
  602. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/README +83 -0
  603. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/android-ndk.c +39 -0
  604. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/linux-auxv.c +120 -0
  605. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/linux.c +161 -0
  606. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/README +49 -0
  607. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/pngcp.dfa +57 -0
  608. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/read.dfa +58 -0
  609. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/s_read.dfa +35 -0
  610. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/s_write.dfa +33 -0
  611. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/simple.dfa +36 -0
  612. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/write.dfa +45 -0
  613. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/README.txt +24 -0
  614. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/iccfrompng.c +185 -0
  615. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/pngpixel.c +371 -0
  616. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/pngtopng.c +98 -0
  617. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/simpleover.c +648 -0
  618. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/COPYING +340 -0
  619. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/LICENSE +50 -0
  620. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.mingw32 +131 -0
  621. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.sgi +105 -0
  622. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.unx +134 -0
  623. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.w32 +114 -0
  624. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/README +186 -0
  625. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/makevms.com +132 -0
  626. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng.c +323 -0
  627. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng.h +88 -0
  628. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng2.c +521 -0
  629. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng2.h +116 -0
  630. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readppm.c +188 -0
  631. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng-win.c +735 -0
  632. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng-x.c +911 -0
  633. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng2-win.c +1261 -0
  634. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng2-x.c +2143 -0
  635. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/toucan.png +0 -0
  636. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/wpng.c +865 -0
  637. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/writepng.c +401 -0
  638. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/writepng.h +133 -0
  639. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/fakepng.c +65 -0
  640. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/gentests.sh +100 -0
  641. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/makepng.c +1948 -0
  642. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngimage.c +1722 -0
  643. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngstest-errors.h +165 -0
  644. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngstest.c +3832 -0
  645. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngunknown.c +1305 -0
  646. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngvalid.c +12279 -0
  647. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/readpng.c +114 -0
  648. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/tarith.c +1011 -0
  649. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/timepng.c +607 -0
  650. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/mips-msa/README +83 -0
  651. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/mips-msa/linux.c +67 -0
  652. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/Dockerfile +25 -0
  653. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/README.txt +37 -0
  654. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/build.sh +51 -0
  655. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/libpng_read_fuzzer.cc +209 -0
  656. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/libpng_read_fuzzer.options +2 -0
  657. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/png.dict +39 -0
  658. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/README +5 -0
  659. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/decoder/README +10 -0
  660. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/decoder/pngusr.dfa +40 -0
  661. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/decoder/pngusr.h +23 -0
  662. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/encoder/README +10 -0
  663. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/encoder/pngusr.dfa +39 -0
  664. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/encoder/pngusr.h +23 -0
  665. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/preader/README +15 -0
  666. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/preader/pngusr.dfa +40 -0
  667. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/preader/pngusr.h +23 -0
  668. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/CHANGES.txt +13 -0
  669. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/CMakeLists.txt +34 -0
  670. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/LICENSE.txt +22 -0
  671. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/README.txt +120 -0
  672. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/makevms.com +92 -0
  673. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/png2pnm.bat +41 -0
  674. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/png2pnm.c +427 -0
  675. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/png2pnm.sh +42 -0
  676. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pngminus.bat +4 -0
  677. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pngminus.sh +5 -0
  678. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pnm2png.bat +41 -0
  679. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pnm2png.c +620 -0
  680. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pnm2png.sh +42 -0
  681. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/README +107 -0
  682. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/bad_interlace_conversions.txt +9 -0
  683. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g01.png +0 -0
  684. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g02.png +0 -0
  685. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g04.png +0 -0
  686. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g08.png +0 -0
  687. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g16.png +0 -0
  688. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn2c08.png +0 -0
  689. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn2c16.png +0 -0
  690. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p01.png +0 -0
  691. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p02.png +0 -0
  692. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p04.png +0 -0
  693. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p08.png +0 -0
  694. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn4a08.png +0 -0
  695. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn4a16.png +0 -0
  696. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn6a08.png +0 -0
  697. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn6a16.png +0 -0
  698. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn0g01.png +0 -0
  699. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn0g02.png +0 -0
  700. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn0g04.png +0 -0
  701. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn2c16.png +0 -0
  702. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn3p08.png +0 -0
  703. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbgn2c16.png +0 -0
  704. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbgn3p08.png +0 -0
  705. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbrn2c08.png +0 -0
  706. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbwn0g16.png +0 -0
  707. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbwn3p08.png +0 -0
  708. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbyn3p08.png +0 -0
  709. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp0n0g08.png +0 -0
  710. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp0n2c08.png +0 -0
  711. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp0n3p08.png +0 -0
  712. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp1n3p08.png +0 -0
  713. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn0g08.png +0 -0
  714. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn0g16.png +0 -0
  715. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn2c08.png +0 -0
  716. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn2c16.png +0 -0
  717. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn3p08.png +0 -0
  718. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn4a08.png +0 -0
  719. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn4a16.png +0 -0
  720. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn6a08.png +0 -0
  721. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn6a16.png +0 -0
  722. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbbn2c16.png +0 -0
  723. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbbn3p08.png +0 -0
  724. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbgn2c16.png +0 -0
  725. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbgn3p08.png +0 -0
  726. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbrn2c08.png +0 -0
  727. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbwn0g16.png +0 -0
  728. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbwn3p08.png +0 -0
  729. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbyn3p08.png +0 -0
  730. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp0n0g08.png +0 -0
  731. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp0n2c08.png +0 -0
  732. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp0n3p08.png +0 -0
  733. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp1n3p08.png +0 -0
  734. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/README +2 -0
  735. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn0g01.png +0 -0
  736. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn0g02.png +0 -0
  737. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn0g04.png +0 -0
  738. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn3p01.png +0 -0
  739. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn3p02.png +0 -0
  740. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn3p04.png +0 -0
  741. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/iftbbn0g01.png +0 -0
  742. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/iftbbn0g02.png +0 -0
  743. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/iftbbn0g04.png +0 -0
  744. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/powerpc-vsx/README +81 -0
  745. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/powerpc-vsx/linux.c +57 -0
  746. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/powerpc-vsx/linux_aux.c +34 -0
  747. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/bad_iCCP.png +0 -0
  748. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/badadler.png +0 -0
  749. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/badcrc.png +0 -0
  750. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/empty_ancillary_chunks.png +0 -0
  751. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_IDAT.png +0 -0
  752. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_bKGD_chunk.png +0 -0
  753. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_cHRM_chunk.png +0 -0
  754. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_eXIf_chunk.png +0 -0
  755. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_gAMA_chunk.png +0 -0
  756. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_hIST_chunk.png +0 -0
  757. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_iCCP_chunk.png +0 -0
  758. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_iTXt_chunk.png +0 -0
  759. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_juNK_unsafe_to_copy.png +0 -0
  760. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_juNk_safe_to_copy.png +0 -0
  761. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_pCAL_chunk.png +0 -0
  762. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_pHYs_chunk.png +0 -0
  763. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sCAL_chunk.png +0 -0
  764. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sPLT_chunk.png +0 -0
  765. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sRGB_chunk.png +0 -0
  766. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sTER_chunk.png +0 -0
  767. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_tEXt_chunk.png +0 -0
  768. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_tIME_chunk.png +0 -0
  769. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_zTXt_chunk.png +0 -0
  770. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-1.8-tRNS.png +0 -0
  771. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-1.8.png +0 -0
  772. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-linear-tRNS.png +0 -0
  773. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-linear.png +0 -0
  774. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-sRGB-tRNS.png +0 -0
  775. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-sRGB.png +0 -0
  776. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-tRNS.png +0 -0
  777. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1.png +0 -0
  778. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-1.8-tRNS.png +0 -0
  779. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-1.8.png +0 -0
  780. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-linear-tRNS.png +0 -0
  781. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-linear.png +0 -0
  782. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-sRGB-tRNS.png +0 -0
  783. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-sRGB.png +0 -0
  784. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-tRNS.png +0 -0
  785. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16.png +0 -0
  786. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-1.8-tRNS.png +0 -0
  787. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-1.8.png +0 -0
  788. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-linear-tRNS.png +0 -0
  789. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-linear.png +0 -0
  790. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-sRGB-tRNS.png +0 -0
  791. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-sRGB.png +0 -0
  792. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-tRNS.png +0 -0
  793. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2.png +0 -0
  794. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-1.8-tRNS.png +0 -0
  795. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-1.8.png +0 -0
  796. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-linear-tRNS.png +0 -0
  797. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-linear.png +0 -0
  798. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-sRGB-tRNS.png +0 -0
  799. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-sRGB.png +0 -0
  800. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-tRNS.png +0 -0
  801. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4.png +0 -0
  802. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-1.8-tRNS.png +0 -0
  803. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-1.8.png +0 -0
  804. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-linear-tRNS.png +0 -0
  805. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-linear.png +0 -0
  806. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-sRGB-tRNS.png +0 -0
  807. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-sRGB.png +0 -0
  808. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-tRNS.png +0 -0
  809. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8.png +0 -0
  810. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16-1.8.png +0 -0
  811. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16-linear.png +0 -0
  812. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16-sRGB.png +0 -0
  813. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16.png +0 -0
  814. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8-1.8.png +0 -0
  815. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8-linear.png +0 -0
  816. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8-sRGB.png +0 -0
  817. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8.png +0 -0
  818. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/makepngs.sh +94 -0
  819. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-1.8-tRNS.png +0 -0
  820. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-1.8.png +0 -0
  821. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-linear-tRNS.png +0 -0
  822. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-linear.png +0 -0
  823. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-sRGB-tRNS.png +0 -0
  824. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-sRGB.png +0 -0
  825. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-tRNS.png +0 -0
  826. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1.png +0 -0
  827. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-1.8-tRNS.png +0 -0
  828. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-1.8.png +0 -0
  829. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-linear-tRNS.png +0 -0
  830. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-linear.png +0 -0
  831. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-sRGB-tRNS.png +0 -0
  832. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-sRGB.png +0 -0
  833. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-tRNS.png +0 -0
  834. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2.png +0 -0
  835. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-1.8-tRNS.png +0 -0
  836. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-1.8.png +0 -0
  837. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-linear-tRNS.png +0 -0
  838. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-linear.png +0 -0
  839. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-sRGB-tRNS.png +0 -0
  840. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-sRGB.png +0 -0
  841. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-tRNS.png +0 -0
  842. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4.png +0 -0
  843. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-1.8-tRNS.png +0 -0
  844. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-1.8.png +0 -0
  845. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-linear-tRNS.png +0 -0
  846. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-linear.png +0 -0
  847. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-sRGB-tRNS.png +0 -0
  848. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-sRGB.png +0 -0
  849. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-tRNS.png +0 -0
  850. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8.png +0 -0
  851. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-1.8-tRNS.png +0 -0
  852. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-1.8.png +0 -0
  853. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-linear-tRNS.png +0 -0
  854. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-linear.png +0 -0
  855. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-sRGB-tRNS.png +0 -0
  856. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-sRGB.png +0 -0
  857. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-tRNS.png +0 -0
  858. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16.png +0 -0
  859. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-1.8-tRNS.png +0 -0
  860. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-1.8.png +0 -0
  861. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-linear-tRNS.png +0 -0
  862. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-linear.png +0 -0
  863. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-sRGB-tRNS.png +0 -0
  864. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-sRGB.png +0 -0
  865. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-tRNS.png +0 -0
  866. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8.png +0 -0
  867. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16-1.8.png +0 -0
  868. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16-linear.png +0 -0
  869. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16-sRGB.png +0 -0
  870. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16.png +0 -0
  871. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8-1.8.png +0 -0
  872. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8-linear.png +0 -0
  873. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8-sRGB.png +0 -0
  874. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8.png +0 -0
  875. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/README.txt +27 -0
  876. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/checksum-icc.c +102 -0
  877. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/chkfmt +144 -0
  878. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/cvtcolor.c +188 -0
  879. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/genpng.c +881 -0
  880. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/intgamma.sh +110 -0
  881. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/makesRGB.c +430 -0
  882. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/png-fix-itxt.c +164 -0
  883. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/pngcp.c +2453 -0
  884. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/pngfix.c +4049 -0
  885. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/reindent +25 -0
  886. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/sRGB.h +48 -0
  887. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/PngFile.c +454 -0
  888. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/PngFile.h +30 -0
  889. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/README.txt +61 -0
  890. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.c +978 -0
  891. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.dsp +147 -0
  892. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.dsw +29 -0
  893. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.ico +0 -0
  894. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.png +0 -0
  895. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.rc +152 -0
  896. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/cexcept.h +248 -0
  897. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/resource.h +23 -0
  898. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/depcomp +791 -0
  899. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/example.c +1041 -0
  900. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/install-sh +518 -0
  901. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/intel/filter_sse2_intrinsics.c +391 -0
  902. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/intel/intel_init.c +52 -0
  903. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng-config.in +127 -0
  904. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng-manual.txt +5409 -0
  905. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng.3 +6052 -0
  906. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng.pc.in +12 -0
  907. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpngpf.3 +24 -0
  908. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ltmain.sh +11147 -0
  909. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/mips/filter_msa_intrinsics.c +808 -0
  910. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/mips/mips_init.c +130 -0
  911. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/missing +215 -0
  912. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/png.5 +84 -0
  913. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/png.c +4607 -0
  914. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/png.h +3247 -0
  915. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngbar.jpg +0 -0
  916. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngbar.png +0 -0
  917. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngconf.h +623 -0
  918. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngdebug.h +153 -0
  919. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngerror.c +963 -0
  920. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngget.c +1249 -0
  921. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pnginfo.h +267 -0
  922. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pnglibconf.h +219 -0
  923. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngmem.c +284 -0
  924. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngnow.png +0 -0
  925. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngpread.c +1096 -0
  926. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngpriv.h +2152 -0
  927. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngread.c +4225 -0
  928. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngrio.c +120 -0
  929. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngrtran.c +5044 -0
  930. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngrutil.c +4678 -0
  931. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngset.c +1802 -0
  932. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngstruct.h +489 -0
  933. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngtest.c +2158 -0
  934. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngtest.png +0 -0
  935. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngtrans.c +864 -0
  936. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngusr.dfa +14 -0
  937. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwio.c +168 -0
  938. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwrite.c +2390 -0
  939. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwtran.c +575 -0
  940. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwutil.c +2781 -0
  941. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/powerpc/filter_vsx_intrinsics.c +768 -0
  942. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/powerpc/powerpc_init.c +126 -0
  943. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/libpng.tgt +383 -0
  944. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/libpng.wpj +112 -0
  945. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngconfig.mak +160 -0
  946. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngstest.tgt +219 -0
  947. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngtest.tgt +179 -0
  948. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngvalid.tgt +210 -0
  949. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/PRJ0041.mak +21 -0
  950. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/README.txt +58 -0
  951. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/README_zlib.txt +44 -0
  952. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/libpng.sln +60 -0
  953. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/libpng.vcproj +419 -0
  954. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/pngtest.vcproj +267 -0
  955. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/zlib.vcproj +391 -0
  956. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/README.txt +87 -0
  957. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/libpng/libpng.vcxproj +234 -0
  958. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj +61 -0
  959. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/vstudio.sln +109 -0
  960. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/zlib/zlib.vcxproj +175 -0
  961. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/zlib.props +57 -0
  962. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/README.txt +83 -0
  963. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/SCOPTIONS.ppc +7 -0
  964. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/checksym.awk +173 -0
  965. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/descrip.mms +47 -0
  966. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/dfn.awk +203 -0
  967. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/genchk.cmake.in +37 -0
  968. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/genout.cmake.in +105 -0
  969. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/gensrc.cmake.in +138 -0
  970. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/intprefix.c +22 -0
  971. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libpng-config-body.in +96 -0
  972. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libpng-config-head.in +24 -0
  973. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libpng.pc.in +10 -0
  974. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libtool.m4 +8369 -0
  975. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/ltoptions.m4 +437 -0
  976. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/ltsugar.m4 +124 -0
  977. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/ltversion.m4 +23 -0
  978. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/lt~obsolete.m4 +99 -0
  979. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/macro.lst +3 -0
  980. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.32sunu +241 -0
  981. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.64sunu +241 -0
  982. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.acorn +57 -0
  983. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.aix +116 -0
  984. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.amiga +58 -0
  985. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.atari +71 -0
  986. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.bc32 +158 -0
  987. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.beos +222 -0
  988. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.cegcc +116 -0
  989. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.clang +87 -0
  990. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.darwin +222 -0
  991. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.dec +210 -0
  992. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.dj2 +72 -0
  993. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.freebsd +66 -0
  994. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.gcc +87 -0
  995. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.hp64 +228 -0
  996. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.hpgcc +225 -0
  997. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.hpux +226 -0
  998. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.ibmc +90 -0
  999. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.intel +118 -0
  1000. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.linux +240 -0
  1001. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.linux-opt +258 -0
  1002. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.mips +100 -0
  1003. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.msys +199 -0
  1004. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.netbsd +55 -0
  1005. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.openbsd +86 -0
  1006. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sco +223 -0
  1007. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sggcc +233 -0
  1008. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sgi +234 -0
  1009. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.so9 +244 -0
  1010. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.solaris +240 -0
  1011. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.std +133 -0
  1012. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sunos +112 -0
  1013. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.vcwin32 +112 -0
  1014. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makevms.com +142 -0
  1015. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/options.awk +898 -0
  1016. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pnglibconf.dfa +920 -0
  1017. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pnglibconf.h.prebuilt +219 -0
  1018. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pnglibconf.mak +55 -0
  1019. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pngwin.rc +112 -0
  1020. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/prefix.c +24 -0
  1021. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/smakefile.ppc +34 -0
  1022. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/sym.c +15 -0
  1023. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/symbols.c +58 -0
  1024. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/symbols.def +255 -0
  1025. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/test.cmake.in +31 -0
  1026. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/vers.c +19 -0
  1027. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/test-driver +148 -0
  1028. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngimage-full +2 -0
  1029. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngimage-quick +2 -0
  1030. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-1.8 +2 -0
  1031. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-1.8-alpha +2 -0
  1032. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-linear +2 -0
  1033. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-linear-alpha +2 -0
  1034. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-none +2 -0
  1035. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-none-alpha +2 -0
  1036. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-sRGB +2 -0
  1037. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-sRGB-alpha +2 -0
  1038. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngtest-all +16 -0
  1039. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-IDAT +2 -0
  1040. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-discard +2 -0
  1041. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-if-safe +2 -0
  1042. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-sAPI +2 -0
  1043. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-sTER +2 -0
  1044. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-save +2 -0
  1045. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-vpAg +2 -0
  1046. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-16-to-8 +2 -0
  1047. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-alpha-mode +2 -0
  1048. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-background +2 -0
  1049. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-expand16-alpha-mode +2 -0
  1050. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-expand16-background +2 -0
  1051. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-expand16-transform +2 -0
  1052. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-sbit +2 -0
  1053. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-threshold +2 -0
  1054. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-transform +2 -0
  1055. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-progressive-interlace-standard +2 -0
  1056. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-progressive-size +2 -0
  1057. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-progressive-standard +2 -0
  1058. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-standard +2 -0
  1059. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-transform +2 -0
  1060. package/harmony/gcanvas/src/main/cpp/core/harmony/manager/GCanvasManagerOhos.cpp +50 -0
  1061. package/harmony/gcanvas/src/main/cpp/core/harmony/memory/AutoPtr.h +99 -0
  1062. package/harmony/gcanvas/src/main/cpp/core/harmony/memory/IDelete.h +25 -0
  1063. package/harmony/gcanvas/src/main/cpp/core/harmony/memory/RefCount.h +55 -0
  1064. package/harmony/gcanvas/src/main/cpp/core/harmony/png/IPngCoder.h +38 -0
  1065. package/harmony/gcanvas/src/main/cpp/core/harmony/png/LodePngCoder.cpp +101 -0
  1066. package/harmony/gcanvas/src/main/cpp/core/harmony/png/LodePngCoder.h +40 -0
  1067. package/harmony/gcanvas/src/main/cpp/core/harmony/png/PngLoader.cpp +114 -0
  1068. package/harmony/gcanvas/src/main/cpp/core/harmony/png/PngLoader.h +53 -0
  1069. package/harmony/gcanvas/src/main/cpp/core/harmony/png/thirdparty/lodepng.c +6292 -0
  1070. package/harmony/gcanvas/src/main/cpp/core/harmony/png/thirdparty/lodepng.h +1890 -0
  1071. package/harmony/gcanvas/src/main/cpp/core/src/GCanvas.cpp +89 -0
  1072. package/harmony/gcanvas/src/main/cpp/core/src/GCanvas.hpp +45 -0
  1073. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasManager.cpp +158 -0
  1074. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasManager.h +56 -0
  1075. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasWeex.cpp +1925 -0
  1076. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasWeex.hpp +335 -0
  1077. package/harmony/gcanvas/src/main/cpp/core/src/RNCGCanvasBridge.h +225 -0
  1078. package/harmony/gcanvas/src/main/cpp/core/src/export.h +29 -0
  1079. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvas2dContext.cpp +2366 -0
  1080. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvas2dContext.h +449 -0
  1081. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvasState.cpp +189 -0
  1082. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvasState.h +83 -0
  1083. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GContext2dType.h +68 -0
  1084. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GConvert.cpp +476 -0
  1085. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GConvert.h +25 -0
  1086. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFillStyle.h +191 -0
  1087. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFontManager.h +110 -0
  1088. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFontStyle.cpp +149 -0
  1089. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFontStyle.h +94 -0
  1090. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFrameBufferObject.cpp +226 -0
  1091. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFrameBufferObject.h +116 -0
  1092. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GGL.h +45 -0
  1093. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GGlyphCache.cpp +106 -0
  1094. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GGlyphCache.h +159 -0
  1095. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GPath.cpp +1213 -0
  1096. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GPath.h +115 -0
  1097. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GPoint.h +117 -0
  1098. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShader.cpp +346 -0
  1099. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShader.h +360 -0
  1100. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShaderManager.cpp +140 -0
  1101. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShaderManager.h +38 -0
  1102. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GStrSeparator.cpp +84 -0
  1103. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GStrSeparator.h +31 -0
  1104. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTextDefine.h +34 -0
  1105. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTexture.cpp +327 -0
  1106. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTexture.h +133 -0
  1107. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTransform.h +163 -0
  1108. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTreemap.cpp +61 -0
  1109. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTreemap.h +88 -0
  1110. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GWebglContext.cpp +3259 -0
  1111. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GWebglContext.h +13 -0
  1112. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/default.glsl +39 -0
  1113. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/grad.glsl +101 -0
  1114. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/pattern.glsl +45 -0
  1115. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/radiation.glsl +110 -0
  1116. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/shadow.glsl +39 -0
  1117. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/texture.glsl +34 -0
  1118. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvas2DContextAndroid.cpp +386 -0
  1119. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvas2DContextAndroid.h +113 -0
  1120. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvas2DContextImpl.cpp +67 -0
  1121. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvasAndroid.cpp +41 -0
  1122. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvasAndroid.h +36 -0
  1123. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFont.cpp +806 -0
  1124. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFont.h +164 -0
  1125. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontCache.cpp +467 -0
  1126. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontCache.h +93 -0
  1127. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontFamily.cpp +187 -0
  1128. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontFamily.h +68 -0
  1129. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManager.cpp +205 -0
  1130. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManagerAndroid.cpp +328 -0
  1131. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManagerAndroid.h +63 -0
  1132. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManagerImpl.cpp +22 -0
  1133. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFrameBufferObjectImpl.cpp +180 -0
  1134. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GPreCompiledShaders.cpp +175 -0
  1135. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GPreCompiledShaders.h +75 -0
  1136. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GSystemFontInformation.cpp +231 -0
  1137. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GSystemFontInformation.h +69 -0
  1138. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/FontTool.hpp +892 -0
  1139. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFont.cpp +742 -0
  1140. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFontCache.cpp +296 -0
  1141. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFontFamily.cpp +162 -0
  1142. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFontManager.cpp +230 -0
  1143. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GSystemFontInformation.cpp +232 -0
  1144. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/PortableMap.hpp +621 -0
  1145. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/argh.h +434 -0
  1146. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/fonttool.cpp +109 -0
  1147. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/utils.hpp +229 -0
  1148. package/harmony/gcanvas/src/main/cpp/core/src/platform/iOS/GCVFont.h +126 -0
  1149. package/harmony/gcanvas/src/main/cpp/core/src/platform/iOS/GCVFont.mm +573 -0
  1150. package/harmony/gcanvas/src/main/cpp/core/src/platform/iOS/GFontManager.mm +185 -0
  1151. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvas2DContextHarmony.cpp +391 -0
  1152. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvas2DContextHarmony.h +114 -0
  1153. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvas2DContextOHOS.cpp +49 -0
  1154. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvasHarmony.cpp +42 -0
  1155. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvasHarmony.h +37 -0
  1156. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFont.cpp +806 -0
  1157. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFont.h +164 -0
  1158. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontCache.cpp +466 -0
  1159. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontCache.h +94 -0
  1160. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontFamily.cpp +188 -0
  1161. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontFamily.h +69 -0
  1162. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontManagerHarmony.cpp +329 -0
  1163. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontManagerHarmony.h +64 -0
  1164. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontManagerImpl.cpp +23 -0
  1165. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFrameBufferObjectImpl.cpp +221 -0
  1166. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GPreCompiledShaders.cpp +176 -0
  1167. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GPreCompiledShaders.h +76 -0
  1168. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GSystemFontInformation.cpp +232 -0
  1169. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GSystemFontInformation.h +70 -0
  1170. package/harmony/gcanvas/src/main/cpp/core/src/support/CharacterSet.cpp +126 -0
  1171. package/harmony/gcanvas/src/main/cpp/core/src/support/CharacterSet.h +30 -0
  1172. package/harmony/gcanvas/src/main/cpp/core/src/support/ConcurrenceQueue.h +128 -0
  1173. package/harmony/gcanvas/src/main/cpp/core/src/support/DynArray.h +157 -0
  1174. package/harmony/gcanvas/src/main/cpp/core/src/support/Encode.cpp +116 -0
  1175. package/harmony/gcanvas/src/main/cpp/core/src/support/Encode.h +20 -0
  1176. package/harmony/gcanvas/src/main/cpp/core/src/support/FileUtils.cpp +153 -0
  1177. package/harmony/gcanvas/src/main/cpp/core/src/support/FileUtils.h +56 -0
  1178. package/harmony/gcanvas/src/main/cpp/core/src/support/GLUtil.cpp +174 -0
  1179. package/harmony/gcanvas/src/main/cpp/core/src/support/GLUtil.h +25 -0
  1180. package/harmony/gcanvas/src/main/cpp/core/src/support/Lesser.h +27 -0
  1181. package/harmony/gcanvas/src/main/cpp/core/src/support/Log.cpp +158 -0
  1182. package/harmony/gcanvas/src/main/cpp/core/src/support/Log.h +100 -0
  1183. package/harmony/gcanvas/src/main/cpp/core/src/support/Util.cpp +118 -0
  1184. package/harmony/gcanvas/src/main/cpp/core/src/support/Util.h +38 -0
  1185. package/harmony/gcanvas/src/main/cpp/core/src/support/Value.cpp +180 -0
  1186. package/harmony/gcanvas/src/main/cpp/core/src/support/Value.h +76 -0
  1187. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/BaseGcanvasPackage.h +79 -0
  1188. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/components/GCanvasViewJSIBinder.h +37 -0
  1189. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/turbo_modules/GCanvasModule.cpp +35 -0
  1190. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/turbo_modules/GCanvasModule.h +16 -0
  1191. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/ComponentDescriptors.h +24 -0
  1192. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/EventEmitters.cpp +33 -0
  1193. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/EventEmitters.h +31 -0
  1194. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/Props.cpp +28 -0
  1195. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/Props.h +30 -0
  1196. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/ShadowNodes.cpp +17 -0
  1197. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/ShadowNodes.h +32 -0
  1198. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/States.cpp +16 -0
  1199. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/States.h +29 -0
  1200. package/harmony/gcanvas/src/main/ets/GCanvasModuleTurboModule.ts +448 -0
  1201. package/harmony/gcanvas/src/main/ets/GCanvasNativeEngine.ts +206 -0
  1202. package/harmony/gcanvas/src/main/ets/GcanvasTurboModulesFactory.ets +42 -0
  1203. package/harmony/gcanvas/src/main/ets/components/GCanvasView.ets +109 -0
  1204. package/harmony/gcanvas/src/main/ets/generated/components/GCanvasView.ts +126 -0
  1205. package/harmony/gcanvas/src/main/ets/generated/components/ts.ts +5 -0
  1206. package/harmony/gcanvas/src/main/ets/generated/index.ets +5 -0
  1207. package/harmony/gcanvas/src/main/ets/generated/ts.ts +6 -0
  1208. package/harmony/gcanvas/src/main/ets/generated/turboModules/GCanvasModule.ts +52 -0
  1209. package/harmony/gcanvas/src/main/ets/generated/turboModules/ts.ts +5 -0
  1210. package/harmony/gcanvas/src/main/module.json5 +21 -0
  1211. package/harmony/gcanvas/src/main/resources/base/element/string.json +12 -0
  1212. package/harmony/gcanvas/src/main/resources/en_US/element/string.json +8 -0
  1213. package/harmony/gcanvas/src/main/resources/zh_CN/element/string.json +12 -0
  1214. package/harmony/gcanvas.har +0 -0
  1215. package/package.json +69 -0
  1216. package/packages/gcanvas/.babelrc +5 -0
  1217. package/packages/gcanvas/.eslintrc.js +133 -0
  1218. package/packages/gcanvas/package.json +19 -0
  1219. package/packages/gcanvas/rollup.config.js +14 -0
  1220. package/packages/gcanvas/src/bridge/react-native.js +286 -0
  1221. package/packages/gcanvas/src/bridge/weex.js +210 -0
  1222. package/packages/gcanvas/src/context/2d/FillStyleLinearGradient.js +17 -0
  1223. package/packages/gcanvas/src/context/2d/FillStylePattern.js +8 -0
  1224. package/packages/gcanvas/src/context/2d/FillStyleRadialGradient.js +17 -0
  1225. package/packages/gcanvas/src/context/2d/OffScreenRenderingContext.js +49 -0
  1226. package/packages/gcanvas/src/context/2d/RenderingContext.js +787 -0
  1227. package/packages/gcanvas/src/context/webgl/ActiveInfo.js +11 -0
  1228. package/packages/gcanvas/src/context/webgl/Buffer.js +21 -0
  1229. package/packages/gcanvas/src/context/webgl/Framebuffer.js +21 -0
  1230. package/packages/gcanvas/src/context/webgl/GLenum.js +300 -0
  1231. package/packages/gcanvas/src/context/webgl/GLmethod.js +142 -0
  1232. package/packages/gcanvas/src/context/webgl/GLtype.js +22 -0
  1233. package/packages/gcanvas/src/context/webgl/Program.js +21 -0
  1234. package/packages/gcanvas/src/context/webgl/Renderbuffer.js +21 -0
  1235. package/packages/gcanvas/src/context/webgl/RenderingContext.js +1479 -0
  1236. package/packages/gcanvas/src/context/webgl/Shader.js +22 -0
  1237. package/packages/gcanvas/src/context/webgl/ShaderPrecisionFormat.js +11 -0
  1238. package/packages/gcanvas/src/context/webgl/Texture.js +22 -0
  1239. package/packages/gcanvas/src/context/webgl/UniformLocation.js +22 -0
  1240. package/packages/gcanvas/src/context/webgl/classUtils.js +3 -0
  1241. package/packages/gcanvas/src/env/canvas.js +210 -0
  1242. package/packages/gcanvas/src/env/image.js +76 -0
  1243. package/packages/gcanvas/src/env/off-screen-canvas.js +74 -0
  1244. package/packages/gcanvas/src/index.js +65 -0
  1245. package/src/components/CanvasView.js +20 -0
  1246. package/src/components/GCanvasComponent.js +408 -0
  1247. package/src/index.js +69 -0
  1248. package/src/packages/gcanvas/.babelrc +5 -0
  1249. package/src/packages/gcanvas/.eslintrc.js +133 -0
  1250. package/src/packages/gcanvas/package.json +19 -0
  1251. package/src/packages/gcanvas/rollup.config.js +14 -0
  1252. package/src/packages/gcanvas/src/bridge/react-native.js +288 -0
  1253. package/src/packages/gcanvas/src/bridge/weex.js +210 -0
  1254. package/src/packages/gcanvas/src/context/2d/FillStyleLinearGradient.js +17 -0
  1255. package/src/packages/gcanvas/src/context/2d/FillStylePattern.js +8 -0
  1256. package/src/packages/gcanvas/src/context/2d/FillStyleRadialGradient.js +17 -0
  1257. package/src/packages/gcanvas/src/context/2d/OffScreenRenderingContext.js +49 -0
  1258. package/src/packages/gcanvas/src/context/2d/RenderingContext.js +801 -0
  1259. package/src/packages/gcanvas/src/context/webgl/ActiveInfo.js +11 -0
  1260. package/src/packages/gcanvas/src/context/webgl/Buffer.js +21 -0
  1261. package/src/packages/gcanvas/src/context/webgl/Framebuffer.js +21 -0
  1262. package/src/packages/gcanvas/src/context/webgl/GLenum.js +300 -0
  1263. package/src/packages/gcanvas/src/context/webgl/GLmethod.js +142 -0
  1264. package/src/packages/gcanvas/src/context/webgl/GLtype.js +22 -0
  1265. package/src/packages/gcanvas/src/context/webgl/Program.js +21 -0
  1266. package/src/packages/gcanvas/src/context/webgl/Renderbuffer.js +21 -0
  1267. package/src/packages/gcanvas/src/context/webgl/RenderingContext.js +1479 -0
  1268. package/src/packages/gcanvas/src/context/webgl/Shader.js +22 -0
  1269. package/src/packages/gcanvas/src/context/webgl/ShaderPrecisionFormat.js +11 -0
  1270. package/src/packages/gcanvas/src/context/webgl/Texture.js +22 -0
  1271. package/src/packages/gcanvas/src/context/webgl/UniformLocation.js +22 -0
  1272. package/src/packages/gcanvas/src/context/webgl/classUtils.js +3 -0
  1273. package/src/packages/gcanvas/src/env/canvas.js +210 -0
  1274. package/src/packages/gcanvas/src/env/image.js +76 -0
  1275. package/src/packages/gcanvas/src/env/off-screen-canvas.js +74 -0
  1276. package/src/packages/gcanvas/src/index.js +65 -0
  1277. package/src/specs/v1/.gitkeep +1 -0
  1278. package/src/specs/v1/GCanvasViewNativeComponent.ts +47 -0
  1279. package/src/specs/v1/NativeGCanvasModule.ts +140 -0
  1280. package/src/specs/v2/.gitkeep +1 -0
@@ -0,0 +1,2570 @@
1
+ /****************************************************************************
2
+ *
3
+ * cffload.c
4
+ *
5
+ * OpenType and CFF data/program tables loader (body).
6
+ *
7
+ * Copyright (C) 1996-2024 by
8
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
9
+ *
10
+ * This file is part of the FreeType project, and may only be used,
11
+ * modified, and distributed under the terms of the FreeType project
12
+ * license, LICENSE.TXT. By continuing to use, modify, or distribute
13
+ * this file you indicate that you have read the license and
14
+ * understand and accept it fully.
15
+ *
16
+ */
17
+
18
+
19
+ #include <freetype/internal/ftdebug.h>
20
+ #include <freetype/internal/ftobjs.h>
21
+ #include <freetype/internal/ftstream.h>
22
+ #include <freetype/tttags.h>
23
+ #include <freetype/t1tables.h>
24
+ #include <freetype/internal/psaux.h>
25
+
26
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
27
+ #include <freetype/ftmm.h>
28
+ #include <freetype/internal/services/svmm.h>
29
+ #endif
30
+
31
+ #include "cffload.h"
32
+ #include "cffparse.h"
33
+
34
+ #include "cfferrs.h"
35
+
36
+
37
+ #define FT_FIXED_ONE ( (FT_Fixed)0x10000 )
38
+
39
+
40
+ #if 1
41
+
42
+ static const FT_UShort cff_isoadobe_charset[229] =
43
+ {
44
+ 0, 1, 2, 3, 4, 5, 6, 7,
45
+ 8, 9, 10, 11, 12, 13, 14, 15,
46
+ 16, 17, 18, 19, 20, 21, 22, 23,
47
+ 24, 25, 26, 27, 28, 29, 30, 31,
48
+ 32, 33, 34, 35, 36, 37, 38, 39,
49
+ 40, 41, 42, 43, 44, 45, 46, 47,
50
+ 48, 49, 50, 51, 52, 53, 54, 55,
51
+ 56, 57, 58, 59, 60, 61, 62, 63,
52
+ 64, 65, 66, 67, 68, 69, 70, 71,
53
+ 72, 73, 74, 75, 76, 77, 78, 79,
54
+ 80, 81, 82, 83, 84, 85, 86, 87,
55
+ 88, 89, 90, 91, 92, 93, 94, 95,
56
+ 96, 97, 98, 99, 100, 101, 102, 103,
57
+ 104, 105, 106, 107, 108, 109, 110, 111,
58
+ 112, 113, 114, 115, 116, 117, 118, 119,
59
+ 120, 121, 122, 123, 124, 125, 126, 127,
60
+ 128, 129, 130, 131, 132, 133, 134, 135,
61
+ 136, 137, 138, 139, 140, 141, 142, 143,
62
+ 144, 145, 146, 147, 148, 149, 150, 151,
63
+ 152, 153, 154, 155, 156, 157, 158, 159,
64
+ 160, 161, 162, 163, 164, 165, 166, 167,
65
+ 168, 169, 170, 171, 172, 173, 174, 175,
66
+ 176, 177, 178, 179, 180, 181, 182, 183,
67
+ 184, 185, 186, 187, 188, 189, 190, 191,
68
+ 192, 193, 194, 195, 196, 197, 198, 199,
69
+ 200, 201, 202, 203, 204, 205, 206, 207,
70
+ 208, 209, 210, 211, 212, 213, 214, 215,
71
+ 216, 217, 218, 219, 220, 221, 222, 223,
72
+ 224, 225, 226, 227, 228
73
+ };
74
+
75
+ static const FT_UShort cff_expert_charset[166] =
76
+ {
77
+ 0, 1, 229, 230, 231, 232, 233, 234,
78
+ 235, 236, 237, 238, 13, 14, 15, 99,
79
+ 239, 240, 241, 242, 243, 244, 245, 246,
80
+ 247, 248, 27, 28, 249, 250, 251, 252,
81
+ 253, 254, 255, 256, 257, 258, 259, 260,
82
+ 261, 262, 263, 264, 265, 266, 109, 110,
83
+ 267, 268, 269, 270, 271, 272, 273, 274,
84
+ 275, 276, 277, 278, 279, 280, 281, 282,
85
+ 283, 284, 285, 286, 287, 288, 289, 290,
86
+ 291, 292, 293, 294, 295, 296, 297, 298,
87
+ 299, 300, 301, 302, 303, 304, 305, 306,
88
+ 307, 308, 309, 310, 311, 312, 313, 314,
89
+ 315, 316, 317, 318, 158, 155, 163, 319,
90
+ 320, 321, 322, 323, 324, 325, 326, 150,
91
+ 164, 169, 327, 328, 329, 330, 331, 332,
92
+ 333, 334, 335, 336, 337, 338, 339, 340,
93
+ 341, 342, 343, 344, 345, 346, 347, 348,
94
+ 349, 350, 351, 352, 353, 354, 355, 356,
95
+ 357, 358, 359, 360, 361, 362, 363, 364,
96
+ 365, 366, 367, 368, 369, 370, 371, 372,
97
+ 373, 374, 375, 376, 377, 378
98
+ };
99
+
100
+ static const FT_UShort cff_expertsubset_charset[87] =
101
+ {
102
+ 0, 1, 231, 232, 235, 236, 237, 238,
103
+ 13, 14, 15, 99, 239, 240, 241, 242,
104
+ 243, 244, 245, 246, 247, 248, 27, 28,
105
+ 249, 250, 251, 253, 254, 255, 256, 257,
106
+ 258, 259, 260, 261, 262, 263, 264, 265,
107
+ 266, 109, 110, 267, 268, 269, 270, 272,
108
+ 300, 301, 302, 305, 314, 315, 158, 155,
109
+ 163, 320, 321, 322, 323, 324, 325, 326,
110
+ 150, 164, 169, 327, 328, 329, 330, 331,
111
+ 332, 333, 334, 335, 336, 337, 338, 339,
112
+ 340, 341, 342, 343, 344, 345, 346
113
+ };
114
+
115
+ static const FT_UShort cff_standard_encoding[256] =
116
+ {
117
+ 0, 0, 0, 0, 0, 0, 0, 0,
118
+ 0, 0, 0, 0, 0, 0, 0, 0,
119
+ 0, 0, 0, 0, 0, 0, 0, 0,
120
+ 0, 0, 0, 0, 0, 0, 0, 0,
121
+ 1, 2, 3, 4, 5, 6, 7, 8,
122
+ 9, 10, 11, 12, 13, 14, 15, 16,
123
+ 17, 18, 19, 20, 21, 22, 23, 24,
124
+ 25, 26, 27, 28, 29, 30, 31, 32,
125
+ 33, 34, 35, 36, 37, 38, 39, 40,
126
+ 41, 42, 43, 44, 45, 46, 47, 48,
127
+ 49, 50, 51, 52, 53, 54, 55, 56,
128
+ 57, 58, 59, 60, 61, 62, 63, 64,
129
+ 65, 66, 67, 68, 69, 70, 71, 72,
130
+ 73, 74, 75, 76, 77, 78, 79, 80,
131
+ 81, 82, 83, 84, 85, 86, 87, 88,
132
+ 89, 90, 91, 92, 93, 94, 95, 0,
133
+ 0, 0, 0, 0, 0, 0, 0, 0,
134
+ 0, 0, 0, 0, 0, 0, 0, 0,
135
+ 0, 0, 0, 0, 0, 0, 0, 0,
136
+ 0, 0, 0, 0, 0, 0, 0, 0,
137
+ 0, 96, 97, 98, 99, 100, 101, 102,
138
+ 103, 104, 105, 106, 107, 108, 109, 110,
139
+ 0, 111, 112, 113, 114, 0, 115, 116,
140
+ 117, 118, 119, 120, 121, 122, 0, 123,
141
+ 0, 124, 125, 126, 127, 128, 129, 130,
142
+ 131, 0, 132, 133, 0, 134, 135, 136,
143
+ 137, 0, 0, 0, 0, 0, 0, 0,
144
+ 0, 0, 0, 0, 0, 0, 0, 0,
145
+ 0, 138, 0, 139, 0, 0, 0, 0,
146
+ 140, 141, 142, 143, 0, 0, 0, 0,
147
+ 0, 144, 0, 0, 0, 145, 0, 0,
148
+ 146, 147, 148, 149, 0, 0, 0, 0
149
+ };
150
+
151
+ static const FT_UShort cff_expert_encoding[256] =
152
+ {
153
+ 0, 0, 0, 0, 0, 0, 0, 0,
154
+ 0, 0, 0, 0, 0, 0, 0, 0,
155
+ 0, 0, 0, 0, 0, 0, 0, 0,
156
+ 0, 0, 0, 0, 0, 0, 0, 0,
157
+ 1, 229, 230, 0, 231, 232, 233, 234,
158
+ 235, 236, 237, 238, 13, 14, 15, 99,
159
+ 239, 240, 241, 242, 243, 244, 245, 246,
160
+ 247, 248, 27, 28, 249, 250, 251, 252,
161
+ 0, 253, 254, 255, 256, 257, 0, 0,
162
+ 0, 258, 0, 0, 259, 260, 261, 262,
163
+ 0, 0, 263, 264, 265, 0, 266, 109,
164
+ 110, 267, 268, 269, 0, 270, 271, 272,
165
+ 273, 274, 275, 276, 277, 278, 279, 280,
166
+ 281, 282, 283, 284, 285, 286, 287, 288,
167
+ 289, 290, 291, 292, 293, 294, 295, 296,
168
+ 297, 298, 299, 300, 301, 302, 303, 0,
169
+ 0, 0, 0, 0, 0, 0, 0, 0,
170
+ 0, 0, 0, 0, 0, 0, 0, 0,
171
+ 0, 0, 0, 0, 0, 0, 0, 0,
172
+ 0, 0, 0, 0, 0, 0, 0, 0,
173
+ 0, 304, 305, 306, 0, 0, 307, 308,
174
+ 309, 310, 311, 0, 312, 0, 0, 312,
175
+ 0, 0, 314, 315, 0, 0, 316, 317,
176
+ 318, 0, 0, 0, 158, 155, 163, 319,
177
+ 320, 321, 322, 323, 324, 325, 0, 0,
178
+ 326, 150, 164, 169, 327, 328, 329, 330,
179
+ 331, 332, 333, 334, 335, 336, 337, 338,
180
+ 339, 340, 341, 342, 343, 344, 345, 346,
181
+ 347, 348, 349, 350, 351, 352, 353, 354,
182
+ 355, 356, 357, 358, 359, 360, 361, 362,
183
+ 363, 364, 365, 366, 367, 368, 369, 370,
184
+ 371, 372, 373, 374, 375, 376, 377, 378
185
+ };
186
+
187
+ #endif /* 1 */
188
+
189
+
190
+ FT_LOCAL_DEF( FT_UShort )
191
+ cff_get_standard_encoding( FT_UInt charcode )
192
+ {
193
+ return (FT_UShort)( charcode < 256 ? cff_standard_encoding[charcode]
194
+ : 0 );
195
+ }
196
+
197
+
198
+ /**************************************************************************
199
+ *
200
+ * The macro FT_COMPONENT is used in trace mode. It is an implicit
201
+ * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
202
+ * messages during execution.
203
+ */
204
+ #undef FT_COMPONENT
205
+ #define FT_COMPONENT cffload
206
+
207
+
208
+ /* read an offset from the index's stream current position */
209
+ static FT_ULong
210
+ cff_index_read_offset( CFF_Index idx,
211
+ FT_Error *errorp )
212
+ {
213
+ FT_Error error;
214
+ FT_Stream stream = idx->stream;
215
+ FT_Byte tmp[4];
216
+ FT_ULong result = 0;
217
+
218
+
219
+ if ( !FT_STREAM_READ( tmp, idx->off_size ) )
220
+ {
221
+ FT_Int nn;
222
+
223
+
224
+ for ( nn = 0; nn < idx->off_size; nn++ )
225
+ result = ( result << 8 ) | tmp[nn];
226
+ }
227
+
228
+ *errorp = error;
229
+ return result;
230
+ }
231
+
232
+
233
+ static FT_Error
234
+ cff_index_init( CFF_Index idx,
235
+ FT_Stream stream,
236
+ FT_Bool load,
237
+ FT_Bool cff2 )
238
+ {
239
+ FT_Error error;
240
+ FT_Memory memory = stream->memory;
241
+ FT_UInt count;
242
+
243
+
244
+ FT_ZERO( idx );
245
+
246
+ idx->stream = stream;
247
+ idx->start = FT_STREAM_POS();
248
+
249
+ if ( cff2 )
250
+ {
251
+ if ( FT_READ_ULONG( count ) )
252
+ goto Exit;
253
+ idx->hdr_size = 5;
254
+ }
255
+ else
256
+ {
257
+ if ( FT_READ_USHORT( count ) )
258
+ goto Exit;
259
+ idx->hdr_size = 3;
260
+ }
261
+
262
+ if ( count > 0 )
263
+ {
264
+ FT_Byte offsize;
265
+ FT_ULong size;
266
+
267
+
268
+ /* there is at least one element; read the offset size, */
269
+ /* then access the offset table to compute the index's total size */
270
+ if ( FT_READ_BYTE( offsize ) )
271
+ goto Exit;
272
+
273
+ if ( offsize < 1 || offsize > 4 )
274
+ {
275
+ error = FT_THROW( Invalid_Table );
276
+ goto Exit;
277
+ }
278
+
279
+ idx->count = count;
280
+ idx->off_size = offsize;
281
+ size = (FT_ULong)( count + 1 ) * offsize;
282
+
283
+ idx->data_offset = idx->start + idx->hdr_size + size;
284
+
285
+ if ( FT_STREAM_SKIP( size - offsize ) )
286
+ goto Exit;
287
+
288
+ size = cff_index_read_offset( idx, &error );
289
+ if ( error )
290
+ goto Exit;
291
+
292
+ if ( size == 0 )
293
+ {
294
+ error = FT_THROW( Invalid_Table );
295
+ goto Exit;
296
+ }
297
+
298
+ idx->data_size = --size;
299
+
300
+ if ( load )
301
+ {
302
+ /* load the data */
303
+ if ( FT_FRAME_EXTRACT( size, idx->bytes ) )
304
+ goto Exit;
305
+ }
306
+ else
307
+ {
308
+ /* skip the data */
309
+ if ( FT_STREAM_SKIP( size ) )
310
+ goto Exit;
311
+ }
312
+ }
313
+
314
+ Exit:
315
+ if ( error )
316
+ FT_FREE( idx->offsets );
317
+
318
+ return error;
319
+ }
320
+
321
+
322
+ static void
323
+ cff_index_done( CFF_Index idx )
324
+ {
325
+ if ( idx->stream )
326
+ {
327
+ FT_Stream stream = idx->stream;
328
+ FT_Memory memory = stream->memory;
329
+
330
+
331
+ if ( idx->bytes )
332
+ FT_FRAME_RELEASE( idx->bytes );
333
+
334
+ FT_FREE( idx->offsets );
335
+ FT_ZERO( idx );
336
+ }
337
+ }
338
+
339
+
340
+ static FT_Error
341
+ cff_index_load_offsets( CFF_Index idx )
342
+ {
343
+ FT_Error error = FT_Err_Ok;
344
+ FT_Stream stream = idx->stream;
345
+ FT_Memory memory = stream->memory;
346
+
347
+
348
+ if ( idx->count > 0 && !idx->offsets )
349
+ {
350
+ FT_Byte offsize = idx->off_size;
351
+ FT_ULong data_size;
352
+ FT_Byte* p;
353
+ FT_Byte* p_end;
354
+ FT_ULong* poff;
355
+
356
+
357
+ data_size = (FT_ULong)( idx->count + 1 ) * offsize;
358
+
359
+ if ( FT_QNEW_ARRAY( idx->offsets, idx->count + 1 ) ||
360
+ FT_STREAM_SEEK( idx->start + idx->hdr_size ) ||
361
+ FT_FRAME_ENTER( data_size ) )
362
+ goto Exit;
363
+
364
+ poff = idx->offsets;
365
+ p = (FT_Byte*)stream->cursor;
366
+ p_end = p + data_size;
367
+
368
+ switch ( offsize )
369
+ {
370
+ case 1:
371
+ for ( ; p < p_end; p++, poff++ )
372
+ poff[0] = p[0];
373
+ break;
374
+
375
+ case 2:
376
+ for ( ; p < p_end; p += 2, poff++ )
377
+ poff[0] = FT_PEEK_USHORT( p );
378
+ break;
379
+
380
+ case 3:
381
+ for ( ; p < p_end; p += 3, poff++ )
382
+ poff[0] = FT_PEEK_UOFF3( p );
383
+ break;
384
+
385
+ default:
386
+ for ( ; p < p_end; p += 4, poff++ )
387
+ poff[0] = FT_PEEK_ULONG( p );
388
+ }
389
+
390
+ FT_FRAME_EXIT();
391
+ }
392
+
393
+ Exit:
394
+ if ( error )
395
+ FT_FREE( idx->offsets );
396
+
397
+ return error;
398
+ }
399
+
400
+
401
+ /* Allocate a table containing pointers to an index's elements. */
402
+ /* The `pool' argument makes this function convert the index */
403
+ /* entries to C-style strings (that is, null-terminated). */
404
+ static FT_Error
405
+ cff_index_get_pointers( CFF_Index idx,
406
+ FT_Byte*** table,
407
+ FT_Byte** pool,
408
+ FT_ULong* pool_size )
409
+ {
410
+ FT_Error error = FT_Err_Ok;
411
+ FT_Memory memory = idx->stream->memory;
412
+
413
+ FT_Byte** tbl = NULL;
414
+ FT_Byte* new_bytes = NULL;
415
+ FT_ULong new_size;
416
+
417
+
418
+ *table = NULL;
419
+
420
+ if ( !idx->offsets )
421
+ {
422
+ error = cff_index_load_offsets( idx );
423
+ if ( error )
424
+ goto Exit;
425
+ }
426
+
427
+ new_size = idx->data_size + idx->count;
428
+
429
+ if ( idx->count > 0 &&
430
+ !FT_QNEW_ARRAY( tbl, idx->count + 1 ) &&
431
+ ( !pool || !FT_ALLOC( new_bytes, new_size ) ) )
432
+ {
433
+ FT_ULong n, cur_offset;
434
+ FT_ULong extra = 0;
435
+ FT_Byte* org_bytes = idx->bytes;
436
+
437
+
438
+ /* at this point, `idx->offsets' can't be NULL */
439
+ cur_offset = idx->offsets[0] - 1;
440
+
441
+ /* sanity check */
442
+ if ( cur_offset != 0 )
443
+ {
444
+ FT_TRACE0(( "cff_index_get_pointers:"
445
+ " invalid first offset value %ld set to zero\n",
446
+ cur_offset ));
447
+ cur_offset = 0;
448
+ }
449
+
450
+ if ( !pool )
451
+ tbl[0] = org_bytes + cur_offset;
452
+ else
453
+ tbl[0] = new_bytes + cur_offset;
454
+
455
+ for ( n = 1; n <= idx->count; n++ )
456
+ {
457
+ FT_ULong next_offset = idx->offsets[n] - 1;
458
+
459
+
460
+ /* two sanity checks for invalid offset tables */
461
+ if ( next_offset < cur_offset )
462
+ next_offset = cur_offset;
463
+ else if ( next_offset > idx->data_size )
464
+ next_offset = idx->data_size;
465
+
466
+ if ( !pool )
467
+ tbl[n] = org_bytes + next_offset;
468
+ else
469
+ {
470
+ tbl[n] = new_bytes + next_offset + extra;
471
+
472
+ if ( next_offset != cur_offset )
473
+ {
474
+ FT_MEM_COPY( tbl[n - 1],
475
+ org_bytes + cur_offset,
476
+ tbl[n] - tbl[n - 1] );
477
+ tbl[n][0] = '\0';
478
+ tbl[n] += 1;
479
+ extra++;
480
+ }
481
+ }
482
+
483
+ cur_offset = next_offset;
484
+ }
485
+ *table = tbl;
486
+
487
+ if ( pool )
488
+ *pool = new_bytes;
489
+ if ( pool_size )
490
+ *pool_size = new_size;
491
+ }
492
+
493
+ Exit:
494
+ if ( error && new_bytes )
495
+ FT_FREE( new_bytes );
496
+ if ( error && tbl )
497
+ FT_FREE( tbl );
498
+
499
+ return error;
500
+ }
501
+
502
+
503
+ FT_LOCAL_DEF( FT_Error )
504
+ cff_index_access_element( CFF_Index idx,
505
+ FT_UInt element,
506
+ FT_Byte** pbytes,
507
+ FT_ULong* pbyte_len )
508
+ {
509
+ FT_Error error = FT_Err_Ok;
510
+
511
+
512
+ if ( idx && idx->count > element )
513
+ {
514
+ /* compute start and end offsets */
515
+ FT_Stream stream = idx->stream;
516
+ FT_ULong off1, off2 = 0;
517
+
518
+
519
+ /* load offsets from file or the offset table */
520
+ if ( !idx->offsets )
521
+ {
522
+ FT_ULong pos = element * idx->off_size;
523
+
524
+
525
+ if ( FT_STREAM_SEEK( idx->start + idx->hdr_size + pos ) )
526
+ goto Exit;
527
+
528
+ off1 = cff_index_read_offset( idx, &error );
529
+ if ( error )
530
+ goto Exit;
531
+
532
+ if ( off1 != 0 )
533
+ {
534
+ do
535
+ {
536
+ element++;
537
+ off2 = cff_index_read_offset( idx, &error );
538
+
539
+ } while ( off2 == 0 && element < idx->count );
540
+ }
541
+ }
542
+ else /* use offsets table */
543
+ {
544
+ off1 = idx->offsets[element];
545
+ if ( off1 )
546
+ {
547
+ do
548
+ {
549
+ element++;
550
+ off2 = idx->offsets[element];
551
+
552
+ } while ( off2 == 0 && element < idx->count );
553
+ }
554
+ }
555
+
556
+ /* XXX: should check off2 does not exceed the end of this entry; */
557
+ /* at present, only truncate off2 at the end of this stream */
558
+ if ( off2 > stream->size + 1 ||
559
+ idx->data_offset > stream->size - off2 + 1 )
560
+ {
561
+ FT_ERROR(( "cff_index_access_element:"
562
+ " offset to next entry (%ld)"
563
+ " exceeds the end of stream (%ld)\n",
564
+ off2, stream->size - idx->data_offset + 1 ));
565
+ off2 = stream->size - idx->data_offset + 1;
566
+ }
567
+
568
+ /* access element */
569
+ if ( off1 && off2 > off1 )
570
+ {
571
+ *pbyte_len = off2 - off1;
572
+
573
+ if ( idx->bytes )
574
+ {
575
+ /* this index was completely loaded in memory, that's easy */
576
+ *pbytes = idx->bytes + off1 - 1;
577
+ }
578
+ else
579
+ {
580
+ /* this index is still on disk/file, access it through a frame */
581
+ if ( FT_STREAM_SEEK( idx->data_offset + off1 - 1 ) ||
582
+ FT_FRAME_EXTRACT( off2 - off1, *pbytes ) )
583
+ goto Exit;
584
+ }
585
+ }
586
+ else
587
+ {
588
+ /* empty index element */
589
+ *pbytes = 0;
590
+ *pbyte_len = 0;
591
+ }
592
+ }
593
+ else
594
+ error = FT_THROW( Invalid_Argument );
595
+
596
+ Exit:
597
+ return error;
598
+ }
599
+
600
+
601
+ FT_LOCAL_DEF( void )
602
+ cff_index_forget_element( CFF_Index idx,
603
+ FT_Byte** pbytes )
604
+ {
605
+ if ( idx->bytes == 0 )
606
+ {
607
+ FT_Stream stream = idx->stream;
608
+
609
+
610
+ FT_FRAME_RELEASE( *pbytes );
611
+ }
612
+ }
613
+
614
+
615
+ /* get an entry from Name INDEX */
616
+ FT_LOCAL_DEF( FT_String* )
617
+ cff_index_get_name( CFF_Font font,
618
+ FT_UInt element )
619
+ {
620
+ CFF_Index idx = &font->name_index;
621
+ FT_Memory memory;
622
+ FT_Byte* bytes;
623
+ FT_ULong byte_len;
624
+ FT_Error error;
625
+ FT_String* name = NULL;
626
+
627
+
628
+ if ( !idx->stream ) /* CFF2 does not include a name index */
629
+ goto Exit;
630
+
631
+ memory = idx->stream->memory;
632
+
633
+ error = cff_index_access_element( idx, element, &bytes, &byte_len );
634
+ if ( error )
635
+ goto Exit;
636
+
637
+ if ( !FT_QALLOC( name, byte_len + 1 ) )
638
+ {
639
+ FT_MEM_COPY( name, bytes, byte_len );
640
+ name[byte_len] = 0;
641
+ }
642
+ cff_index_forget_element( idx, &bytes );
643
+
644
+ Exit:
645
+ return name;
646
+ }
647
+
648
+
649
+ /* get an entry from String INDEX */
650
+ FT_LOCAL_DEF( FT_String* )
651
+ cff_index_get_string( CFF_Font font,
652
+ FT_UInt element )
653
+ {
654
+ return ( element < font->num_strings )
655
+ ? (FT_String*)font->strings[element]
656
+ : NULL;
657
+ }
658
+
659
+
660
+ FT_LOCAL_DEF( FT_String* )
661
+ cff_index_get_sid_string( CFF_Font font,
662
+ FT_UInt sid )
663
+ {
664
+ /* value 0xFFFFU indicates a missing dictionary entry */
665
+ if ( sid == 0xFFFFU )
666
+ return NULL;
667
+
668
+ /* if it is not a standard string, return it */
669
+ if ( sid > 390 )
670
+ return cff_index_get_string( font, sid - 391 );
671
+
672
+ /* CID-keyed CFF fonts don't have glyph names */
673
+ if ( !font->psnames )
674
+ return NULL;
675
+
676
+ /* this is a standard string */
677
+ return (FT_String *)font->psnames->adobe_std_strings( sid );
678
+ }
679
+
680
+
681
+ /*************************************************************************/
682
+ /*************************************************************************/
683
+ /*** ***/
684
+ /*** FD Select table support ***/
685
+ /*** ***/
686
+ /*************************************************************************/
687
+ /*************************************************************************/
688
+
689
+
690
+ static void
691
+ CFF_Done_FD_Select( CFF_FDSelect fdselect,
692
+ FT_Stream stream )
693
+ {
694
+ if ( fdselect->data )
695
+ FT_FRAME_RELEASE( fdselect->data );
696
+
697
+ fdselect->data_size = 0;
698
+ fdselect->format = 0;
699
+ fdselect->range_count = 0;
700
+ }
701
+
702
+
703
+ static FT_Error
704
+ CFF_Load_FD_Select( CFF_FDSelect fdselect,
705
+ FT_UInt num_glyphs,
706
+ FT_Stream stream,
707
+ FT_ULong offset )
708
+ {
709
+ FT_Error error;
710
+ FT_Byte format;
711
+ FT_UInt num_ranges;
712
+
713
+
714
+ /* read format */
715
+ if ( FT_STREAM_SEEK( offset ) || FT_READ_BYTE( format ) )
716
+ goto Exit;
717
+
718
+ fdselect->format = format;
719
+ fdselect->cache_count = 0; /* clear cache */
720
+
721
+ switch ( format )
722
+ {
723
+ case 0: /* format 0, that's simple */
724
+ fdselect->data_size = num_glyphs;
725
+ goto Load_Data;
726
+
727
+ case 3: /* format 3, a tad more complex */
728
+ if ( FT_READ_USHORT( num_ranges ) )
729
+ goto Exit;
730
+
731
+ if ( !num_ranges )
732
+ {
733
+ FT_TRACE0(( "CFF_Load_FD_Select: empty FDSelect array\n" ));
734
+ error = FT_THROW( Invalid_File_Format );
735
+ goto Exit;
736
+ }
737
+
738
+ fdselect->data_size = num_ranges * 3 + 2;
739
+
740
+ Load_Data:
741
+ if ( FT_FRAME_EXTRACT( fdselect->data_size, fdselect->data ) )
742
+ goto Exit;
743
+ break;
744
+
745
+ default: /* hmm... that's wrong */
746
+ error = FT_THROW( Invalid_File_Format );
747
+ }
748
+
749
+ Exit:
750
+ return error;
751
+ }
752
+
753
+
754
+ FT_LOCAL_DEF( FT_Byte )
755
+ cff_fd_select_get( CFF_FDSelect fdselect,
756
+ FT_UInt glyph_index )
757
+ {
758
+ FT_Byte fd = 0;
759
+
760
+
761
+ /* if there is no FDSelect, return zero */
762
+ /* Note: CFF2 with just one Font Dict has no FDSelect */
763
+ if ( !fdselect->data )
764
+ goto Exit;
765
+
766
+ switch ( fdselect->format )
767
+ {
768
+ case 0:
769
+ fd = fdselect->data[glyph_index];
770
+ break;
771
+
772
+ case 3:
773
+ /* first, compare to the cache */
774
+ if ( glyph_index - fdselect->cache_first < fdselect->cache_count )
775
+ {
776
+ fd = fdselect->cache_fd;
777
+ break;
778
+ }
779
+
780
+ /* then, look up the ranges array */
781
+ {
782
+ FT_Byte* p = fdselect->data;
783
+ FT_Byte* p_limit = p + fdselect->data_size;
784
+ FT_Byte fd2;
785
+ FT_UInt first, limit;
786
+
787
+
788
+ first = FT_NEXT_USHORT( p );
789
+ do
790
+ {
791
+ if ( glyph_index < first )
792
+ break;
793
+
794
+ fd2 = *p++;
795
+ limit = FT_NEXT_USHORT( p );
796
+
797
+ if ( glyph_index < limit )
798
+ {
799
+ fd = fd2;
800
+
801
+ /* update cache */
802
+ fdselect->cache_first = first;
803
+ fdselect->cache_count = limit - first;
804
+ fdselect->cache_fd = fd2;
805
+ break;
806
+ }
807
+ first = limit;
808
+
809
+ } while ( p < p_limit );
810
+ }
811
+ break;
812
+
813
+ default:
814
+ ;
815
+ }
816
+
817
+ Exit:
818
+ return fd;
819
+ }
820
+
821
+
822
+ /*************************************************************************/
823
+ /*************************************************************************/
824
+ /*** ***/
825
+ /*** CFF font support ***/
826
+ /*** ***/
827
+ /*************************************************************************/
828
+ /*************************************************************************/
829
+
830
+ static FT_Error
831
+ cff_charset_compute_cids( CFF_Charset charset,
832
+ FT_UInt num_glyphs,
833
+ FT_Memory memory )
834
+ {
835
+ FT_Error error = FT_Err_Ok;
836
+ FT_UInt i;
837
+ FT_UShort max_cid = 0;
838
+
839
+
840
+ if ( charset->max_cid > 0 )
841
+ goto Exit;
842
+
843
+ for ( i = 0; i < num_glyphs; i++ )
844
+ {
845
+ if ( charset->sids[i] > max_cid )
846
+ max_cid = charset->sids[i];
847
+ }
848
+
849
+ if ( FT_NEW_ARRAY( charset->cids, (FT_ULong)max_cid + 1 ) )
850
+ goto Exit;
851
+
852
+ /* When multiple GIDs map to the same CID, we choose the lowest */
853
+ /* GID. This is not described in any spec, but it matches the */
854
+ /* behaviour of recent Acroread versions. The loop stops when */
855
+ /* the unsigned index wraps around after reaching zero. */
856
+ for ( i = num_glyphs - 1; i < num_glyphs; i-- )
857
+ charset->cids[charset->sids[i]] = (FT_UShort)i;
858
+
859
+ charset->max_cid = max_cid;
860
+ charset->num_glyphs = num_glyphs;
861
+
862
+ Exit:
863
+ return error;
864
+ }
865
+
866
+
867
+ FT_LOCAL_DEF( FT_UInt )
868
+ cff_charset_cid_to_gindex( CFF_Charset charset,
869
+ FT_UInt cid )
870
+ {
871
+ FT_UInt result = 0;
872
+
873
+
874
+ if ( cid <= charset->max_cid )
875
+ result = charset->cids[cid];
876
+
877
+ return result;
878
+ }
879
+
880
+
881
+ static void
882
+ cff_charset_free_cids( CFF_Charset charset,
883
+ FT_Memory memory )
884
+ {
885
+ FT_FREE( charset->cids );
886
+ charset->max_cid = 0;
887
+ }
888
+
889
+
890
+ static void
891
+ cff_charset_done( CFF_Charset charset,
892
+ FT_Stream stream )
893
+ {
894
+ FT_Memory memory = stream->memory;
895
+
896
+
897
+ cff_charset_free_cids( charset, memory );
898
+
899
+ FT_FREE( charset->sids );
900
+ charset->format = 0;
901
+ charset->offset = 0;
902
+ }
903
+
904
+
905
+ static FT_Error
906
+ cff_charset_load( CFF_Charset charset,
907
+ FT_UInt num_glyphs,
908
+ FT_Stream stream,
909
+ FT_ULong base_offset,
910
+ FT_ULong offset,
911
+ FT_Bool invert )
912
+ {
913
+ FT_Memory memory = stream->memory;
914
+ FT_Error error = FT_Err_Ok;
915
+ FT_UShort glyph_sid;
916
+
917
+
918
+ /* If the offset is greater than 2, we have to parse the charset */
919
+ /* table. */
920
+ if ( offset > 2 )
921
+ {
922
+ FT_UInt j;
923
+
924
+
925
+ charset->offset = base_offset + offset;
926
+
927
+ /* Get the format of the table. */
928
+ if ( FT_STREAM_SEEK( charset->offset ) ||
929
+ FT_READ_BYTE( charset->format ) )
930
+ goto Exit;
931
+
932
+ /* Allocate memory for sids. */
933
+ if ( FT_QNEW_ARRAY( charset->sids, num_glyphs ) )
934
+ goto Exit;
935
+
936
+ /* assign the .notdef glyph */
937
+ charset->sids[0] = 0;
938
+
939
+ switch ( charset->format )
940
+ {
941
+ case 0:
942
+ if ( num_glyphs > 0 )
943
+ {
944
+ if ( FT_FRAME_ENTER( ( num_glyphs - 1 ) * 2 ) )
945
+ goto Exit;
946
+
947
+ for ( j = 1; j < num_glyphs; j++ )
948
+ charset->sids[j] = FT_GET_USHORT();
949
+
950
+ FT_FRAME_EXIT();
951
+ }
952
+ break;
953
+
954
+ case 1:
955
+ case 2:
956
+ {
957
+ FT_UInt nleft;
958
+ FT_UInt i;
959
+
960
+
961
+ j = 1;
962
+
963
+ while ( j < num_glyphs )
964
+ {
965
+ /* Read the first glyph sid of the range. */
966
+ if ( FT_READ_USHORT( glyph_sid ) )
967
+ goto Exit;
968
+
969
+ /* Read the number of glyphs in the range. */
970
+ if ( charset->format == 2 )
971
+ {
972
+ if ( FT_READ_USHORT( nleft ) )
973
+ goto Exit;
974
+ }
975
+ else
976
+ {
977
+ if ( FT_READ_BYTE( nleft ) )
978
+ goto Exit;
979
+ }
980
+
981
+ /* try to rescue some of the SIDs if `nleft' is too large */
982
+ if ( glyph_sid > 0xFFFFL - nleft )
983
+ {
984
+ FT_ERROR(( "cff_charset_load: invalid SID range trimmed"
985
+ " nleft=%d -> %ld\n", nleft, 0xFFFFL - glyph_sid ));
986
+ nleft = ( FT_UInt )( 0xFFFFL - glyph_sid );
987
+ }
988
+
989
+ /* Fill in the range of sids -- `nleft + 1' glyphs. */
990
+ for ( i = 0; j < num_glyphs && i <= nleft; i++, j++, glyph_sid++ )
991
+ charset->sids[j] = glyph_sid;
992
+ }
993
+ }
994
+ break;
995
+
996
+ default:
997
+ FT_ERROR(( "cff_charset_load: invalid table format\n" ));
998
+ error = FT_THROW( Invalid_File_Format );
999
+ goto Exit;
1000
+ }
1001
+ }
1002
+ else
1003
+ {
1004
+ /* Parse default tables corresponding to offset == 0, 1, or 2. */
1005
+ /* CFF specification intimates the following: */
1006
+ /* */
1007
+ /* In order to use a predefined charset, the following must be */
1008
+ /* true: The charset constructed for the glyphs in the font's */
1009
+ /* charstrings dictionary must match the predefined charset in */
1010
+ /* the first num_glyphs. */
1011
+
1012
+ charset->offset = offset; /* record charset type */
1013
+
1014
+ switch ( (FT_UInt)offset )
1015
+ {
1016
+ case 0:
1017
+ if ( num_glyphs > 229 )
1018
+ {
1019
+ FT_ERROR(( "cff_charset_load: implicit charset larger than\n" ));
1020
+ FT_ERROR(( "predefined charset (Adobe ISO-Latin)\n" ));
1021
+ error = FT_THROW( Invalid_File_Format );
1022
+ goto Exit;
1023
+ }
1024
+
1025
+ /* Allocate memory for sids. */
1026
+ if ( FT_QNEW_ARRAY( charset->sids, num_glyphs ) )
1027
+ goto Exit;
1028
+
1029
+ /* Copy the predefined charset into the allocated memory. */
1030
+ FT_ARRAY_COPY( charset->sids, cff_isoadobe_charset, num_glyphs );
1031
+
1032
+ break;
1033
+
1034
+ case 1:
1035
+ if ( num_glyphs > 166 )
1036
+ {
1037
+ FT_ERROR(( "cff_charset_load: implicit charset larger than\n" ));
1038
+ FT_ERROR(( "predefined charset (Adobe Expert)\n" ));
1039
+ error = FT_THROW( Invalid_File_Format );
1040
+ goto Exit;
1041
+ }
1042
+
1043
+ /* Allocate memory for sids. */
1044
+ if ( FT_QNEW_ARRAY( charset->sids, num_glyphs ) )
1045
+ goto Exit;
1046
+
1047
+ /* Copy the predefined charset into the allocated memory. */
1048
+ FT_ARRAY_COPY( charset->sids, cff_expert_charset, num_glyphs );
1049
+
1050
+ break;
1051
+
1052
+ case 2:
1053
+ if ( num_glyphs > 87 )
1054
+ {
1055
+ FT_ERROR(( "cff_charset_load: implicit charset larger than\n" ));
1056
+ FT_ERROR(( "predefined charset (Adobe Expert Subset)\n" ));
1057
+ error = FT_THROW( Invalid_File_Format );
1058
+ goto Exit;
1059
+ }
1060
+
1061
+ /* Allocate memory for sids. */
1062
+ if ( FT_QNEW_ARRAY( charset->sids, num_glyphs ) )
1063
+ goto Exit;
1064
+
1065
+ /* Copy the predefined charset into the allocated memory. */
1066
+ FT_ARRAY_COPY( charset->sids, cff_expertsubset_charset, num_glyphs );
1067
+
1068
+ break;
1069
+
1070
+ default:
1071
+ error = FT_THROW( Invalid_File_Format );
1072
+ goto Exit;
1073
+ }
1074
+ }
1075
+
1076
+ /* we have to invert the `sids' array for subsetted CID-keyed fonts */
1077
+ if ( invert )
1078
+ error = cff_charset_compute_cids( charset, num_glyphs, memory );
1079
+
1080
+ Exit:
1081
+ /* Clean up if there was an error. */
1082
+ if ( error )
1083
+ {
1084
+ FT_FREE( charset->sids );
1085
+ FT_FREE( charset->cids );
1086
+ charset->format = 0;
1087
+ charset->offset = 0;
1088
+ }
1089
+
1090
+ return error;
1091
+ }
1092
+
1093
+
1094
+ static void
1095
+ cff_vstore_done( CFF_VStoreRec* vstore,
1096
+ FT_Memory memory )
1097
+ {
1098
+ FT_UInt i;
1099
+
1100
+
1101
+ /* free regionList and axisLists */
1102
+ if ( vstore->varRegionList )
1103
+ {
1104
+ for ( i = 0; i < vstore->regionCount; i++ )
1105
+ FT_FREE( vstore->varRegionList[i].axisList );
1106
+ }
1107
+ FT_FREE( vstore->varRegionList );
1108
+
1109
+ /* free varData and indices */
1110
+ if ( vstore->varData )
1111
+ {
1112
+ for ( i = 0; i < vstore->dataCount; i++ )
1113
+ FT_FREE( vstore->varData[i].regionIndices );
1114
+ }
1115
+ FT_FREE( vstore->varData );
1116
+ }
1117
+
1118
+
1119
+ /* convert 2.14 to Fixed */
1120
+ #define FT_fdot14ToFixed( x ) ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
1121
+
1122
+
1123
+ static FT_Error
1124
+ cff_vstore_load( CFF_VStoreRec* vstore,
1125
+ FT_Stream stream,
1126
+ FT_ULong base_offset,
1127
+ FT_ULong offset )
1128
+ {
1129
+ FT_Memory memory = stream->memory;
1130
+ FT_Error error = FT_ERR( Invalid_File_Format );
1131
+
1132
+ FT_ULong* dataOffsetArray = NULL;
1133
+ FT_UInt i, j;
1134
+
1135
+
1136
+ /* no offset means no vstore to parse */
1137
+ if ( offset )
1138
+ {
1139
+ FT_UInt vsOffset;
1140
+ FT_UInt format;
1141
+ FT_UInt dataCount;
1142
+ FT_UInt regionCount;
1143
+ FT_ULong regionListOffset;
1144
+
1145
+
1146
+ /* we need to parse the table to determine its size; */
1147
+ /* skip table length */
1148
+ if ( FT_STREAM_SEEK( base_offset + offset ) ||
1149
+ FT_STREAM_SKIP( 2 ) )
1150
+ goto Exit;
1151
+
1152
+ /* actual variation store begins after the length */
1153
+ vsOffset = FT_STREAM_POS();
1154
+
1155
+ /* check the header */
1156
+ if ( FT_READ_USHORT( format ) )
1157
+ goto Exit;
1158
+ if ( format != 1 )
1159
+ {
1160
+ error = FT_THROW( Invalid_File_Format );
1161
+ goto Exit;
1162
+ }
1163
+
1164
+ /* read top level fields */
1165
+ if ( FT_READ_ULONG( regionListOffset ) ||
1166
+ FT_READ_USHORT( dataCount ) )
1167
+ goto Exit;
1168
+
1169
+ /* make temporary copy of item variation data offsets; */
1170
+ /* we'll parse region list first, then come back */
1171
+ if ( FT_QNEW_ARRAY( dataOffsetArray, dataCount ) )
1172
+ goto Exit;
1173
+
1174
+ for ( i = 0; i < dataCount; i++ )
1175
+ {
1176
+ if ( FT_READ_ULONG( dataOffsetArray[i] ) )
1177
+ goto Exit;
1178
+ }
1179
+
1180
+ /* parse regionList and axisLists */
1181
+ if ( FT_STREAM_SEEK( vsOffset + regionListOffset ) ||
1182
+ FT_READ_USHORT( vstore->axisCount ) ||
1183
+ FT_READ_USHORT( regionCount ) )
1184
+ goto Exit;
1185
+
1186
+ vstore->regionCount = 0;
1187
+ if ( FT_QNEW_ARRAY( vstore->varRegionList, regionCount ) )
1188
+ goto Exit;
1189
+
1190
+ for ( i = 0; i < regionCount; i++ )
1191
+ {
1192
+ CFF_VarRegion* region = &vstore->varRegionList[i];
1193
+
1194
+
1195
+ if ( FT_QNEW_ARRAY( region->axisList, vstore->axisCount ) )
1196
+ goto Exit;
1197
+
1198
+ /* keep track of how many axisList to deallocate on error */
1199
+ vstore->regionCount++;
1200
+
1201
+ for ( j = 0; j < vstore->axisCount; j++ )
1202
+ {
1203
+ CFF_AxisCoords* axis = &region->axisList[j];
1204
+
1205
+ FT_Int start, peak, end;
1206
+
1207
+
1208
+ if ( FT_READ_SHORT( start ) ||
1209
+ FT_READ_SHORT( peak ) ||
1210
+ FT_READ_SHORT( end ) )
1211
+ goto Exit;
1212
+
1213
+ /* immediately tag invalid ranges with special peak = 0 */
1214
+ if ( ( start < 0 && end > 0 ) || start > peak || peak > end )
1215
+ peak = 0;
1216
+
1217
+ axis->startCoord = FT_fdot14ToFixed( start );
1218
+ axis->peakCoord = FT_fdot14ToFixed( peak );
1219
+ axis->endCoord = FT_fdot14ToFixed( end );
1220
+ }
1221
+ }
1222
+
1223
+ /* use dataOffsetArray now to parse varData items */
1224
+ vstore->dataCount = 0;
1225
+ if ( FT_QNEW_ARRAY( vstore->varData, dataCount ) )
1226
+ goto Exit;
1227
+
1228
+ for ( i = 0; i < dataCount; i++ )
1229
+ {
1230
+ CFF_VarData* data = &vstore->varData[i];
1231
+
1232
+
1233
+ if ( FT_STREAM_SEEK( vsOffset + dataOffsetArray[i] ) )
1234
+ goto Exit;
1235
+
1236
+ /* ignore `itemCount' and `shortDeltaCount' */
1237
+ /* because CFF2 has no delta sets */
1238
+ if ( FT_STREAM_SKIP( 4 ) )
1239
+ goto Exit;
1240
+
1241
+ /* Note: just record values; consistency is checked later */
1242
+ /* by cff_blend_build_vector when it consumes `vstore' */
1243
+
1244
+ if ( FT_READ_USHORT( data->regionIdxCount ) )
1245
+ goto Exit;
1246
+
1247
+ if ( FT_QNEW_ARRAY( data->regionIndices, data->regionIdxCount ) )
1248
+ goto Exit;
1249
+
1250
+ /* keep track of how many regionIndices to deallocate on error */
1251
+ vstore->dataCount++;
1252
+
1253
+ for ( j = 0; j < data->regionIdxCount; j++ )
1254
+ {
1255
+ if ( FT_READ_USHORT( data->regionIndices[j] ) )
1256
+ goto Exit;
1257
+ }
1258
+ }
1259
+ }
1260
+
1261
+ error = FT_Err_Ok;
1262
+
1263
+ Exit:
1264
+ FT_FREE( dataOffsetArray );
1265
+ if ( error )
1266
+ cff_vstore_done( vstore, memory );
1267
+
1268
+ return error;
1269
+ }
1270
+
1271
+
1272
+ /* Clear blend stack (after blend values are consumed). */
1273
+ /* */
1274
+ /* TODO: Should do this in cff_run_parse, but subFont */
1275
+ /* ref is not available there. */
1276
+ /* */
1277
+ /* Allocation is not changed when stack is cleared. */
1278
+ FT_LOCAL_DEF( void )
1279
+ cff_blend_clear( CFF_SubFont subFont )
1280
+ {
1281
+ subFont->blend_top = subFont->blend_stack;
1282
+ subFont->blend_used = 0;
1283
+ }
1284
+
1285
+
1286
+ /* Blend numOperands on the stack, */
1287
+ /* store results into the first numBlends values, */
1288
+ /* then pop remaining arguments. */
1289
+ /* */
1290
+ /* This is comparable to `cf2_doBlend' but */
1291
+ /* the cffparse stack is different and can't be written. */
1292
+ /* Blended values are written to a different buffer, */
1293
+ /* using reserved operator 255. */
1294
+ /* */
1295
+ /* Blend calculation is done in 16.16 fixed-point. */
1296
+ FT_LOCAL_DEF( FT_Error )
1297
+ cff_blend_doBlend( CFF_SubFont subFont,
1298
+ CFF_Parser parser,
1299
+ FT_UInt numBlends )
1300
+ {
1301
+ FT_UInt delta;
1302
+ FT_UInt base;
1303
+ FT_UInt i, j;
1304
+ FT_UInt size;
1305
+
1306
+ CFF_Blend blend = &subFont->blend;
1307
+
1308
+ FT_Memory memory = subFont->blend.font->memory; /* for FT_REALLOC */
1309
+ FT_Error error = FT_Err_Ok; /* for FT_REALLOC */
1310
+
1311
+ /* compute expected number of operands for this blend */
1312
+ FT_UInt numOperands = (FT_UInt)( numBlends * blend->lenBV );
1313
+ FT_UInt count = (FT_UInt)( parser->top - 1 - parser->stack );
1314
+
1315
+
1316
+ if ( numOperands > count )
1317
+ {
1318
+ FT_TRACE4(( " cff_blend_doBlend: Stack underflow %d argument%s\n",
1319
+ count,
1320
+ count == 1 ? "" : "s" ));
1321
+
1322
+ error = FT_THROW( Stack_Underflow );
1323
+ goto Exit;
1324
+ }
1325
+
1326
+ /* check whether we have room for `numBlends' values at `blend_top' */
1327
+ size = 5 * numBlends; /* add 5 bytes per entry */
1328
+ if ( subFont->blend_used + size > subFont->blend_alloc )
1329
+ {
1330
+ FT_Byte* blend_stack_old = subFont->blend_stack;
1331
+ FT_Byte* blend_top_old = subFont->blend_top;
1332
+
1333
+
1334
+ /* increase or allocate `blend_stack' and reset `blend_top'; */
1335
+ /* prepare to append `numBlends' values to the buffer */
1336
+ if ( FT_QREALLOC( subFont->blend_stack,
1337
+ subFont->blend_alloc,
1338
+ subFont->blend_alloc + size ) )
1339
+ goto Exit;
1340
+
1341
+ subFont->blend_top = subFont->blend_stack + subFont->blend_used;
1342
+ subFont->blend_alloc += size;
1343
+
1344
+ /* iterate over the parser stack and adjust pointers */
1345
+ /* if the reallocated buffer has a different address */
1346
+ if ( blend_stack_old &&
1347
+ subFont->blend_stack != blend_stack_old )
1348
+ {
1349
+ FT_PtrDist offset = subFont->blend_stack - blend_stack_old;
1350
+ FT_Byte** p;
1351
+
1352
+
1353
+ for ( p = parser->stack; p < parser->top; p++ )
1354
+ {
1355
+ if ( *p >= blend_stack_old && *p < blend_top_old )
1356
+ *p += offset;
1357
+ }
1358
+ }
1359
+ }
1360
+ subFont->blend_used += size;
1361
+
1362
+ base = count - numOperands; /* index of first blend arg */
1363
+ delta = base + numBlends; /* index of first delta arg */
1364
+
1365
+ for ( i = 0; i < numBlends; i++ )
1366
+ {
1367
+ const FT_Int32* weight = &blend->BV[1];
1368
+ FT_Fixed sum;
1369
+
1370
+
1371
+ /* convert inputs to 16.16 fixed point */
1372
+ sum = cff_parse_fixed( parser, &parser->stack[i + base] );
1373
+
1374
+ for ( j = 1; j < blend->lenBV; j++ )
1375
+ sum += FT_MulFix( cff_parse_fixed( parser, &parser->stack[delta++] ),
1376
+ *weight++ );
1377
+
1378
+ /* point parser stack to new value on blend_stack */
1379
+ parser->stack[i + base] = subFont->blend_top;
1380
+
1381
+ /* Push blended result as Type 2 5-byte fixed-point number. This */
1382
+ /* will not conflict with actual DICTs because 255 is a reserved */
1383
+ /* opcode in both CFF and CFF2 DICTs. See `cff_parse_num' for */
1384
+ /* decode of this, which rounds to an integer. */
1385
+ *subFont->blend_top++ = 255;
1386
+ *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum >> 24 );
1387
+ *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum >> 16 );
1388
+ *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum >> 8 );
1389
+ *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum );
1390
+ }
1391
+
1392
+ /* leave only numBlends results on parser stack */
1393
+ parser->top = &parser->stack[base + numBlends];
1394
+
1395
+ Exit:
1396
+ return error;
1397
+ }
1398
+
1399
+
1400
+ /* Compute a blend vector from variation store index and normalized */
1401
+ /* vector based on pseudo-code in OpenType Font Variations Overview. */
1402
+ /* */
1403
+ /* Note: lenNDV == 0 produces a default blend vector, (1,0,0,...). */
1404
+ FT_LOCAL_DEF( FT_Error )
1405
+ cff_blend_build_vector( CFF_Blend blend,
1406
+ FT_UInt vsindex,
1407
+ FT_UInt lenNDV,
1408
+ FT_Fixed* NDV )
1409
+ {
1410
+ FT_Error error = FT_Err_Ok; /* for FT_REALLOC */
1411
+ FT_Memory memory = blend->font->memory; /* for FT_REALLOC */
1412
+
1413
+ FT_UInt len;
1414
+ CFF_VStore vs;
1415
+ CFF_VarData* varData;
1416
+ FT_UInt master;
1417
+
1418
+
1419
+ /* protect against malformed fonts */
1420
+ if ( !( lenNDV == 0 || NDV ) )
1421
+ {
1422
+ FT_TRACE4(( " cff_blend_build_vector:"
1423
+ " Malformed Normalize Design Vector data\n" ));
1424
+ error = FT_THROW( Invalid_File_Format );
1425
+ goto Exit;
1426
+ }
1427
+
1428
+ blend->builtBV = FALSE;
1429
+
1430
+ vs = &blend->font->vstore;
1431
+
1432
+ /* VStore and fvar must be consistent */
1433
+ if ( lenNDV != 0 && lenNDV != vs->axisCount )
1434
+ {
1435
+ FT_TRACE4(( " cff_blend_build_vector: Axis count mismatch\n" ));
1436
+ error = FT_THROW( Invalid_File_Format );
1437
+ goto Exit;
1438
+ }
1439
+
1440
+ if ( vsindex >= vs->dataCount )
1441
+ {
1442
+ FT_TRACE4(( " cff_blend_build_vector: vsindex out of range\n" ));
1443
+ error = FT_THROW( Invalid_File_Format );
1444
+ goto Exit;
1445
+ }
1446
+
1447
+ /* select the item variation data structure */
1448
+ varData = &vs->varData[vsindex];
1449
+
1450
+ /* prepare buffer for the blend vector */
1451
+ len = varData->regionIdxCount + 1; /* add 1 for default component */
1452
+ if ( FT_QRENEW_ARRAY( blend->BV, blend->lenBV, len ) )
1453
+ goto Exit;
1454
+
1455
+ blend->lenBV = len;
1456
+
1457
+ /* outer loop steps through master designs to be blended */
1458
+ for ( master = 0; master < len; master++ )
1459
+ {
1460
+ FT_UInt j;
1461
+ FT_UInt idx;
1462
+ CFF_VarRegion* varRegion;
1463
+
1464
+
1465
+ /* default factor is always one */
1466
+ if ( master == 0 )
1467
+ {
1468
+ blend->BV[master] = FT_FIXED_ONE;
1469
+ FT_TRACE4(( " build blend vector len %d\n", len ));
1470
+ FT_TRACE4(( " [ %f ", blend->BV[master] / 65536.0 ));
1471
+ continue;
1472
+ }
1473
+
1474
+ /* VStore array does not include default master, so subtract one */
1475
+ idx = varData->regionIndices[master - 1];
1476
+ varRegion = &vs->varRegionList[idx];
1477
+
1478
+ if ( idx >= vs->regionCount )
1479
+ {
1480
+ FT_TRACE4(( " cff_blend_build_vector:"
1481
+ " region index out of range\n" ));
1482
+ error = FT_THROW( Invalid_File_Format );
1483
+ goto Exit;
1484
+ }
1485
+
1486
+ /* Note: `lenNDV' could be zero. */
1487
+ /* In that case, build default blend vector (1,0,0...). */
1488
+ if ( !lenNDV )
1489
+ {
1490
+ blend->BV[master] = 0;
1491
+ continue;
1492
+ }
1493
+
1494
+ /* In the normal case, initialize each component to 1 */
1495
+ /* before inner loop. */
1496
+ blend->BV[master] = FT_FIXED_ONE; /* default */
1497
+
1498
+ /* inner loop steps through axes in this region */
1499
+ for ( j = 0; j < lenNDV; j++ )
1500
+ {
1501
+ CFF_AxisCoords* axis = &varRegion->axisList[j];
1502
+
1503
+
1504
+ /* compute the scalar contribution of this axis */
1505
+ /* with peak of 0 used for invalid axes */
1506
+ if ( axis->peakCoord == NDV[j] ||
1507
+ axis->peakCoord == 0 )
1508
+ continue;
1509
+
1510
+ /* ignore this region if coords are out of range */
1511
+ else if ( NDV[j] <= axis->startCoord ||
1512
+ NDV[j] >= axis->endCoord )
1513
+ {
1514
+ blend->BV[master] = 0;
1515
+ break;
1516
+ }
1517
+
1518
+ /* adjust proportionally */
1519
+ else if ( NDV[j] < axis->peakCoord )
1520
+ blend->BV[master] = FT_MulDiv( blend->BV[master],
1521
+ NDV[j] - axis->startCoord,
1522
+ axis->peakCoord - axis->startCoord );
1523
+ else /* NDV[j] > axis->peakCoord ) */
1524
+ blend->BV[master] = FT_MulDiv( blend->BV[master],
1525
+ axis->endCoord - NDV[j],
1526
+ axis->endCoord - axis->peakCoord );
1527
+ }
1528
+
1529
+ FT_TRACE4(( ", %f ",
1530
+ blend->BV[master] / 65536.0 ));
1531
+ }
1532
+
1533
+ FT_TRACE4(( "]\n" ));
1534
+
1535
+ /* record the parameters used to build the blend vector */
1536
+ blend->lastVsindex = vsindex;
1537
+
1538
+ if ( lenNDV != 0 )
1539
+ {
1540
+ /* user has set a normalized vector */
1541
+ if ( FT_QRENEW_ARRAY( blend->lastNDV, blend->lenNDV, lenNDV ) )
1542
+ goto Exit;
1543
+
1544
+ FT_MEM_COPY( blend->lastNDV,
1545
+ NDV,
1546
+ lenNDV * sizeof ( *NDV ) );
1547
+ }
1548
+
1549
+ blend->lenNDV = lenNDV;
1550
+ blend->builtBV = TRUE;
1551
+
1552
+ Exit:
1553
+ return error;
1554
+ }
1555
+
1556
+
1557
+ /* `lenNDV' is zero for default vector; */
1558
+ /* return TRUE if blend vector needs to be built. */
1559
+ FT_LOCAL_DEF( FT_Bool )
1560
+ cff_blend_check_vector( CFF_Blend blend,
1561
+ FT_UInt vsindex,
1562
+ FT_UInt lenNDV,
1563
+ FT_Fixed* NDV )
1564
+ {
1565
+ if ( !blend->builtBV ||
1566
+ blend->lastVsindex != vsindex ||
1567
+ blend->lenNDV != lenNDV ||
1568
+ ( lenNDV &&
1569
+ ft_memcmp( NDV,
1570
+ blend->lastNDV,
1571
+ lenNDV * sizeof ( *NDV ) ) != 0 ) )
1572
+ {
1573
+ /* need to build blend vector */
1574
+ return TRUE;
1575
+ }
1576
+
1577
+ return FALSE;
1578
+ }
1579
+
1580
+
1581
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1582
+
1583
+ FT_LOCAL_DEF( FT_Error )
1584
+ cff_get_var_blend( FT_Face face, /* CFF_Face */
1585
+ FT_UInt *num_coords,
1586
+ FT_Fixed* *coords,
1587
+ FT_Fixed* *normalizedcoords,
1588
+ FT_MM_Var* *mm_var )
1589
+ {
1590
+ CFF_Face cffface = (CFF_Face)face;
1591
+ FT_Service_MultiMasters mm = (FT_Service_MultiMasters)cffface->mm;
1592
+
1593
+
1594
+ return mm->get_var_blend( face,
1595
+ num_coords,
1596
+ coords,
1597
+ normalizedcoords,
1598
+ mm_var );
1599
+ }
1600
+
1601
+
1602
+ FT_LOCAL_DEF( void )
1603
+ cff_done_blend( FT_Face face ) /* CFF_Face */
1604
+ {
1605
+ CFF_Face cffface = (CFF_Face)face;
1606
+ FT_Service_MultiMasters mm = (FT_Service_MultiMasters)cffface->mm;
1607
+
1608
+
1609
+ if ( mm )
1610
+ mm->done_blend( face );
1611
+ }
1612
+
1613
+ #endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
1614
+
1615
+
1616
+ static void
1617
+ cff_encoding_done( CFF_Encoding encoding )
1618
+ {
1619
+ encoding->format = 0;
1620
+ encoding->offset = 0;
1621
+ encoding->count = 0;
1622
+ }
1623
+
1624
+
1625
+ static FT_Error
1626
+ cff_encoding_load( CFF_Encoding encoding,
1627
+ CFF_Charset charset,
1628
+ FT_UInt num_glyphs,
1629
+ FT_Stream stream,
1630
+ FT_ULong base_offset,
1631
+ FT_ULong offset )
1632
+ {
1633
+ FT_Error error = FT_Err_Ok;
1634
+ FT_UInt count;
1635
+ FT_UInt j;
1636
+ FT_UShort glyph_sid;
1637
+ FT_UInt glyph_code;
1638
+
1639
+
1640
+ /* Check for charset->sids. If we do not have this, we fail. */
1641
+ if ( !charset->sids )
1642
+ {
1643
+ error = FT_THROW( Invalid_File_Format );
1644
+ goto Exit;
1645
+ }
1646
+
1647
+ /* Note: The encoding table in a CFF font is indexed by glyph index; */
1648
+ /* the first encoded glyph index is 1. Hence, we read the character */
1649
+ /* code (`glyph_code') at index j and make the assignment: */
1650
+ /* */
1651
+ /* encoding->codes[glyph_code] = j + 1 */
1652
+ /* */
1653
+ /* We also make the assignment: */
1654
+ /* */
1655
+ /* encoding->sids[glyph_code] = charset->sids[j + 1] */
1656
+ /* */
1657
+ /* This gives us both a code to GID and a code to SID mapping. */
1658
+
1659
+ if ( offset > 1 )
1660
+ {
1661
+ /* Zero out the code to gid/sid mappings. */
1662
+ FT_ARRAY_ZERO( encoding->sids, 256 );
1663
+ FT_ARRAY_ZERO( encoding->codes, 256 );
1664
+
1665
+ encoding->offset = base_offset + offset;
1666
+
1667
+ /* we need to parse the table to determine its size */
1668
+ if ( FT_STREAM_SEEK( encoding->offset ) ||
1669
+ FT_READ_BYTE( encoding->format ) ||
1670
+ FT_READ_BYTE( count ) )
1671
+ goto Exit;
1672
+
1673
+ switch ( encoding->format & 0x7F )
1674
+ {
1675
+ case 0:
1676
+ {
1677
+ FT_Byte* p;
1678
+
1679
+
1680
+ /* By convention, GID 0 is always ".notdef" and is never */
1681
+ /* coded in the font. Hence, the number of codes found */
1682
+ /* in the table is `count+1'. */
1683
+ /* */
1684
+ encoding->count = count + 1;
1685
+
1686
+ if ( FT_FRAME_ENTER( count ) )
1687
+ goto Exit;
1688
+
1689
+ p = (FT_Byte*)stream->cursor;
1690
+
1691
+ for ( j = 1; j <= count; j++ )
1692
+ {
1693
+ glyph_code = *p++;
1694
+
1695
+ /* Make sure j is not too big. */
1696
+ if ( j < num_glyphs )
1697
+ {
1698
+ /* Assign code to GID mapping. */
1699
+ encoding->codes[glyph_code] = (FT_UShort)j;
1700
+
1701
+ /* Assign code to SID mapping. */
1702
+ encoding->sids[glyph_code] = charset->sids[j];
1703
+ }
1704
+ }
1705
+
1706
+ FT_FRAME_EXIT();
1707
+ }
1708
+ break;
1709
+
1710
+ case 1:
1711
+ {
1712
+ FT_UInt nleft;
1713
+ FT_UInt i = 1;
1714
+ FT_UInt k;
1715
+
1716
+
1717
+ encoding->count = 0;
1718
+
1719
+ /* Parse the Format1 ranges. */
1720
+ for ( j = 0; j < count; j++, i += nleft )
1721
+ {
1722
+ /* Read the first glyph code of the range. */
1723
+ if ( FT_READ_BYTE( glyph_code ) )
1724
+ goto Exit;
1725
+
1726
+ /* Read the number of codes in the range. */
1727
+ if ( FT_READ_BYTE( nleft ) )
1728
+ goto Exit;
1729
+
1730
+ /* Increment nleft, so we read `nleft + 1' codes/sids. */
1731
+ nleft++;
1732
+
1733
+ /* compute max number of character codes */
1734
+ if ( (FT_UInt)nleft > encoding->count )
1735
+ encoding->count = nleft;
1736
+
1737
+ /* Fill in the range of codes/sids. */
1738
+ for ( k = i; k < nleft + i; k++, glyph_code++ )
1739
+ {
1740
+ /* Make sure k is not too big. */
1741
+ if ( k < num_glyphs && glyph_code < 256 )
1742
+ {
1743
+ /* Assign code to GID mapping. */
1744
+ encoding->codes[glyph_code] = (FT_UShort)k;
1745
+
1746
+ /* Assign code to SID mapping. */
1747
+ encoding->sids[glyph_code] = charset->sids[k];
1748
+ }
1749
+ }
1750
+ }
1751
+
1752
+ /* simple check; one never knows what can be found in a font */
1753
+ if ( encoding->count > 256 )
1754
+ encoding->count = 256;
1755
+ }
1756
+ break;
1757
+
1758
+ default:
1759
+ FT_ERROR(( "cff_encoding_load: invalid table format\n" ));
1760
+ error = FT_THROW( Invalid_File_Format );
1761
+ goto Exit;
1762
+ }
1763
+
1764
+ /* Parse supplemental encodings, if any. */
1765
+ if ( encoding->format & 0x80 )
1766
+ {
1767
+ FT_UInt gindex;
1768
+
1769
+
1770
+ /* count supplements */
1771
+ if ( FT_READ_BYTE( count ) )
1772
+ goto Exit;
1773
+
1774
+ for ( j = 0; j < count; j++ )
1775
+ {
1776
+ /* Read supplemental glyph code. */
1777
+ if ( FT_READ_BYTE( glyph_code ) )
1778
+ goto Exit;
1779
+
1780
+ /* Read the SID associated with this glyph code. */
1781
+ if ( FT_READ_USHORT( glyph_sid ) )
1782
+ goto Exit;
1783
+
1784
+ /* Assign code to SID mapping. */
1785
+ encoding->sids[glyph_code] = glyph_sid;
1786
+
1787
+ /* First, look up GID which has been assigned to */
1788
+ /* SID glyph_sid. */
1789
+ for ( gindex = 0; gindex < num_glyphs; gindex++ )
1790
+ {
1791
+ if ( charset->sids[gindex] == glyph_sid )
1792
+ {
1793
+ encoding->codes[glyph_code] = (FT_UShort)gindex;
1794
+ break;
1795
+ }
1796
+ }
1797
+ }
1798
+ }
1799
+ }
1800
+ else
1801
+ {
1802
+ /* We take into account the fact a CFF font can use a predefined */
1803
+ /* encoding without containing all of the glyphs encoded by this */
1804
+ /* encoding (see the note at the end of section 12 in the CFF */
1805
+ /* specification). */
1806
+
1807
+ switch ( (FT_UInt)offset )
1808
+ {
1809
+ case 0:
1810
+ /* First, copy the code to SID mapping. */
1811
+ FT_ARRAY_COPY( encoding->sids, cff_standard_encoding, 256 );
1812
+ goto Populate;
1813
+
1814
+ case 1:
1815
+ /* First, copy the code to SID mapping. */
1816
+ FT_ARRAY_COPY( encoding->sids, cff_expert_encoding, 256 );
1817
+
1818
+ Populate:
1819
+ /* Construct code to GID mapping from code to SID mapping */
1820
+ /* and charset. */
1821
+
1822
+ encoding->offset = offset; /* used in cff_face_init */
1823
+ encoding->count = 0;
1824
+
1825
+ error = cff_charset_compute_cids( charset, num_glyphs,
1826
+ stream->memory );
1827
+ if ( error )
1828
+ goto Exit;
1829
+
1830
+ for ( j = 0; j < 256; j++ )
1831
+ {
1832
+ FT_UInt sid = encoding->sids[j];
1833
+ FT_UInt gid = 0;
1834
+
1835
+
1836
+ if ( sid )
1837
+ gid = cff_charset_cid_to_gindex( charset, sid );
1838
+
1839
+ if ( gid != 0 )
1840
+ {
1841
+ encoding->codes[j] = (FT_UShort)gid;
1842
+ encoding->count = j + 1;
1843
+ }
1844
+ else
1845
+ {
1846
+ encoding->codes[j] = 0;
1847
+ encoding->sids [j] = 0;
1848
+ }
1849
+ }
1850
+ break;
1851
+
1852
+ default:
1853
+ FT_ERROR(( "cff_encoding_load: invalid table format\n" ));
1854
+ error = FT_THROW( Invalid_File_Format );
1855
+ goto Exit;
1856
+ }
1857
+ }
1858
+
1859
+ Exit:
1860
+
1861
+ /* Clean up if there was an error. */
1862
+ return error;
1863
+ }
1864
+
1865
+
1866
+ /* Parse private dictionary; first call is always from `cff_face_init', */
1867
+ /* so NDV has not been set for CFF2 variation. */
1868
+ /* */
1869
+ /* `cff_slot_load' must call this function each time NDV changes. */
1870
+ FT_LOCAL_DEF( FT_Error )
1871
+ cff_load_private_dict( CFF_Font font,
1872
+ CFF_SubFont subfont,
1873
+ FT_UInt lenNDV,
1874
+ FT_Fixed* NDV )
1875
+ {
1876
+ FT_Error error = FT_Err_Ok;
1877
+ CFF_ParserRec parser;
1878
+ CFF_FontRecDict top = &subfont->font_dict;
1879
+ CFF_Private priv = &subfont->private_dict;
1880
+ FT_Stream stream = font->stream;
1881
+ FT_UInt stackSize;
1882
+
1883
+
1884
+ /* store handle needed to access memory, vstore for blend; */
1885
+ /* we need this for clean-up even if there is no private DICT */
1886
+ subfont->blend.font = font;
1887
+ subfont->blend.usedBV = FALSE; /* clear state */
1888
+
1889
+ if ( !top->private_offset || !top->private_size )
1890
+ goto Exit2; /* no private DICT, do nothing */
1891
+
1892
+ /* set defaults */
1893
+ FT_ZERO( priv );
1894
+
1895
+ priv->blue_shift = 7;
1896
+ priv->blue_fuzz = 1;
1897
+ priv->lenIV = -1;
1898
+ priv->expansion_factor = (FT_Fixed)( 0.06 * 0x10000L );
1899
+ priv->blue_scale = (FT_Fixed)( 0.039625 * 0x10000L * 1000 );
1900
+
1901
+ /* provide inputs for blend calculations */
1902
+ priv->subfont = subfont;
1903
+ subfont->lenNDV = lenNDV;
1904
+ subfont->NDV = NDV;
1905
+
1906
+ /* add 1 for the operator */
1907
+ stackSize = font->cff2 ? font->top_font.font_dict.maxstack + 1
1908
+ : CFF_MAX_STACK_DEPTH + 1;
1909
+
1910
+ if ( cff_parser_init( &parser,
1911
+ font->cff2 ? CFF2_CODE_PRIVATE : CFF_CODE_PRIVATE,
1912
+ priv,
1913
+ font->library,
1914
+ stackSize,
1915
+ top->num_designs,
1916
+ top->num_axes ) )
1917
+ goto Exit;
1918
+
1919
+ if ( FT_STREAM_SEEK( font->base_offset + top->private_offset ) ||
1920
+ FT_FRAME_ENTER( top->private_size ) )
1921
+ goto Exit;
1922
+
1923
+ FT_TRACE4(( " private dictionary:\n" ));
1924
+ error = cff_parser_run( &parser,
1925
+ (FT_Byte*)stream->cursor,
1926
+ (FT_Byte*)stream->limit );
1927
+ FT_FRAME_EXIT();
1928
+
1929
+ if ( error )
1930
+ goto Exit;
1931
+
1932
+ /* ensure that `num_blue_values' is even */
1933
+ priv->num_blue_values &= ~1;
1934
+
1935
+ /* sanitize `initialRandomSeed' to be a positive value, if necessary; */
1936
+ /* this is not mandated by the specification but by our implementation */
1937
+ if ( priv->initial_random_seed < 0 )
1938
+ priv->initial_random_seed = -priv->initial_random_seed;
1939
+ else if ( priv->initial_random_seed == 0 )
1940
+ priv->initial_random_seed = 987654321;
1941
+
1942
+ /* some sanitizing to avoid overflows later on; */
1943
+ /* the upper limits are ad-hoc values */
1944
+ if ( priv->blue_shift > 1000 || priv->blue_shift < 0 )
1945
+ {
1946
+ FT_TRACE2(( "cff_load_private_dict:"
1947
+ " setting unlikely BlueShift value %ld to default (7)\n",
1948
+ priv->blue_shift ));
1949
+ priv->blue_shift = 7;
1950
+ }
1951
+
1952
+ if ( priv->blue_fuzz > 1000 || priv->blue_fuzz < 0 )
1953
+ {
1954
+ FT_TRACE2(( "cff_load_private_dict:"
1955
+ " setting unlikely BlueFuzz value %ld to default (1)\n",
1956
+ priv->blue_fuzz ));
1957
+ priv->blue_fuzz = 1;
1958
+ }
1959
+
1960
+ Exit:
1961
+ /* clean up */
1962
+ cff_blend_clear( subfont ); /* clear blend stack */
1963
+ cff_parser_done( &parser ); /* free parser stack */
1964
+
1965
+ Exit2:
1966
+ /* no clean up (parser not initialized) */
1967
+ return error;
1968
+ }
1969
+
1970
+
1971
+ /* There are 3 ways to call this function, distinguished by code. */
1972
+ /* */
1973
+ /* . CFF_CODE_TOPDICT for either a CFF Top DICT or a CFF Font DICT */
1974
+ /* . CFF2_CODE_TOPDICT for CFF2 Top DICT */
1975
+ /* . CFF2_CODE_FONTDICT for CFF2 Font DICT */
1976
+
1977
+ static FT_Error
1978
+ cff_subfont_load( CFF_SubFont subfont,
1979
+ CFF_Index idx,
1980
+ FT_UInt font_index,
1981
+ FT_Stream stream,
1982
+ FT_ULong base_offset,
1983
+ FT_UInt code,
1984
+ CFF_Font font,
1985
+ CFF_Face face )
1986
+ {
1987
+ FT_Error error;
1988
+ CFF_ParserRec parser;
1989
+ FT_Byte* dict = NULL;
1990
+ FT_ULong dict_len;
1991
+ CFF_FontRecDict top = &subfont->font_dict;
1992
+ CFF_Private priv = &subfont->private_dict;
1993
+
1994
+ PSAux_Service psaux = (PSAux_Service)face->psaux;
1995
+
1996
+ FT_Bool cff2 = FT_BOOL( code == CFF2_CODE_TOPDICT ||
1997
+ code == CFF2_CODE_FONTDICT );
1998
+ FT_UInt stackSize = cff2 ? CFF2_DEFAULT_STACK
1999
+ : CFF_MAX_STACK_DEPTH;
2000
+
2001
+
2002
+ /* Note: We use default stack size for CFF2 Font DICT because */
2003
+ /* Top and Font DICTs are not allowed to have blend operators. */
2004
+ error = cff_parser_init( &parser,
2005
+ code,
2006
+ top,
2007
+ font->library,
2008
+ stackSize,
2009
+ 0,
2010
+ 0 );
2011
+ if ( error )
2012
+ goto Exit;
2013
+
2014
+ /* set defaults */
2015
+ FT_ZERO( top );
2016
+
2017
+ top->underline_position = -( 100L << 16 );
2018
+ top->underline_thickness = 50L << 16;
2019
+ top->charstring_type = 2;
2020
+ top->font_matrix.xx = 0x10000L;
2021
+ top->font_matrix.yy = 0x10000L;
2022
+ top->cid_count = 8720;
2023
+
2024
+ /* we use the implementation specific SID value 0xFFFF to indicate */
2025
+ /* missing entries */
2026
+ top->version = 0xFFFFU;
2027
+ top->notice = 0xFFFFU;
2028
+ top->copyright = 0xFFFFU;
2029
+ top->full_name = 0xFFFFU;
2030
+ top->family_name = 0xFFFFU;
2031
+ top->weight = 0xFFFFU;
2032
+ top->embedded_postscript = 0xFFFFU;
2033
+
2034
+ top->cid_registry = 0xFFFFU;
2035
+ top->cid_ordering = 0xFFFFU;
2036
+ top->cid_font_name = 0xFFFFU;
2037
+
2038
+ /* set default stack size */
2039
+ top->maxstack = cff2 ? CFF2_DEFAULT_STACK : 48;
2040
+
2041
+ if ( idx->count ) /* count is nonzero for a real index */
2042
+ error = cff_index_access_element( idx, font_index, &dict, &dict_len );
2043
+ else
2044
+ {
2045
+ /* CFF2 has a fake top dict index; */
2046
+ /* simulate `cff_index_access_element' */
2047
+
2048
+ /* Note: macros implicitly use `stream' and set `error' */
2049
+ if ( FT_STREAM_SEEK( idx->data_offset ) ||
2050
+ FT_FRAME_EXTRACT( idx->data_size, dict ) )
2051
+ goto Exit;
2052
+
2053
+ dict_len = idx->data_size;
2054
+ }
2055
+
2056
+ if ( !error )
2057
+ {
2058
+ FT_TRACE4(( " top dictionary:\n" ));
2059
+ error = cff_parser_run( &parser, dict, FT_OFFSET( dict, dict_len ) );
2060
+ }
2061
+
2062
+ /* clean up regardless of error */
2063
+ if ( idx->count )
2064
+ cff_index_forget_element( idx, &dict );
2065
+ else
2066
+ FT_FRAME_RELEASE( dict );
2067
+
2068
+ if ( error )
2069
+ goto Exit;
2070
+
2071
+ /* if it is a CID font, we stop there */
2072
+ if ( top->cid_registry != 0xFFFFU )
2073
+ goto Exit;
2074
+
2075
+ /* Parse the private dictionary, if any. */
2076
+ /* */
2077
+ /* CFF2 does not have a private dictionary in the Top DICT */
2078
+ /* but may have one in a Font DICT. We need to parse */
2079
+ /* the latter here in order to load any local subrs. */
2080
+ error = cff_load_private_dict( font, subfont, 0, 0 );
2081
+ if ( error )
2082
+ goto Exit;
2083
+
2084
+ if ( !cff2 )
2085
+ {
2086
+ /*
2087
+ * Initialize the random number generator.
2088
+ *
2089
+ * - If we have a face-specific seed, use it.
2090
+ * If non-zero, update it to a positive value.
2091
+ *
2092
+ * - Otherwise, use the seed from the CFF driver.
2093
+ * If non-zero, update it to a positive value.
2094
+ *
2095
+ * - If the random value is zero, use the seed given by the subfont's
2096
+ * `initialRandomSeed' value.
2097
+ *
2098
+ */
2099
+ if ( face->root.internal->random_seed == -1 )
2100
+ {
2101
+ PS_Driver driver = (PS_Driver)FT_FACE_DRIVER( face );
2102
+
2103
+
2104
+ subfont->random = (FT_UInt32)driver->random_seed;
2105
+ if ( driver->random_seed )
2106
+ {
2107
+ do
2108
+ {
2109
+ driver->random_seed =
2110
+ (FT_Int32)psaux->cff_random( (FT_UInt32)driver->random_seed );
2111
+
2112
+ } while ( driver->random_seed < 0 );
2113
+ }
2114
+ }
2115
+ else
2116
+ {
2117
+ subfont->random = (FT_UInt32)face->root.internal->random_seed;
2118
+ if ( face->root.internal->random_seed )
2119
+ {
2120
+ do
2121
+ {
2122
+ face->root.internal->random_seed =
2123
+ (FT_Int32)psaux->cff_random(
2124
+ (FT_UInt32)face->root.internal->random_seed );
2125
+
2126
+ } while ( face->root.internal->random_seed < 0 );
2127
+ }
2128
+ }
2129
+
2130
+ if ( !subfont->random )
2131
+ subfont->random = (FT_UInt32)priv->initial_random_seed;
2132
+ }
2133
+
2134
+ /* read the local subrs, if any */
2135
+ if ( priv->local_subrs_offset )
2136
+ {
2137
+ if ( FT_STREAM_SEEK( base_offset + top->private_offset +
2138
+ priv->local_subrs_offset ) )
2139
+ goto Exit;
2140
+
2141
+ error = cff_index_init( &subfont->local_subrs_index, stream, 1, cff2 );
2142
+ if ( error )
2143
+ goto Exit;
2144
+
2145
+ error = cff_index_get_pointers( &subfont->local_subrs_index,
2146
+ &subfont->local_subrs, NULL, NULL );
2147
+ if ( error )
2148
+ goto Exit;
2149
+ }
2150
+
2151
+ Exit:
2152
+ cff_parser_done( &parser ); /* free parser stack */
2153
+
2154
+ return error;
2155
+ }
2156
+
2157
+
2158
+ static void
2159
+ cff_subfont_done( FT_Memory memory,
2160
+ CFF_SubFont subfont )
2161
+ {
2162
+ if ( subfont )
2163
+ {
2164
+ cff_index_done( &subfont->local_subrs_index );
2165
+ FT_FREE( subfont->local_subrs );
2166
+
2167
+ FT_FREE( subfont->blend.lastNDV );
2168
+ FT_FREE( subfont->blend.BV );
2169
+ FT_FREE( subfont->blend_stack );
2170
+ }
2171
+ }
2172
+
2173
+
2174
+ FT_LOCAL_DEF( FT_Error )
2175
+ cff_font_load( FT_Library library,
2176
+ FT_Stream stream,
2177
+ FT_Int face_index,
2178
+ CFF_Font font,
2179
+ CFF_Face face,
2180
+ FT_Bool pure_cff,
2181
+ FT_Bool cff2 )
2182
+ {
2183
+ static const FT_Frame_Field cff_header_fields[] =
2184
+ {
2185
+ #undef FT_STRUCTURE
2186
+ #define FT_STRUCTURE CFF_FontRec
2187
+
2188
+ FT_FRAME_START( 3 ),
2189
+ FT_FRAME_BYTE( version_major ),
2190
+ FT_FRAME_BYTE( version_minor ),
2191
+ FT_FRAME_BYTE( header_size ),
2192
+ FT_FRAME_END
2193
+ };
2194
+
2195
+ FT_Error error;
2196
+ FT_Memory memory = stream->memory;
2197
+ FT_ULong base_offset;
2198
+ CFF_FontRecDict dict;
2199
+ CFF_IndexRec string_index;
2200
+ FT_UInt subfont_index;
2201
+
2202
+
2203
+ FT_ZERO( font );
2204
+ FT_ZERO( &string_index );
2205
+
2206
+ dict = &font->top_font.font_dict;
2207
+ base_offset = FT_STREAM_POS();
2208
+
2209
+ font->library = library;
2210
+ font->stream = stream;
2211
+ font->memory = memory;
2212
+ font->cff2 = cff2;
2213
+ font->base_offset = base_offset;
2214
+
2215
+ /* read CFF font header */
2216
+ if ( FT_STREAM_READ_FIELDS( cff_header_fields, font ) )
2217
+ goto Exit;
2218
+
2219
+ if ( cff2 )
2220
+ {
2221
+ if ( font->version_major != 2 ||
2222
+ font->header_size < 5 )
2223
+ {
2224
+ FT_TRACE2(( " not a CFF2 font header\n" ));
2225
+ error = FT_THROW( Unknown_File_Format );
2226
+ goto Exit;
2227
+ }
2228
+
2229
+ if ( FT_READ_USHORT( font->top_dict_length ) )
2230
+ goto Exit;
2231
+ }
2232
+ else
2233
+ {
2234
+ FT_Byte absolute_offset;
2235
+
2236
+
2237
+ if ( FT_READ_BYTE( absolute_offset ) )
2238
+ goto Exit;
2239
+
2240
+ if ( font->version_major != 1 ||
2241
+ font->header_size < 4 ||
2242
+ absolute_offset > 4 )
2243
+ {
2244
+ FT_TRACE2(( " not a CFF font header\n" ));
2245
+ error = FT_THROW( Unknown_File_Format );
2246
+ goto Exit;
2247
+ }
2248
+ }
2249
+
2250
+ /* skip the rest of the header */
2251
+ if ( FT_STREAM_SEEK( base_offset + font->header_size ) )
2252
+ {
2253
+ /* For pure CFFs we have read only four bytes so far. Contrary to */
2254
+ /* other formats like SFNT those bytes doesn't define a signature; */
2255
+ /* it is thus possible that the font isn't a CFF at all. */
2256
+ if ( pure_cff )
2257
+ {
2258
+ FT_TRACE2(( " not a CFF file\n" ));
2259
+ error = FT_THROW( Unknown_File_Format );
2260
+ }
2261
+ goto Exit;
2262
+ }
2263
+
2264
+ if ( cff2 )
2265
+ {
2266
+ /* For CFF2, the top dict data immediately follow the header */
2267
+ /* and the length is stored in the header `offSize' field; */
2268
+ /* there is no index for it. */
2269
+ /* */
2270
+ /* Use the `font_dict_index' to save the current position */
2271
+ /* and length of data, but leave count at zero as an indicator. */
2272
+ FT_ZERO( &font->font_dict_index );
2273
+
2274
+ font->font_dict_index.data_offset = FT_STREAM_POS();
2275
+ font->font_dict_index.data_size = font->top_dict_length;
2276
+
2277
+ /* skip the top dict data for now, we will parse it later */
2278
+ if ( FT_STREAM_SKIP( font->top_dict_length ) )
2279
+ goto Exit;
2280
+
2281
+ /* next, read the global subrs index */
2282
+ if ( FT_SET_ERROR( cff_index_init( &font->global_subrs_index,
2283
+ stream, 1, cff2 ) ) )
2284
+ goto Exit;
2285
+ }
2286
+ else
2287
+ {
2288
+ /* for CFF, read the name, top dict, string and global subrs index */
2289
+ if ( FT_SET_ERROR( cff_index_init( &font->name_index,
2290
+ stream, 0, cff2 ) ) )
2291
+ {
2292
+ if ( pure_cff )
2293
+ {
2294
+ FT_TRACE2(( " not a CFF file\n" ));
2295
+ error = FT_THROW( Unknown_File_Format );
2296
+ }
2297
+ goto Exit;
2298
+ }
2299
+
2300
+ /* if we have an empty font name, */
2301
+ /* it must be the only font in the CFF */
2302
+ if ( font->name_index.count > 1 &&
2303
+ font->name_index.data_size < font->name_index.count )
2304
+ {
2305
+ /* for pure CFFs, we still haven't checked enough bytes */
2306
+ /* to be sure that it is a CFF at all */
2307
+ error = pure_cff ? FT_THROW( Unknown_File_Format )
2308
+ : FT_THROW( Invalid_File_Format );
2309
+ goto Exit;
2310
+ }
2311
+
2312
+ if ( FT_SET_ERROR( cff_index_init( &font->font_dict_index,
2313
+ stream, 0, cff2 ) ) ||
2314
+ FT_SET_ERROR( cff_index_init( &string_index,
2315
+ stream, 1, cff2 ) ) ||
2316
+ FT_SET_ERROR( cff_index_init( &font->global_subrs_index,
2317
+ stream, 1, cff2 ) ) ||
2318
+ FT_SET_ERROR( cff_index_get_pointers( &string_index,
2319
+ &font->strings,
2320
+ &font->string_pool,
2321
+ &font->string_pool_size ) ) )
2322
+ goto Exit;
2323
+
2324
+ /* there must be a Top DICT index entry for each name index entry */
2325
+ if ( font->name_index.count > font->font_dict_index.count )
2326
+ {
2327
+ FT_ERROR(( "cff_font_load:"
2328
+ " not enough entries in Top DICT index\n" ));
2329
+ error = FT_THROW( Invalid_File_Format );
2330
+ goto Exit;
2331
+ }
2332
+ }
2333
+
2334
+ font->num_strings = string_index.count;
2335
+
2336
+ if ( pure_cff )
2337
+ {
2338
+ /* well, we don't really forget the `disabled' fonts... */
2339
+ subfont_index = (FT_UInt)( face_index & 0xFFFF );
2340
+
2341
+ if ( face_index > 0 && subfont_index >= font->name_index.count )
2342
+ {
2343
+ FT_ERROR(( "cff_font_load:"
2344
+ " invalid subfont index for pure CFF font (%d)\n",
2345
+ subfont_index ));
2346
+ error = FT_THROW( Invalid_Argument );
2347
+ goto Exit;
2348
+ }
2349
+
2350
+ font->num_faces = font->name_index.count;
2351
+ }
2352
+ else
2353
+ {
2354
+ subfont_index = 0;
2355
+
2356
+ if ( font->name_index.count > 1 )
2357
+ {
2358
+ FT_ERROR(( "cff_font_load:"
2359
+ " invalid CFF font with multiple subfonts\n" ));
2360
+ FT_ERROR(( " "
2361
+ " in SFNT wrapper\n" ));
2362
+ error = FT_THROW( Invalid_File_Format );
2363
+ goto Exit;
2364
+ }
2365
+ }
2366
+
2367
+ /* in case of a font format check, simply exit now */
2368
+ if ( face_index < 0 )
2369
+ goto Exit;
2370
+
2371
+ /* now, parse the top-level font dictionary */
2372
+ FT_TRACE4(( "parsing top-level\n" ));
2373
+ error = cff_subfont_load( &font->top_font,
2374
+ &font->font_dict_index,
2375
+ subfont_index,
2376
+ stream,
2377
+ base_offset,
2378
+ cff2 ? CFF2_CODE_TOPDICT : CFF_CODE_TOPDICT,
2379
+ font,
2380
+ face );
2381
+ if ( error )
2382
+ goto Exit;
2383
+
2384
+ if ( FT_STREAM_SEEK( base_offset + dict->charstrings_offset ) )
2385
+ goto Exit;
2386
+
2387
+ error = cff_index_init( &font->charstrings_index, stream, 0, cff2 );
2388
+ if ( error )
2389
+ goto Exit;
2390
+
2391
+ /* now, check for a CID or CFF2 font */
2392
+ if ( dict->cid_registry != 0xFFFFU ||
2393
+ cff2 )
2394
+ {
2395
+ CFF_IndexRec fd_index;
2396
+ CFF_SubFont sub = NULL;
2397
+ FT_UInt idx;
2398
+
2399
+
2400
+ /* for CFF2, read the Variation Store if available; */
2401
+ /* this must follow the Top DICT parse and precede any Private DICT */
2402
+ error = cff_vstore_load( &font->vstore,
2403
+ stream,
2404
+ base_offset,
2405
+ dict->vstore_offset );
2406
+ if ( error )
2407
+ goto Exit;
2408
+
2409
+ /* this is a CID-keyed font, we must now allocate a table of */
2410
+ /* sub-fonts, then load each of them separately */
2411
+ if ( FT_STREAM_SEEK( base_offset + dict->cid_fd_array_offset ) )
2412
+ goto Exit;
2413
+
2414
+ error = cff_index_init( &fd_index, stream, 0, cff2 );
2415
+ if ( error )
2416
+ goto Exit;
2417
+
2418
+ /* Font Dicts are not limited to 256 for CFF2. */
2419
+ /* TODO: support this for CFF2 */
2420
+ if ( fd_index.count > CFF_MAX_CID_FONTS )
2421
+ {
2422
+ FT_TRACE0(( "cff_font_load: FD array too large in CID font\n" ));
2423
+ goto Fail_CID;
2424
+ }
2425
+
2426
+ /* allocate & read each font dict independently */
2427
+ font->num_subfonts = fd_index.count;
2428
+ if ( FT_NEW_ARRAY( sub, fd_index.count ) )
2429
+ goto Fail_CID;
2430
+
2431
+ /* set up pointer table */
2432
+ for ( idx = 0; idx < fd_index.count; idx++ )
2433
+ font->subfonts[idx] = sub + idx;
2434
+
2435
+ /* now load each subfont independently */
2436
+ for ( idx = 0; idx < fd_index.count; idx++ )
2437
+ {
2438
+ sub = font->subfonts[idx];
2439
+ FT_TRACE4(( "parsing subfont %u\n", idx ));
2440
+ error = cff_subfont_load( sub,
2441
+ &fd_index,
2442
+ idx,
2443
+ stream,
2444
+ base_offset,
2445
+ cff2 ? CFF2_CODE_FONTDICT
2446
+ : CFF_CODE_TOPDICT,
2447
+ font,
2448
+ face );
2449
+ if ( error )
2450
+ goto Fail_CID;
2451
+ }
2452
+
2453
+ /* now load the FD Select array; */
2454
+ /* CFF2 omits FDSelect if there is only one FD */
2455
+ if ( !cff2 || fd_index.count > 1 )
2456
+ error = CFF_Load_FD_Select( &font->fd_select,
2457
+ font->charstrings_index.count,
2458
+ stream,
2459
+ base_offset + dict->cid_fd_select_offset );
2460
+
2461
+ Fail_CID:
2462
+ cff_index_done( &fd_index );
2463
+
2464
+ if ( error )
2465
+ goto Exit;
2466
+ }
2467
+ else
2468
+ font->num_subfonts = 0;
2469
+
2470
+ /* read the charstrings index now */
2471
+ if ( dict->charstrings_offset == 0 )
2472
+ {
2473
+ FT_ERROR(( "cff_font_load: no charstrings offset\n" ));
2474
+ error = FT_THROW( Invalid_File_Format );
2475
+ goto Exit;
2476
+ }
2477
+
2478
+ font->num_glyphs = font->charstrings_index.count;
2479
+
2480
+ error = cff_index_get_pointers( &font->global_subrs_index,
2481
+ &font->global_subrs, NULL, NULL );
2482
+
2483
+ if ( error )
2484
+ goto Exit;
2485
+
2486
+ /* read the Charset and Encoding tables if available */
2487
+ if ( !cff2 && font->num_glyphs > 0 )
2488
+ {
2489
+ FT_Bool invert = FT_BOOL( dict->cid_registry != 0xFFFFU && pure_cff );
2490
+
2491
+
2492
+ error = cff_charset_load( &font->charset, font->num_glyphs, stream,
2493
+ base_offset, dict->charset_offset, invert );
2494
+ if ( error )
2495
+ goto Exit;
2496
+
2497
+ /* CID-keyed CFFs don't have an encoding */
2498
+ if ( dict->cid_registry == 0xFFFFU )
2499
+ {
2500
+ error = cff_encoding_load( &font->encoding,
2501
+ &font->charset,
2502
+ font->num_glyphs,
2503
+ stream,
2504
+ base_offset,
2505
+ dict->encoding_offset );
2506
+ if ( error )
2507
+ goto Exit;
2508
+ }
2509
+ }
2510
+
2511
+ /* get the font name (/CIDFontName for CID-keyed fonts, */
2512
+ /* /FontName otherwise) */
2513
+ font->font_name = cff_index_get_name( font, subfont_index );
2514
+
2515
+ Exit:
2516
+ cff_index_done( &string_index );
2517
+
2518
+ return error;
2519
+ }
2520
+
2521
+
2522
+ FT_LOCAL_DEF( void )
2523
+ cff_font_done( CFF_Font font )
2524
+ {
2525
+ FT_Memory memory = font->memory;
2526
+ FT_UInt idx;
2527
+
2528
+
2529
+ cff_index_done( &font->global_subrs_index );
2530
+ cff_index_done( &font->font_dict_index );
2531
+ cff_index_done( &font->name_index );
2532
+ cff_index_done( &font->charstrings_index );
2533
+
2534
+ /* release font dictionaries, but only if working with */
2535
+ /* a CID keyed CFF font or a CFF2 font */
2536
+ if ( font->num_subfonts > 0 )
2537
+ {
2538
+ for ( idx = 0; idx < font->num_subfonts; idx++ )
2539
+ cff_subfont_done( memory, font->subfonts[idx] );
2540
+
2541
+ /* the subfonts array has been allocated as a single block */
2542
+ FT_FREE( font->subfonts[0] );
2543
+ }
2544
+
2545
+ cff_encoding_done( &font->encoding );
2546
+ cff_charset_done( &font->charset, font->stream );
2547
+ cff_vstore_done( &font->vstore, memory );
2548
+
2549
+ cff_subfont_done( memory, &font->top_font );
2550
+
2551
+ CFF_Done_FD_Select( &font->fd_select, font->stream );
2552
+
2553
+ FT_FREE( font->font_info );
2554
+
2555
+ FT_FREE( font->font_name );
2556
+ FT_FREE( font->global_subrs );
2557
+ FT_FREE( font->strings );
2558
+ FT_FREE( font->string_pool );
2559
+
2560
+ if ( font->cf2_instance.finalizer )
2561
+ {
2562
+ font->cf2_instance.finalizer( font->cf2_instance.data );
2563
+ FT_FREE( font->cf2_instance.data );
2564
+ }
2565
+
2566
+ FT_FREE( font->font_extra );
2567
+ }
2568
+
2569
+
2570
+ /* END */