laag-freetype2 2.9.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (737) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +169 -0
  4. data/README.org +34 -0
  5. data/ext/laag/freetype2/extconf.rb +16 -0
  6. data/laag-freetype2.gemspec +20 -0
  7. data/lib/laag/freetype2.rb +29 -0
  8. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/.gitignore +3 -0
  9. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/.mailmap +9 -0
  10. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/CMakeLists.txt +497 -0
  11. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog +2352 -0
  12. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.20 +2613 -0
  13. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.21 +9438 -0
  14. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.22 +2837 -0
  15. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.23 +7948 -0
  16. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.24 +6360 -0
  17. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.25 +5161 -0
  18. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.26 +5711 -0
  19. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.27 +2106 -0
  20. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/ChangeLog.28 +3136 -0
  21. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/Jamfile +222 -0
  22. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/Jamrules +71 -0
  23. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/Makefile +34 -0
  24. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/README +84 -0
  25. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/README.git +50 -0
  26. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/autogen.sh +165 -0
  27. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/README +110 -0
  28. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/include/config/ftconfig.h +55 -0
  29. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/include/config/ftmodule.h +160 -0
  30. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/makefile +293 -0
  31. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/makefile.os4 +297 -0
  32. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/smakefile +299 -0
  33. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/src/base/ftdebug.c +297 -0
  34. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/amiga/src/base/ftsystem.c +530 -0
  35. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/ansi/ansi-def.mk +74 -0
  36. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/ansi/ansi.mk +21 -0
  37. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/atari/ATARI.H +20 -0
  38. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/atari/FNames.SIC +37 -0
  39. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/atari/FREETYPE.PRJ +32 -0
  40. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/atari/README.TXT +51 -0
  41. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/atari/deflinejoiner.awk +181 -0
  42. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/atari/gen-purec-patch.sh +40 -0
  43. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/beos/beos-def.mk +76 -0
  44. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/beos/beos.mk +19 -0
  45. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/beos/detect.mk +41 -0
  46. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/cmake/FindHarfBuzz.cmake +81 -0
  47. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/cmake/iOS.cmake +270 -0
  48. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/cmake/testbuild.sh +157 -0
  49. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/ansi-cc.mk +80 -0
  50. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/bcc-dev.mk +86 -0
  51. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/bcc.mk +86 -0
  52. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/emx.mk +77 -0
  53. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/gcc-dev.mk +95 -0
  54. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/gcc.mk +77 -0
  55. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/intelc.mk +85 -0
  56. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/unix-lcc.mk +83 -0
  57. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/visualage.mk +76 -0
  58. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/visualc.mk +82 -0
  59. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/watcom.mk +81 -0
  60. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/compiler/win-lcc.mk +81 -0
  61. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/detect.mk +128 -0
  62. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/dos/detect.mk +142 -0
  63. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/dos/dos-def.mk +45 -0
  64. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/dos/dos-emx.mk +21 -0
  65. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/dos/dos-gcc.mk +21 -0
  66. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/dos/dos-wat.mk +20 -0
  67. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/exports.mk +80 -0
  68. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/freetype.mk +357 -0
  69. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/link_dos.mk +42 -0
  70. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/link_std.mk +42 -0
  71. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/FreeType.m68k_cfm.make.txt +209 -0
  72. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/FreeType.m68k_far.make.txt +208 -0
  73. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/FreeType.ppc_carbon.make.txt +212 -0
  74. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/FreeType.ppc_classic.make.txt +213 -0
  75. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/README +401 -0
  76. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/ascii2mpw.py +24 -0
  77. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/freetype-Info.plist +36 -0
  78. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/ftlib.prj.xml +1194 -0
  79. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/mac/ftmac.c +1542 -0
  80. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/modules.mk +79 -0
  81. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/os2/detect.mk +73 -0
  82. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/os2/os2-def.mk +44 -0
  83. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/os2/os2-dev.mk +30 -0
  84. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/os2/os2-gcc.mk +26 -0
  85. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/symbian/bld.inf +72 -0
  86. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/symbian/freetype.mmp +146 -0
  87. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/toplevel.mk +277 -0
  88. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/.gitignore +18 -0
  89. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/configure.raw +1103 -0
  90. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/detect.mk +93 -0
  91. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/freetype-config.in +211 -0
  92. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/freetype2.in +14 -0
  93. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/freetype2.m4 +194 -0
  94. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/ft-munmap.m4 +32 -0
  95. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/ftconfig.in +602 -0
  96. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/ftsystem.c +420 -0
  97. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/install.mk +102 -0
  98. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/pkg.m4 +199 -0
  99. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/unix-cc.in +121 -0
  100. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/unix-def.in +154 -0
  101. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/unix-dev.mk +26 -0
  102. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/unix-lcc.mk +24 -0
  103. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/unix.mk +62 -0
  104. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/unix/unixddef.mk +45 -0
  105. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/vms/ftconfig.h +554 -0
  106. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/vms/ftsystem.c +328 -0
  107. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/ftdebug.c +255 -0
  108. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/vc2005-ce/freetype.sln +157 -0
  109. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/vc2005-ce/freetype.vcproj +874 -0
  110. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/vc2005-ce/index.html +47 -0
  111. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/vc2008-ce/freetype.sln +157 -0
  112. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/vc2008-ce/freetype.vcproj +3508 -0
  113. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/wince/vc2008-ce/index.html +47 -0
  114. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/.gitignore +5 -0
  115. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/detect.mk +184 -0
  116. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/ftdebug.c +237 -0
  117. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2005/freetype.sln +31 -0
  118. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2005/freetype.vcproj +217 -0
  119. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2005/index.html +37 -0
  120. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2008/freetype.sln +31 -0
  121. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2008/freetype.vcproj +668 -0
  122. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2008/index.html +37 -0
  123. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2010/freetype.sln +37 -0
  124. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2010/freetype.user.props +68 -0
  125. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2010/freetype.vcxproj +444 -0
  126. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2010/freetype.vcxproj.filters +155 -0
  127. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/vc2010/index.html +40 -0
  128. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualc/freetype.dsp +383 -0
  129. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualc/freetype.dsw +29 -0
  130. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualc/freetype.sln +31 -0
  131. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualc/freetype.vcproj +667 -0
  132. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualc/index.html +37 -0
  133. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualce/freetype.dsp +383 -0
  134. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualce/freetype.dsw +29 -0
  135. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualce/freetype.vcproj +3697 -0
  136. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/visualce/index.html +47 -0
  137. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-bcc.mk +28 -0
  138. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-bccd.mk +26 -0
  139. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-dev.mk +32 -0
  140. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-gcc.mk +31 -0
  141. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-icc.mk +28 -0
  142. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-intl.mk +28 -0
  143. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-lcc.mk +24 -0
  144. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-mingw32.mk +33 -0
  145. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-vcc.mk +28 -0
  146. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/w32-wat.mk +28 -0
  147. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/builds/windows/win32-def.mk +47 -0
  148. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/configure +135 -0
  149. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/devel/ft2build.h +40 -0
  150. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/devel/ftoption.h +927 -0
  151. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/CHANGES +5035 -0
  152. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/CMAKE +2 -0
  153. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/CUSTOMIZE +152 -0
  154. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/DEBUG +204 -0
  155. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/FTL.TXT +169 -0
  156. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/GPLv2.TXT +340 -0
  157. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL +90 -0
  158. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL.ANY +154 -0
  159. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL.CROSS +177 -0
  160. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL.GNU +161 -0
  161. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL.MAC +32 -0
  162. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL.UNIX +118 -0
  163. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/INSTALL.VMS +62 -0
  164. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/LICENSE.TXT +39 -0
  165. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/MAKEPP +5 -0
  166. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/PROBLEMS +90 -0
  167. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/TODO +40 -0
  168. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/VERSIONS.TXT +127 -0
  169. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/formats.txt +208 -0
  170. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/freetype-config.1 +146 -0
  171. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/raster.txt +635 -0
  172. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/reference/.gitignore +1 -0
  173. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/reference/README +5 -0
  174. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/docs/release +202 -0
  175. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/config/ftconfig.h +571 -0
  176. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/config/ftheader.h +804 -0
  177. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/config/ftmodule.h +32 -0
  178. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/config/ftoption.h +977 -0
  179. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/config/ftstdlib.h +175 -0
  180. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/freetype.h +4657 -0
  181. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftadvanc.h +187 -0
  182. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftbbox.h +101 -0
  183. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftbdf.h +210 -0
  184. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftbitmap.h +240 -0
  185. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftbzip2.h +102 -0
  186. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftcache.h +1042 -0
  187. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftchapters.h +139 -0
  188. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftcid.h +168 -0
  189. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftdriver.h +1225 -0
  190. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/fterrdef.h +280 -0
  191. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/fterrors.h +226 -0
  192. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftfntfmt.h +95 -0
  193. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftgasp.h +142 -0
  194. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftglyph.h +614 -0
  195. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftgxval.h +357 -0
  196. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftgzip.h +151 -0
  197. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftimage.h +1205 -0
  198. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftincrem.h +343 -0
  199. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftlcdfil.h +309 -0
  200. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftlist.h +276 -0
  201. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftlzw.h +99 -0
  202. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftmac.h +275 -0
  203. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftmm.h +638 -0
  204. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftmodapi.h +711 -0
  205. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftmoderr.h +194 -0
  206. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftotval.h +204 -0
  207. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftoutln.h +582 -0
  208. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftparams.h +205 -0
  209. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftpfr.h +172 -0
  210. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftrender.h +233 -0
  211. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftsizes.h +159 -0
  212. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftsnames.h +253 -0
  213. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftstroke.h +785 -0
  214. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftsynth.h +84 -0
  215. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftsystem.h +355 -0
  216. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/fttrigon.h +350 -0
  217. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/fttypes.h +602 -0
  218. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ftwinfnt.h +275 -0
  219. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/autohint.h +244 -0
  220. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/cffotypes.h +108 -0
  221. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/cfftypes.h +412 -0
  222. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftcalc.h +444 -0
  223. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftdebug.h +255 -0
  224. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftdrv.h +400 -0
  225. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftgloadr.h +154 -0
  226. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/fthash.h +136 -0
  227. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftmemory.h +393 -0
  228. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftobjs.h +1625 -0
  229. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftpic.h +71 -0
  230. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftpsprop.h +48 -0
  231. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftrfork.h +267 -0
  232. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftserv.h +1016 -0
  233. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftstream.h +536 -0
  234. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/fttrace.h +153 -0
  235. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/ftvalid.h +159 -0
  236. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/internal.h +67 -0
  237. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/psaux.h +1372 -0
  238. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/pshints.h +722 -0
  239. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svbdf.h +82 -0
  240. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svcfftl.h +112 -0
  241. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svcid.h +90 -0
  242. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svfntfmt.h +55 -0
  243. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svgldict.h +91 -0
  244. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svgxval.h +72 -0
  245. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svkern.h +51 -0
  246. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svmetric.h +153 -0
  247. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svmm.h +172 -0
  248. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svotval.h +55 -0
  249. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svpfr.h +66 -0
  250. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svpostnm.h +81 -0
  251. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svprop.h +82 -0
  252. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svpscmap.h +177 -0
  253. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svpsinfo.h +111 -0
  254. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svsfnt.h +103 -0
  255. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svttcmap.h +106 -0
  256. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svtteng.h +53 -0
  257. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svttglyf.h +69 -0
  258. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/services/svwinfnt.h +50 -0
  259. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/sfnt.h +784 -0
  260. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/t1types.h +257 -0
  261. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/internal/tttypes.h +1689 -0
  262. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/t1tables.h +770 -0
  263. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/ttnameid.h +1236 -0
  264. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/tttables.h +846 -0
  265. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/freetype/tttags.h +121 -0
  266. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/include/ft2build.h +42 -0
  267. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/modules.cfg +261 -0
  268. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/objs/.gitignore +3 -0
  269. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/objs/README +2 -0
  270. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/Jamfile +19 -0
  271. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/Jamfile +53 -0
  272. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afangles.c +285 -0
  273. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afangles.h +7 -0
  274. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afblue.c +739 -0
  275. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afblue.cin +39 -0
  276. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afblue.dat +1072 -0
  277. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afblue.h +414 -0
  278. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afblue.hin +146 -0
  279. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afcjk.c +2381 -0
  280. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afcjk.h +141 -0
  281. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afcover.h +105 -0
  282. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afdummy.c +75 -0
  283. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afdummy.h +40 -0
  284. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/aferrors.h +42 -0
  285. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afglobal.c +503 -0
  286. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afglobal.h +173 -0
  287. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afhints.c +1659 -0
  288. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afhints.h +481 -0
  289. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afindic.c +157 -0
  290. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afindic.h +41 -0
  291. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/aflatin.c +3590 -0
  292. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/aflatin.h +194 -0
  293. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/aflatin2.c +2427 -0
  294. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/aflatin2.h +46 -0
  295. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afloader.c +721 -0
  296. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afloader.h +91 -0
  297. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afmodule.c +600 -0
  298. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afmodule.h +58 -0
  299. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afpic.c +152 -0
  300. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afpic.h +105 -0
  301. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afranges.c +1033 -0
  302. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afranges.h +47 -0
  303. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afscript.h +390 -0
  304. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afshaper.c +683 -0
  305. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afshaper.h +72 -0
  306. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afstyles.h +475 -0
  307. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/aftypes.h +651 -0
  308. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afwarp.c +373 -0
  309. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afwarp.h +64 -0
  310. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/afwrtsys.h +52 -0
  311. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/autofit.c +39 -0
  312. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/module.mk +23 -0
  313. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/autofit/rules.mk +89 -0
  314. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/Jamfile +89 -0
  315. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/basepic.c +108 -0
  316. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/basepic.h +91 -0
  317. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftadvanc.c +175 -0
  318. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftapi.c +121 -0
  319. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftbase.c +42 -0
  320. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftbase.h +78 -0
  321. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftbbox.c +515 -0
  322. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftbdf.c +91 -0
  323. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftbitmap.c +835 -0
  324. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftcalc.c +1017 -0
  325. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftcid.c +118 -0
  326. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftdbgmem.c +999 -0
  327. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftdebug.c +266 -0
  328. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftfntfmt.c +55 -0
  329. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftfstype.c +62 -0
  330. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftgasp.c +61 -0
  331. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftgloadr.c +406 -0
  332. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftglyph.c +649 -0
  333. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftgxval.c +142 -0
  334. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/fthash.c +339 -0
  335. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftinit.c +376 -0
  336. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftlcdfil.c +383 -0
  337. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftmac.c +1088 -0
  338. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftmm.c +508 -0
  339. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftobjs.c +5405 -0
  340. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftotval.c +91 -0
  341. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftoutln.c +1110 -0
  342. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftpatent.c +51 -0
  343. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftpfr.c +153 -0
  344. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftpic.c +55 -0
  345. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftpsprop.c +285 -0
  346. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftrfork.c +943 -0
  347. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftsnames.c +148 -0
  348. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftstream.c +860 -0
  349. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftstroke.c +2469 -0
  350. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftsynth.c +163 -0
  351. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftsystem.c +320 -0
  352. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/fttrigon.c +526 -0
  353. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/fttype1.c +127 -0
  354. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftutil.c +443 -0
  355. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftver.rc +61 -0
  356. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/ftwinfnt.c +53 -0
  357. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/md5.c +291 -0
  358. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/md5.h +45 -0
  359. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/base/rules.mk +109 -0
  360. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/Jamfile +31 -0
  361. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/README +148 -0
  362. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/bdf.c +35 -0
  363. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/bdf.h +280 -0
  364. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/bdfdrivr.c +1006 -0
  365. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/bdfdrivr.h +80 -0
  366. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/bdferror.h +45 -0
  367. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/bdflib.c +2462 -0
  368. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/module.mk +34 -0
  369. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bdf/rules.mk +84 -0
  370. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bzip2/Jamfile +18 -0
  371. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bzip2/ftbzip2.c +525 -0
  372. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/bzip2/rules.mk +64 -0
  373. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/Jamfile +37 -0
  374. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcache.c +32 -0
  375. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcbasic.c +632 -0
  376. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftccache.c +621 -0
  377. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftccache.h +352 -0
  378. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftccback.h +92 -0
  379. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftccmap.c +327 -0
  380. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcerror.h +42 -0
  381. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcglyph.c +219 -0
  382. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcglyph.h +329 -0
  383. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcimage.c +164 -0
  384. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcimage.h +107 -0
  385. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcmanag.c +704 -0
  386. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcmanag.h +175 -0
  387. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcmru.c +357 -0
  388. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcmru.h +248 -0
  389. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcsbits.c +423 -0
  390. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/ftcsbits.h +103 -0
  391. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cache/rules.mk +85 -0
  392. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/Jamfile +36 -0
  393. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cff.c +30 -0
  394. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffcmap.c +229 -0
  395. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffcmap.h +67 -0
  396. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffdrivr.c +1143 -0
  397. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffdrivr.h +38 -0
  398. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cfferrs.h +42 -0
  399. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffgload.c +683 -0
  400. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffgload.h +63 -0
  401. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffload.c +2564 -0
  402. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffload.h +125 -0
  403. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffobjs.c +1206 -0
  404. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffobjs.h +85 -0
  405. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffparse.c +1694 -0
  406. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffparse.h +136 -0
  407. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffpic.c +138 -0
  408. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cffpic.h +121 -0
  409. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/cfftoken.h +150 -0
  410. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/module.mk +23 -0
  411. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cff/rules.mk +76 -0
  412. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/Jamfile +34 -0
  413. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/ciderrs.h +41 -0
  414. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidgload.c +531 -0
  415. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidgload.h +51 -0
  416. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidload.c +846 -0
  417. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidload.h +53 -0
  418. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidobjs.c +526 -0
  419. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidobjs.h +154 -0
  420. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidparse.c +277 -0
  421. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidparse.h +123 -0
  422. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidriver.c +256 -0
  423. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidriver.h +43 -0
  424. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/cidtoken.h +112 -0
  425. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/module.mk +23 -0
  426. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/rules.mk +73 -0
  427. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/cid/type1cid.c +29 -0
  428. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/Jamfile +52 -0
  429. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/README +532 -0
  430. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvalid.c +47 -0
  431. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvalid.h +108 -0
  432. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvbsln.c +334 -0
  433. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvcommn.c +1746 -0
  434. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvcommn.h +582 -0
  435. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxverror.h +51 -0
  436. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvfeat.c +339 -0
  437. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvfeat.h +173 -0
  438. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvfgen.c +483 -0
  439. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvjust.c +719 -0
  440. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvkern.c +920 -0
  441. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvlcar.c +224 -0
  442. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmod.c +285 -0
  443. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmod.h +51 -0
  444. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort.c +300 -0
  445. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort.h +94 -0
  446. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort0.c +152 -0
  447. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort1.c +260 -0
  448. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort2.c +312 -0
  449. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort4.c +126 -0
  450. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmort5.c +234 -0
  451. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx.c +199 -0
  452. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx.h +68 -0
  453. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx0.c +112 -0
  454. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx1.c +278 -0
  455. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx2.c +331 -0
  456. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx4.c +56 -0
  457. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvmorx5.c +226 -0
  458. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvopbd.c +218 -0
  459. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvprop.c +330 -0
  460. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/gxvtrak.c +288 -0
  461. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/module.mk +23 -0
  462. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gxvalid/rules.mk +98 -0
  463. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/Jamfile +16 -0
  464. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/adler32.c +48 -0
  465. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/ftgzip.c +816 -0
  466. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/ftzconf.h +284 -0
  467. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/infblock.c +387 -0
  468. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/infblock.h +36 -0
  469. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/infcodes.c +250 -0
  470. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/infcodes.h +31 -0
  471. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/inffixed.h +151 -0
  472. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/inflate.c +273 -0
  473. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/inftrees.c +468 -0
  474. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/inftrees.h +63 -0
  475. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/infutil.c +86 -0
  476. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/infutil.h +98 -0
  477. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/rules.mk +83 -0
  478. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/zlib.h +830 -0
  479. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/zutil.c +181 -0
  480. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/gzip/zutil.h +215 -0
  481. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/lzw/Jamfile +16 -0
  482. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/lzw/ftlzw.c +420 -0
  483. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/lzw/ftzopen.c +424 -0
  484. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/lzw/ftzopen.h +172 -0
  485. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/lzw/rules.mk +72 -0
  486. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/Jamfile +37 -0
  487. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/module.mk +23 -0
  488. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvalid.c +32 -0
  489. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvalid.h +78 -0
  490. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvbase.c +345 -0
  491. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvcommn.c +1096 -0
  492. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvcommn.h +467 -0
  493. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otverror.h +42 -0
  494. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvgdef.c +303 -0
  495. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvgpos.c +1051 -0
  496. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvgpos.h +36 -0
  497. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvgsub.c +617 -0
  498. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvjstf.c +259 -0
  499. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvmath.c +453 -0
  500. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvmod.c +282 -0
  501. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/otvmod.h +43 -0
  502. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/otvalid/rules.mk +81 -0
  503. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/Jamfile +32 -0
  504. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/README +96 -0
  505. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/module.mk +34 -0
  506. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcf.c +36 -0
  507. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcf.h +247 -0
  508. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcfdrivr.c +869 -0
  509. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcfdrivr.h +48 -0
  510. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcferror.h +41 -0
  511. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcfread.c +1665 -0
  512. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcfread.h +45 -0
  513. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcfutil.c +104 -0
  514. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/pcfutil.h +55 -0
  515. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pcf/rules.mk +82 -0
  516. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/Jamfile +35 -0
  517. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/module.mk +23 -0
  518. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfr.c +30 -0
  519. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrcmap.c +177 -0
  520. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrcmap.h +46 -0
  521. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrdrivr.c +213 -0
  522. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrdrivr.h +43 -0
  523. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrerror.h +41 -0
  524. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrgload.c +851 -0
  525. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrgload.h +49 -0
  526. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrload.c +1049 -0
  527. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrload.h +123 -0
  528. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrobjs.c +600 -0
  529. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrobjs.h +96 -0
  530. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrsbit.c +808 -0
  531. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrsbit.h +37 -0
  532. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/pfrtypes.h +332 -0
  533. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pfr/rules.mk +76 -0
  534. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/Jamfile +45 -0
  535. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/afmparse.c +986 -0
  536. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/afmparse.h +89 -0
  537. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/cffdecode.c +2370 -0
  538. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/cffdecode.h +64 -0
  539. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/module.mk +23 -0
  540. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psarrst.c +241 -0
  541. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psarrst.h +100 -0
  542. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psaux.c +41 -0
  543. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psauxerr.h +42 -0
  544. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psauxmod.c +191 -0
  545. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psauxmod.h +51 -0
  546. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psblues.c +582 -0
  547. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psblues.h +185 -0
  548. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psconv.c +611 -0
  549. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psconv.h +71 -0
  550. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/pserror.c +52 -0
  551. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/pserror.h +119 -0
  552. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psfixed.h +95 -0
  553. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psfont.c +567 -0
  554. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psfont.h +134 -0
  555. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psft.c +890 -0
  556. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psft.h +167 -0
  557. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psglue.h +144 -0
  558. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/pshints.c +1939 -0
  559. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/pshints.h +288 -0
  560. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psintrp.c +3040 -0
  561. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psintrp.h +83 -0
  562. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psobjs.c +2533 -0
  563. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psobjs.h +313 -0
  564. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psread.c +112 -0
  565. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psread.h +68 -0
  566. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psstack.c +328 -0
  567. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/psstack.h +121 -0
  568. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/pstypes.h +78 -0
  569. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/rules.mk +89 -0
  570. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/t1cmap.c +371 -0
  571. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/t1cmap.h +105 -0
  572. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/t1decode.c +1988 -0
  573. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psaux/t1decode.h +74 -0
  574. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/Jamfile +34 -0
  575. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/module.mk +23 -0
  576. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshalgo.c +2195 -0
  577. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshalgo.h +241 -0
  578. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshglob.c +795 -0
  579. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshglob.h +196 -0
  580. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshinter.c +29 -0
  581. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshmod.c +121 -0
  582. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshmod.h +39 -0
  583. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshnterr.h +41 -0
  584. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshpic.c +76 -0
  585. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshpic.h +63 -0
  586. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshrec.c +1220 -0
  587. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/pshrec.h +172 -0
  588. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/pshinter/rules.mk +76 -0
  589. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/Jamfile +31 -0
  590. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/module.mk +23 -0
  591. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/psmodule.c +632 -0
  592. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/psmodule.h +38 -0
  593. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/psnamerr.h +42 -0
  594. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/psnames.c +26 -0
  595. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/pspic.c +97 -0
  596. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/pspic.h +68 -0
  597. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/pstables.h +4238 -0
  598. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/psnames/rules.mk +74 -0
  599. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/Jamfile +32 -0
  600. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/ftmisc.h +142 -0
  601. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/ftraster.c +3225 -0
  602. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/ftraster.h +46 -0
  603. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/ftrend1.c +204 -0
  604. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/ftrend1.h +38 -0
  605. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/module.mk +23 -0
  606. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/raster.c +27 -0
  607. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/rasterrs.h +42 -0
  608. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/rastpic.c +89 -0
  609. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/rastpic.h +63 -0
  610. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/raster/rules.mk +73 -0
  611. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/Jamfile +40 -0
  612. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/module.mk +23 -0
  613. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/pngshim.c +456 -0
  614. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/pngshim.h +51 -0
  615. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/rules.mk +81 -0
  616. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfdriver.c +1288 -0
  617. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfdriver.h +38 -0
  618. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sferrors.h +41 -0
  619. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfnt.c +35 -0
  620. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfntpic.c +143 -0
  621. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfntpic.h +112 -0
  622. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfobjs.c +1804 -0
  623. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/sfobjs.h +59 -0
  624. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttbdf.c +257 -0
  625. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttbdf.h +50 -0
  626. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttcmap.c +3938 -0
  627. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttcmap.h +160 -0
  628. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttcmapc.h +56 -0
  629. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttkern.c +311 -0
  630. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttkern.h +52 -0
  631. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttload.c +1427 -0
  632. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttload.h +112 -0
  633. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttmtx.c +326 -0
  634. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttmtx.h +55 -0
  635. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttpost.c +575 -0
  636. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttpost.h +46 -0
  637. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttsbit.c +1682 -0
  638. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/sfnt/ttsbit.h +63 -0
  639. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/Jamfile +32 -0
  640. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftgrays.c +2042 -0
  641. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftgrays.h +58 -0
  642. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftsmerrs.h +42 -0
  643. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftsmooth.c +464 -0
  644. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftsmooth.h +42 -0
  645. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftspic.c +118 -0
  646. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/ftspic.h +75 -0
  647. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/module.mk +27 -0
  648. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/rules.mk +74 -0
  649. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/smooth/smooth.c +27 -0
  650. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/Jamfile +5 -0
  651. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/afblue.pl +551 -0
  652. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/apinames.c +481 -0
  653. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/chktrcmp.py +114 -0
  654. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/cordic.py +33 -0
  655. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/.gitignore +1 -0
  656. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/content.py +672 -0
  657. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/docbeauty.py +111 -0
  658. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/docmaker.py +115 -0
  659. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/formatter.py +228 -0
  660. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/sources.py +410 -0
  661. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/tohtml.py +725 -0
  662. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/docmaker/utils.py +127 -0
  663. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftfuzzer/README +81 -0
  664. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftfuzzer/ftfuzzer.cc +428 -0
  665. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftfuzzer/ftmutator.cc +314 -0
  666. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftfuzzer/rasterfuzzer.cc +129 -0
  667. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftfuzzer/runinput.cc +58 -0
  668. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftrandom/Makefile +45 -0
  669. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftrandom/README +69 -0
  670. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/ftrandom/ftrandom.c +720 -0
  671. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/glnames.py +5540 -0
  672. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/no-copyright +65 -0
  673. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/test_afm.c +157 -0
  674. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/test_bbox.c +188 -0
  675. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/test_trig.c +258 -0
  676. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/update-copyright +14 -0
  677. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/tools/update-copyright-year +135 -0
  678. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/Jamfile +37 -0
  679. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/module.mk +23 -0
  680. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/rules.mk +77 -0
  681. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/truetype.c +32 -0
  682. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttdriver.c +666 -0
  683. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttdriver.h +38 -0
  684. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/tterrors.h +42 -0
  685. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttgload.c +2906 -0
  686. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttgload.h +62 -0
  687. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttgxvar.c +4074 -0
  688. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttgxvar.h +453 -0
  689. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttinterp.c +8551 -0
  690. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttinterp.h +539 -0
  691. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttobjs.c +1440 -0
  692. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttobjs.h +425 -0
  693. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttpic.c +101 -0
  694. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttpic.h +88 -0
  695. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttpload.c +642 -0
  696. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttpload.h +75 -0
  697. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttsubpix.c +1014 -0
  698. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/truetype/ttsubpix.h +111 -0
  699. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/Jamfile +35 -0
  700. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/module.mk +23 -0
  701. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/rules.mk +76 -0
  702. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1afm.c +415 -0
  703. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1afm.h +54 -0
  704. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1driver.c +773 -0
  705. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1driver.h +42 -0
  706. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1errors.h +41 -0
  707. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1gload.c +590 -0
  708. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1gload.h +53 -0
  709. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1load.c +2520 -0
  710. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1load.h +117 -0
  711. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1objs.c +641 -0
  712. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1objs.h +160 -0
  713. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1parse.c +525 -0
  714. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1parse.h +129 -0
  715. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/t1tokens.h +143 -0
  716. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type1/type1.c +30 -0
  717. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/Jamfile +32 -0
  718. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/module.mk +23 -0
  719. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/rules.mk +73 -0
  720. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42drivr.c +246 -0
  721. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42drivr.h +43 -0
  722. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42error.h +41 -0
  723. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42objs.c +688 -0
  724. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42objs.h +124 -0
  725. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42parse.c +1299 -0
  726. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42parse.h +91 -0
  727. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/t42types.h +57 -0
  728. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/type42/type42.c +27 -0
  729. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/winfonts/Jamfile +16 -0
  730. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/winfonts/fnterrs.h +42 -0
  731. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/winfonts/module.mk +23 -0
  732. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/winfonts/rules.mk +68 -0
  733. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/winfonts/winfnt.c +1200 -0
  734. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/src/winfonts/winfnt.h +171 -0
  735. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/version.sed +5 -0
  736. data/vendor/git.savannah.nongnu.org/r/freetype/freetype2/vms_make.com +1286 -0
  737. metadata +800 -0
@@ -0,0 +1,85 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* cffobjs.h */
4
+ /* */
5
+ /* OpenType objects manager (specification). */
6
+ /* */
7
+ /* Copyright 1996-2018 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
+ #ifndef CFFOBJS_H_
20
+ #define CFFOBJS_H_
21
+
22
+
23
+ #include <ft2build.h>
24
+
25
+
26
+ FT_BEGIN_HEADER
27
+
28
+
29
+ FT_LOCAL( FT_Error )
30
+ cff_size_init( FT_Size size ); /* CFF_Size */
31
+
32
+ FT_LOCAL( void )
33
+ cff_size_done( FT_Size size ); /* CFF_Size */
34
+
35
+ FT_LOCAL( FT_Error )
36
+ cff_size_request( FT_Size size,
37
+ FT_Size_Request req );
38
+
39
+ #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
40
+
41
+ FT_LOCAL( FT_Error )
42
+ cff_size_select( FT_Size size,
43
+ FT_ULong strike_index );
44
+
45
+ #endif
46
+
47
+ FT_LOCAL( void )
48
+ cff_slot_done( FT_GlyphSlot slot );
49
+
50
+ FT_LOCAL( FT_Error )
51
+ cff_slot_init( FT_GlyphSlot slot );
52
+
53
+
54
+ /*************************************************************************/
55
+ /* */
56
+ /* Face functions */
57
+ /* */
58
+ FT_LOCAL( FT_Error )
59
+ cff_face_init( FT_Stream stream,
60
+ FT_Face face, /* CFF_Face */
61
+ FT_Int face_index,
62
+ FT_Int num_params,
63
+ FT_Parameter* params );
64
+
65
+ FT_LOCAL( void )
66
+ cff_face_done( FT_Face face ); /* CFF_Face */
67
+
68
+
69
+ /*************************************************************************/
70
+ /* */
71
+ /* Driver functions */
72
+ /* */
73
+ FT_LOCAL( FT_Error )
74
+ cff_driver_init( FT_Module module ); /* PS_Driver */
75
+
76
+ FT_LOCAL( void )
77
+ cff_driver_done( FT_Module module ); /* PS_Driver */
78
+
79
+
80
+ FT_END_HEADER
81
+
82
+ #endif /* CFFOBJS_H_ */
83
+
84
+
85
+ /* END */
@@ -0,0 +1,1694 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* cffparse.c */
4
+ /* */
5
+ /* CFF token stream parser (body) */
6
+ /* */
7
+ /* Copyright 1996-2018 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 <ft2build.h>
20
+ #include "cffparse.h"
21
+ #include FT_INTERNAL_STREAM_H
22
+ #include FT_INTERNAL_DEBUG_H
23
+ #include FT_INTERNAL_CALC_H
24
+ #include FT_INTERNAL_POSTSCRIPT_AUX_H
25
+
26
+ #include "cfferrs.h"
27
+ #include "cffpic.h"
28
+ #include "cffload.h"
29
+
30
+
31
+ /*************************************************************************/
32
+ /* */
33
+ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */
34
+ /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
35
+ /* messages during execution. */
36
+ /* */
37
+ #undef FT_COMPONENT
38
+ #define FT_COMPONENT trace_cffparse
39
+
40
+
41
+ FT_LOCAL_DEF( FT_Error )
42
+ cff_parser_init( CFF_Parser parser,
43
+ FT_UInt code,
44
+ void* object,
45
+ FT_Library library,
46
+ FT_UInt stackSize,
47
+ FT_UShort num_designs,
48
+ FT_UShort num_axes )
49
+ {
50
+ FT_Memory memory = library->memory; /* for FT_NEW_ARRAY */
51
+ FT_Error error; /* for FT_NEW_ARRAY */
52
+
53
+
54
+ FT_ZERO( parser );
55
+
56
+ #if 0
57
+ parser->top = parser->stack;
58
+ #endif
59
+ parser->object_code = code;
60
+ parser->object = object;
61
+ parser->library = library;
62
+ parser->num_designs = num_designs;
63
+ parser->num_axes = num_axes;
64
+
65
+ /* allocate the stack buffer */
66
+ if ( FT_NEW_ARRAY( parser->stack, stackSize ) )
67
+ {
68
+ FT_FREE( parser->stack );
69
+ goto Exit;
70
+ }
71
+
72
+ parser->stackSize = stackSize;
73
+ parser->top = parser->stack; /* empty stack */
74
+
75
+ Exit:
76
+ return error;
77
+ }
78
+
79
+
80
+ FT_LOCAL_DEF( void )
81
+ cff_parser_done( CFF_Parser parser )
82
+ {
83
+ FT_Memory memory = parser->library->memory; /* for FT_FREE */
84
+
85
+
86
+ FT_FREE( parser->stack );
87
+ }
88
+
89
+
90
+ /* read an integer */
91
+ static FT_Long
92
+ cff_parse_integer( FT_Byte* start,
93
+ FT_Byte* limit )
94
+ {
95
+ FT_Byte* p = start;
96
+ FT_Int v = *p++;
97
+ FT_Long val = 0;
98
+
99
+
100
+ if ( v == 28 )
101
+ {
102
+ if ( p + 2 > limit )
103
+ goto Bad;
104
+
105
+ val = (FT_Short)( ( (FT_UShort)p[0] << 8 ) | p[1] );
106
+ }
107
+ else if ( v == 29 )
108
+ {
109
+ if ( p + 4 > limit )
110
+ goto Bad;
111
+
112
+ val = (FT_Long)( ( (FT_ULong)p[0] << 24 ) |
113
+ ( (FT_ULong)p[1] << 16 ) |
114
+ ( (FT_ULong)p[2] << 8 ) |
115
+ (FT_ULong)p[3] );
116
+ }
117
+ else if ( v < 247 )
118
+ {
119
+ val = v - 139;
120
+ }
121
+ else if ( v < 251 )
122
+ {
123
+ if ( p + 1 > limit )
124
+ goto Bad;
125
+
126
+ val = ( v - 247 ) * 256 + p[0] + 108;
127
+ }
128
+ else
129
+ {
130
+ if ( p + 1 > limit )
131
+ goto Bad;
132
+
133
+ val = -( v - 251 ) * 256 - p[0] - 108;
134
+ }
135
+
136
+ Exit:
137
+ return val;
138
+
139
+ Bad:
140
+ val = 0;
141
+ FT_TRACE4(( "!!!END OF DATA:!!!" ));
142
+ goto Exit;
143
+ }
144
+
145
+
146
+ static const FT_Long power_tens[] =
147
+ {
148
+ 1L,
149
+ 10L,
150
+ 100L,
151
+ 1000L,
152
+ 10000L,
153
+ 100000L,
154
+ 1000000L,
155
+ 10000000L,
156
+ 100000000L,
157
+ 1000000000L
158
+ };
159
+
160
+ /* maximum values allowed for multiplying */
161
+ /* with the corresponding `power_tens' element */
162
+ static const FT_Long power_ten_limits[] =
163
+ {
164
+ FT_LONG_MAX / 1L,
165
+ FT_LONG_MAX / 10L,
166
+ FT_LONG_MAX / 100L,
167
+ FT_LONG_MAX / 1000L,
168
+ FT_LONG_MAX / 10000L,
169
+ FT_LONG_MAX / 100000L,
170
+ FT_LONG_MAX / 1000000L,
171
+ FT_LONG_MAX / 10000000L,
172
+ FT_LONG_MAX / 100000000L,
173
+ FT_LONG_MAX / 1000000000L,
174
+ };
175
+
176
+
177
+ /* read a real */
178
+ static FT_Fixed
179
+ cff_parse_real( FT_Byte* start,
180
+ FT_Byte* limit,
181
+ FT_Long power_ten,
182
+ FT_Long* scaling )
183
+ {
184
+ FT_Byte* p = start;
185
+ FT_Int nib;
186
+ FT_UInt phase;
187
+
188
+ FT_Long result, number, exponent;
189
+ FT_Int sign = 0, exponent_sign = 0, have_overflow = 0;
190
+ FT_Long exponent_add, integer_length, fraction_length;
191
+
192
+
193
+ if ( scaling )
194
+ *scaling = 0;
195
+
196
+ result = 0;
197
+
198
+ number = 0;
199
+ exponent = 0;
200
+
201
+ exponent_add = 0;
202
+ integer_length = 0;
203
+ fraction_length = 0;
204
+
205
+ /* First of all, read the integer part. */
206
+ phase = 4;
207
+
208
+ for (;;)
209
+ {
210
+ /* If we entered this iteration with phase == 4, we need to */
211
+ /* read a new byte. This also skips past the initial 0x1E. */
212
+ if ( phase )
213
+ {
214
+ p++;
215
+
216
+ /* Make sure we don't read past the end. */
217
+ if ( p >= limit )
218
+ goto Bad;
219
+ }
220
+
221
+ /* Get the nibble. */
222
+ nib = (FT_Int)( p[0] >> phase ) & 0xF;
223
+ phase = 4 - phase;
224
+
225
+ if ( nib == 0xE )
226
+ sign = 1;
227
+ else if ( nib > 9 )
228
+ break;
229
+ else
230
+ {
231
+ /* Increase exponent if we can't add the digit. */
232
+ if ( number >= 0xCCCCCCCL )
233
+ exponent_add++;
234
+ /* Skip leading zeros. */
235
+ else if ( nib || number )
236
+ {
237
+ integer_length++;
238
+ number = number * 10 + nib;
239
+ }
240
+ }
241
+ }
242
+
243
+ /* Read fraction part, if any. */
244
+ if ( nib == 0xA )
245
+ for (;;)
246
+ {
247
+ /* If we entered this iteration with phase == 4, we need */
248
+ /* to read a new byte. */
249
+ if ( phase )
250
+ {
251
+ p++;
252
+
253
+ /* Make sure we don't read past the end. */
254
+ if ( p >= limit )
255
+ goto Bad;
256
+ }
257
+
258
+ /* Get the nibble. */
259
+ nib = ( p[0] >> phase ) & 0xF;
260
+ phase = 4 - phase;
261
+ if ( nib >= 10 )
262
+ break;
263
+
264
+ /* Skip leading zeros if possible. */
265
+ if ( !nib && !number )
266
+ exponent_add--;
267
+ /* Only add digit if we don't overflow. */
268
+ else if ( number < 0xCCCCCCCL && fraction_length < 9 )
269
+ {
270
+ fraction_length++;
271
+ number = number * 10 + nib;
272
+ }
273
+ }
274
+
275
+ /* Read exponent, if any. */
276
+ if ( nib == 12 )
277
+ {
278
+ exponent_sign = 1;
279
+ nib = 11;
280
+ }
281
+
282
+ if ( nib == 11 )
283
+ {
284
+ for (;;)
285
+ {
286
+ /* If we entered this iteration with phase == 4, */
287
+ /* we need to read a new byte. */
288
+ if ( phase )
289
+ {
290
+ p++;
291
+
292
+ /* Make sure we don't read past the end. */
293
+ if ( p >= limit )
294
+ goto Bad;
295
+ }
296
+
297
+ /* Get the nibble. */
298
+ nib = ( p[0] >> phase ) & 0xF;
299
+ phase = 4 - phase;
300
+ if ( nib >= 10 )
301
+ break;
302
+
303
+ /* Arbitrarily limit exponent. */
304
+ if ( exponent > 1000 )
305
+ have_overflow = 1;
306
+ else
307
+ exponent = exponent * 10 + nib;
308
+ }
309
+
310
+ if ( exponent_sign )
311
+ exponent = -exponent;
312
+ }
313
+
314
+ if ( !number )
315
+ goto Exit;
316
+
317
+ if ( have_overflow )
318
+ {
319
+ if ( exponent_sign )
320
+ goto Underflow;
321
+ else
322
+ goto Overflow;
323
+ }
324
+
325
+ /* We don't check `power_ten' and `exponent_add'. */
326
+ exponent += power_ten + exponent_add;
327
+
328
+ if ( scaling )
329
+ {
330
+ /* Only use `fraction_length'. */
331
+ fraction_length += integer_length;
332
+ exponent += integer_length;
333
+
334
+ if ( fraction_length <= 5 )
335
+ {
336
+ if ( number > 0x7FFFL )
337
+ {
338
+ result = FT_DivFix( number, 10 );
339
+ *scaling = exponent - fraction_length + 1;
340
+ }
341
+ else
342
+ {
343
+ if ( exponent > 0 )
344
+ {
345
+ FT_Long new_fraction_length, shift;
346
+
347
+
348
+ /* Make `scaling' as small as possible. */
349
+ new_fraction_length = FT_MIN( exponent, 5 );
350
+ shift = new_fraction_length - fraction_length;
351
+
352
+ if ( shift > 0 )
353
+ {
354
+ exponent -= new_fraction_length;
355
+ number *= power_tens[shift];
356
+ if ( number > 0x7FFFL )
357
+ {
358
+ number /= 10;
359
+ exponent += 1;
360
+ }
361
+ }
362
+ else
363
+ exponent -= fraction_length;
364
+ }
365
+ else
366
+ exponent -= fraction_length;
367
+
368
+ result = (FT_Long)( (FT_ULong)number << 16 );
369
+ *scaling = exponent;
370
+ }
371
+ }
372
+ else
373
+ {
374
+ if ( ( number / power_tens[fraction_length - 5] ) > 0x7FFFL )
375
+ {
376
+ result = FT_DivFix( number, power_tens[fraction_length - 4] );
377
+ *scaling = exponent - 4;
378
+ }
379
+ else
380
+ {
381
+ result = FT_DivFix( number, power_tens[fraction_length - 5] );
382
+ *scaling = exponent - 5;
383
+ }
384
+ }
385
+ }
386
+ else
387
+ {
388
+ integer_length += exponent;
389
+ fraction_length -= exponent;
390
+
391
+ if ( integer_length > 5 )
392
+ goto Overflow;
393
+ if ( integer_length < -5 )
394
+ goto Underflow;
395
+
396
+ /* Remove non-significant digits. */
397
+ if ( integer_length < 0 )
398
+ {
399
+ number /= power_tens[-integer_length];
400
+ fraction_length += integer_length;
401
+ }
402
+
403
+ /* this can only happen if exponent was non-zero */
404
+ if ( fraction_length == 10 )
405
+ {
406
+ number /= 10;
407
+ fraction_length -= 1;
408
+ }
409
+
410
+ /* Convert into 16.16 format. */
411
+ if ( fraction_length > 0 )
412
+ {
413
+ if ( ( number / power_tens[fraction_length] ) > 0x7FFFL )
414
+ goto Exit;
415
+
416
+ result = FT_DivFix( number, power_tens[fraction_length] );
417
+ }
418
+ else
419
+ {
420
+ number *= power_tens[-fraction_length];
421
+
422
+ if ( number > 0x7FFFL )
423
+ goto Overflow;
424
+
425
+ result = (FT_Long)( (FT_ULong)number << 16 );
426
+ }
427
+ }
428
+
429
+ Exit:
430
+ if ( sign )
431
+ result = -result;
432
+
433
+ return result;
434
+
435
+ Overflow:
436
+ result = 0x7FFFFFFFL;
437
+ FT_TRACE4(( "!!!OVERFLOW:!!!" ));
438
+ goto Exit;
439
+
440
+ Underflow:
441
+ result = 0;
442
+ FT_TRACE4(( "!!!UNDERFLOW:!!!" ));
443
+ goto Exit;
444
+
445
+ Bad:
446
+ result = 0;
447
+ FT_TRACE4(( "!!!END OF DATA:!!!" ));
448
+ goto Exit;
449
+ }
450
+
451
+
452
+ /* read a number, either integer or real */
453
+ FT_LOCAL_DEF( FT_Long )
454
+ cff_parse_num( CFF_Parser parser,
455
+ FT_Byte** d )
456
+ {
457
+ if ( **d == 30 )
458
+ {
459
+ /* binary-coded decimal is truncated to integer */
460
+ return cff_parse_real( *d, parser->limit, 0, NULL ) >> 16;
461
+ }
462
+
463
+ else if ( **d == 255 )
464
+ {
465
+ /* 16.16 fixed point is used internally for CFF2 blend results. */
466
+ /* Since these are trusted values, a limit check is not needed. */
467
+
468
+ /* After the 255, 4 bytes give the number. */
469
+ /* The blend value is converted to integer, with rounding; */
470
+ /* due to the right-shift we don't need the lowest byte. */
471
+ #if 0
472
+ return (FT_Short)(
473
+ ( ( ( (FT_UInt32)*( d[0] + 1 ) << 24 ) |
474
+ ( (FT_UInt32)*( d[0] + 2 ) << 16 ) |
475
+ ( (FT_UInt32)*( d[0] + 3 ) << 8 ) |
476
+ (FT_UInt32)*( d[0] + 4 ) ) + 0x8000U ) >> 16 );
477
+ #else
478
+ return (FT_Short)(
479
+ ( ( ( (FT_UInt32)*( d[0] + 1 ) << 16 ) |
480
+ ( (FT_UInt32)*( d[0] + 2 ) << 8 ) |
481
+ (FT_UInt32)*( d[0] + 3 ) ) + 0x80U ) >> 8 );
482
+ #endif
483
+ }
484
+
485
+ else
486
+ return cff_parse_integer( *d, parser->limit );
487
+ }
488
+
489
+
490
+ /* read a floating point number, either integer or real */
491
+ static FT_Fixed
492
+ do_fixed( CFF_Parser parser,
493
+ FT_Byte** d,
494
+ FT_Long scaling )
495
+ {
496
+ if ( **d == 30 )
497
+ return cff_parse_real( *d, parser->limit, scaling, NULL );
498
+ else
499
+ {
500
+ FT_Long val = cff_parse_integer( *d, parser->limit );
501
+
502
+
503
+ if ( scaling )
504
+ {
505
+ if ( FT_ABS( val ) > power_ten_limits[scaling] )
506
+ {
507
+ val = val > 0 ? 0x7FFFFFFFL : -0x7FFFFFFFL;
508
+ goto Overflow;
509
+ }
510
+
511
+ val *= power_tens[scaling];
512
+ }
513
+
514
+ if ( val > 0x7FFF )
515
+ {
516
+ val = 0x7FFFFFFFL;
517
+ goto Overflow;
518
+ }
519
+ else if ( val < -0x7FFF )
520
+ {
521
+ val = -0x7FFFFFFFL;
522
+ goto Overflow;
523
+ }
524
+
525
+ return (FT_Long)( (FT_ULong)val << 16 );
526
+
527
+ Overflow:
528
+ FT_TRACE4(( "!!!OVERFLOW:!!!" ));
529
+ return val;
530
+ }
531
+ }
532
+
533
+
534
+ /* read a floating point number, either integer or real */
535
+ static FT_Fixed
536
+ cff_parse_fixed( CFF_Parser parser,
537
+ FT_Byte** d )
538
+ {
539
+ return do_fixed( parser, d, 0 );
540
+ }
541
+
542
+
543
+ /* read a floating point number, either integer or real, */
544
+ /* but return `10^scaling' times the number read in */
545
+ static FT_Fixed
546
+ cff_parse_fixed_scaled( CFF_Parser parser,
547
+ FT_Byte** d,
548
+ FT_Long scaling )
549
+ {
550
+ return do_fixed( parser, d, scaling );
551
+ }
552
+
553
+
554
+ /* read a floating point number, either integer or real, */
555
+ /* and return it as precise as possible -- `scaling' returns */
556
+ /* the scaling factor (as a power of 10) */
557
+ static FT_Fixed
558
+ cff_parse_fixed_dynamic( CFF_Parser parser,
559
+ FT_Byte** d,
560
+ FT_Long* scaling )
561
+ {
562
+ FT_ASSERT( scaling );
563
+
564
+ if ( **d == 30 )
565
+ return cff_parse_real( *d, parser->limit, 0, scaling );
566
+ else
567
+ {
568
+ FT_Long number;
569
+ FT_Int integer_length;
570
+
571
+
572
+ number = cff_parse_integer( d[0], d[1] );
573
+
574
+ if ( number > 0x7FFFL )
575
+ {
576
+ for ( integer_length = 5; integer_length < 10; integer_length++ )
577
+ if ( number < power_tens[integer_length] )
578
+ break;
579
+
580
+ if ( ( number / power_tens[integer_length - 5] ) > 0x7FFFL )
581
+ {
582
+ *scaling = integer_length - 4;
583
+ return FT_DivFix( number, power_tens[integer_length - 4] );
584
+ }
585
+ else
586
+ {
587
+ *scaling = integer_length - 5;
588
+ return FT_DivFix( number, power_tens[integer_length - 5] );
589
+ }
590
+ }
591
+ else
592
+ {
593
+ *scaling = 0;
594
+ return (FT_Long)( (FT_ULong)number << 16 );
595
+ }
596
+ }
597
+ }
598
+
599
+
600
+ static FT_Error
601
+ cff_parse_font_matrix( CFF_Parser parser )
602
+ {
603
+ CFF_FontRecDict dict = (CFF_FontRecDict)parser->object;
604
+ FT_Matrix* matrix = &dict->font_matrix;
605
+ FT_Vector* offset = &dict->font_offset;
606
+ FT_ULong* upm = &dict->units_per_em;
607
+ FT_Byte** data = parser->stack;
608
+ FT_Error error = FT_ERR( Stack_Underflow );
609
+
610
+
611
+ if ( parser->top >= parser->stack + 6 )
612
+ {
613
+ FT_Fixed values[6];
614
+ FT_Long scalings[6];
615
+
616
+ FT_Long min_scaling, max_scaling;
617
+ int i;
618
+
619
+
620
+ error = FT_Err_Ok;
621
+
622
+ dict->has_font_matrix = TRUE;
623
+
624
+ /* We expect a well-formed font matrix, this is, the matrix elements */
625
+ /* `xx' and `yy' are of approximately the same magnitude. To avoid */
626
+ /* loss of precision, we use the magnitude of the largest matrix */
627
+ /* element to scale all other elements. The scaling factor is then */
628
+ /* contained in the `units_per_em' value. */
629
+
630
+ max_scaling = FT_LONG_MIN;
631
+ min_scaling = FT_LONG_MAX;
632
+
633
+ for ( i = 0; i < 6; i++ )
634
+ {
635
+ values[i] = cff_parse_fixed_dynamic( parser, data++, &scalings[i] );
636
+ if ( values[i] )
637
+ {
638
+ if ( scalings[i] > max_scaling )
639
+ max_scaling = scalings[i];
640
+ if ( scalings[i] < min_scaling )
641
+ min_scaling = scalings[i];
642
+ }
643
+ }
644
+
645
+ if ( max_scaling < -9 ||
646
+ max_scaling > 0 ||
647
+ ( max_scaling - min_scaling ) < 0 ||
648
+ ( max_scaling - min_scaling ) > 9 )
649
+ {
650
+ /* Return default matrix in case of unlikely values. */
651
+
652
+ FT_TRACE1(( "cff_parse_font_matrix:"
653
+ " strange scaling values (minimum %d, maximum %d),\n"
654
+ " "
655
+ " using default matrix\n", min_scaling, max_scaling ));
656
+
657
+ matrix->xx = 0x10000L;
658
+ matrix->yx = 0;
659
+ matrix->xy = 0;
660
+ matrix->yy = 0x10000L;
661
+ offset->x = 0;
662
+ offset->y = 0;
663
+ *upm = 1;
664
+
665
+ goto Exit;
666
+ }
667
+
668
+ for ( i = 0; i < 6; i++ )
669
+ {
670
+ FT_Fixed value = values[i];
671
+ FT_Long divisor, half_divisor;
672
+
673
+
674
+ if ( !value )
675
+ continue;
676
+
677
+ divisor = power_tens[max_scaling - scalings[i]];
678
+ half_divisor = divisor >> 1;
679
+
680
+ if ( value < 0 )
681
+ {
682
+ if ( FT_LONG_MIN + half_divisor < value )
683
+ values[i] = ( value - half_divisor ) / divisor;
684
+ else
685
+ values[i] = FT_LONG_MIN / divisor;
686
+ }
687
+ else
688
+ {
689
+ if ( FT_LONG_MAX - half_divisor > value )
690
+ values[i] = ( value + half_divisor ) / divisor;
691
+ else
692
+ values[i] = FT_LONG_MAX / divisor;
693
+ }
694
+ }
695
+
696
+ matrix->xx = values[0];
697
+ matrix->yx = values[1];
698
+ matrix->xy = values[2];
699
+ matrix->yy = values[3];
700
+ offset->x = values[4];
701
+ offset->y = values[5];
702
+
703
+ *upm = (FT_ULong)power_tens[-max_scaling];
704
+
705
+ FT_TRACE4(( " [%f %f %f %f %f %f]\n",
706
+ (double)matrix->xx / *upm / 65536,
707
+ (double)matrix->xy / *upm / 65536,
708
+ (double)matrix->yx / *upm / 65536,
709
+ (double)matrix->yy / *upm / 65536,
710
+ (double)offset->x / *upm / 65536,
711
+ (double)offset->y / *upm / 65536 ));
712
+ }
713
+
714
+ Exit:
715
+ return error;
716
+ }
717
+
718
+
719
+ static FT_Error
720
+ cff_parse_font_bbox( CFF_Parser parser )
721
+ {
722
+ CFF_FontRecDict dict = (CFF_FontRecDict)parser->object;
723
+ FT_BBox* bbox = &dict->font_bbox;
724
+ FT_Byte** data = parser->stack;
725
+ FT_Error error;
726
+
727
+
728
+ error = FT_ERR( Stack_Underflow );
729
+
730
+ if ( parser->top >= parser->stack + 4 )
731
+ {
732
+ bbox->xMin = FT_RoundFix( cff_parse_fixed( parser, data++ ) );
733
+ bbox->yMin = FT_RoundFix( cff_parse_fixed( parser, data++ ) );
734
+ bbox->xMax = FT_RoundFix( cff_parse_fixed( parser, data++ ) );
735
+ bbox->yMax = FT_RoundFix( cff_parse_fixed( parser, data ) );
736
+ error = FT_Err_Ok;
737
+
738
+ FT_TRACE4(( " [%d %d %d %d]\n",
739
+ bbox->xMin / 65536,
740
+ bbox->yMin / 65536,
741
+ bbox->xMax / 65536,
742
+ bbox->yMax / 65536 ));
743
+ }
744
+
745
+ return error;
746
+ }
747
+
748
+
749
+ static FT_Error
750
+ cff_parse_private_dict( CFF_Parser parser )
751
+ {
752
+ CFF_FontRecDict dict = (CFF_FontRecDict)parser->object;
753
+ FT_Byte** data = parser->stack;
754
+ FT_Error error;
755
+
756
+
757
+ error = FT_ERR( Stack_Underflow );
758
+
759
+ if ( parser->top >= parser->stack + 2 )
760
+ {
761
+ FT_Long tmp;
762
+
763
+
764
+ tmp = cff_parse_num( parser, data++ );
765
+ if ( tmp < 0 )
766
+ {
767
+ FT_ERROR(( "cff_parse_private_dict: Invalid dictionary size\n" ));
768
+ error = FT_THROW( Invalid_File_Format );
769
+ goto Fail;
770
+ }
771
+ dict->private_size = (FT_ULong)tmp;
772
+
773
+ tmp = cff_parse_num( parser, data );
774
+ if ( tmp < 0 )
775
+ {
776
+ FT_ERROR(( "cff_parse_private_dict: Invalid dictionary offset\n" ));
777
+ error = FT_THROW( Invalid_File_Format );
778
+ goto Fail;
779
+ }
780
+ dict->private_offset = (FT_ULong)tmp;
781
+
782
+ FT_TRACE4(( " %lu %lu\n",
783
+ dict->private_size, dict->private_offset ));
784
+
785
+ error = FT_Err_Ok;
786
+ }
787
+
788
+ Fail:
789
+ return error;
790
+ }
791
+
792
+
793
+ /* The `MultipleMaster' operator comes before any */
794
+ /* top DICT operators that contain T2 charstrings. */
795
+
796
+ static FT_Error
797
+ cff_parse_multiple_master( CFF_Parser parser )
798
+ {
799
+ CFF_FontRecDict dict = (CFF_FontRecDict)parser->object;
800
+ FT_Error error;
801
+
802
+
803
+ #ifdef FT_DEBUG_LEVEL_TRACE
804
+ /* beautify tracing message */
805
+ if ( ft_trace_levels[FT_COMPONENT] < 4 )
806
+ FT_TRACE1(( "Multiple Master CFFs not supported yet,"
807
+ " handling first master design only\n" ));
808
+ else
809
+ FT_TRACE1(( " (not supported yet,"
810
+ " handling first master design only)\n" ));
811
+ #endif
812
+
813
+ error = FT_ERR( Stack_Underflow );
814
+
815
+ /* currently, we handle only the first argument */
816
+ if ( parser->top >= parser->stack + 5 )
817
+ {
818
+ FT_Long num_designs = cff_parse_num( parser, parser->stack );
819
+
820
+
821
+ if ( num_designs > 16 || num_designs < 2 )
822
+ {
823
+ FT_ERROR(( "cff_parse_multiple_master:"
824
+ " Invalid number of designs\n" ));
825
+ error = FT_THROW( Invalid_File_Format );
826
+ }
827
+ else
828
+ {
829
+ dict->num_designs = (FT_UShort)num_designs;
830
+ dict->num_axes = (FT_UShort)( parser->top - parser->stack - 4 );
831
+
832
+ parser->num_designs = dict->num_designs;
833
+ parser->num_axes = dict->num_axes;
834
+
835
+ error = FT_Err_Ok;
836
+ }
837
+ }
838
+
839
+ return error;
840
+ }
841
+
842
+
843
+ static FT_Error
844
+ cff_parse_cid_ros( CFF_Parser parser )
845
+ {
846
+ CFF_FontRecDict dict = (CFF_FontRecDict)parser->object;
847
+ FT_Byte** data = parser->stack;
848
+ FT_Error error;
849
+
850
+
851
+ error = FT_ERR( Stack_Underflow );
852
+
853
+ if ( parser->top >= parser->stack + 3 )
854
+ {
855
+ dict->cid_registry = (FT_UInt)cff_parse_num( parser, data++ );
856
+ dict->cid_ordering = (FT_UInt)cff_parse_num( parser, data++ );
857
+ if ( **data == 30 )
858
+ FT_TRACE1(( "cff_parse_cid_ros: real supplement is rounded\n" ));
859
+ dict->cid_supplement = cff_parse_num( parser, data );
860
+ if ( dict->cid_supplement < 0 )
861
+ FT_TRACE1(( "cff_parse_cid_ros: negative supplement %d is found\n",
862
+ dict->cid_supplement ));
863
+ error = FT_Err_Ok;
864
+
865
+ FT_TRACE4(( " %d %d %d\n",
866
+ dict->cid_registry,
867
+ dict->cid_ordering,
868
+ dict->cid_supplement ));
869
+ }
870
+
871
+ return error;
872
+ }
873
+
874
+
875
+ static FT_Error
876
+ cff_parse_vsindex( CFF_Parser parser )
877
+ {
878
+ /* vsindex operator can only be used in a Private DICT */
879
+ CFF_Private priv = (CFF_Private)parser->object;
880
+ FT_Byte** data = parser->stack;
881
+ CFF_Blend blend;
882
+ FT_Error error;
883
+
884
+
885
+ if ( !priv || !priv->subfont )
886
+ {
887
+ error = FT_THROW( Invalid_File_Format );
888
+ goto Exit;
889
+ }
890
+
891
+ blend = &priv->subfont->blend;
892
+
893
+ if ( blend->usedBV )
894
+ {
895
+ FT_ERROR(( " cff_parse_vsindex: vsindex not allowed after blend\n" ));
896
+ error = FT_THROW( Syntax_Error );
897
+ goto Exit;
898
+ }
899
+
900
+ priv->vsindex = (FT_UInt)cff_parse_num( parser, data++ );
901
+
902
+ FT_TRACE4(( " %d\n", priv->vsindex ));
903
+
904
+ error = FT_Err_Ok;
905
+
906
+ Exit:
907
+ return error;
908
+ }
909
+
910
+
911
+ static FT_Error
912
+ cff_parse_blend( CFF_Parser parser )
913
+ {
914
+ /* blend operator can only be used in a Private DICT */
915
+ CFF_Private priv = (CFF_Private)parser->object;
916
+ CFF_SubFont subFont;
917
+ CFF_Blend blend;
918
+ FT_UInt numBlends;
919
+ FT_Error error;
920
+
921
+
922
+ if ( !priv || !priv->subfont )
923
+ {
924
+ error = FT_THROW( Invalid_File_Format );
925
+ goto Exit;
926
+ }
927
+
928
+ subFont = priv->subfont;
929
+ blend = &subFont->blend;
930
+
931
+ if ( cff_blend_check_vector( blend,
932
+ priv->vsindex,
933
+ subFont->lenNDV,
934
+ subFont->NDV ) )
935
+ {
936
+ error = cff_blend_build_vector( blend,
937
+ priv->vsindex,
938
+ subFont->lenNDV,
939
+ subFont->NDV );
940
+ if ( error )
941
+ goto Exit;
942
+ }
943
+
944
+ numBlends = (FT_UInt)cff_parse_num( parser, parser->top - 1 );
945
+ if ( numBlends > parser->stackSize )
946
+ {
947
+ FT_ERROR(( "cff_parse_blend: Invalid number of blends\n" ));
948
+ error = FT_THROW( Invalid_File_Format );
949
+ goto Exit;
950
+ }
951
+
952
+ FT_TRACE4(( " %d value%s blended\n",
953
+ numBlends,
954
+ numBlends == 1 ? "" : "s" ));
955
+
956
+ error = cff_blend_doBlend( subFont, parser, numBlends );
957
+
958
+ blend->usedBV = TRUE;
959
+
960
+ Exit:
961
+ return error;
962
+ }
963
+
964
+
965
+ /* maxstack operator increases parser and operand stacks for CFF2 */
966
+ static FT_Error
967
+ cff_parse_maxstack( CFF_Parser parser )
968
+ {
969
+ /* maxstack operator can only be used in a Top DICT */
970
+ CFF_FontRecDict dict = (CFF_FontRecDict)parser->object;
971
+ FT_Byte** data = parser->stack;
972
+ FT_Error error = FT_Err_Ok;
973
+
974
+
975
+ if ( !dict )
976
+ {
977
+ error = FT_THROW( Invalid_File_Format );
978
+ goto Exit;
979
+ }
980
+
981
+ dict->maxstack = (FT_UInt)cff_parse_num( parser, data++ );
982
+ if ( dict->maxstack > CFF2_MAX_STACK )
983
+ dict->maxstack = CFF2_MAX_STACK;
984
+ if ( dict->maxstack < CFF2_DEFAULT_STACK )
985
+ dict->maxstack = CFF2_DEFAULT_STACK;
986
+
987
+ FT_TRACE4(( " %d\n", dict->maxstack ));
988
+
989
+ Exit:
990
+ return error;
991
+ }
992
+
993
+
994
+ #define CFF_FIELD_NUM( code, name, id ) \
995
+ CFF_FIELD( code, name, id, cff_kind_num )
996
+ #define CFF_FIELD_FIXED( code, name, id ) \
997
+ CFF_FIELD( code, name, id, cff_kind_fixed )
998
+ #define CFF_FIELD_FIXED_1000( code, name, id ) \
999
+ CFF_FIELD( code, name, id, cff_kind_fixed_thousand )
1000
+ #define CFF_FIELD_STRING( code, name, id ) \
1001
+ CFF_FIELD( code, name, id, cff_kind_string )
1002
+ #define CFF_FIELD_BOOL( code, name, id ) \
1003
+ CFF_FIELD( code, name, id, cff_kind_bool )
1004
+
1005
+
1006
+ #ifndef FT_CONFIG_OPTION_PIC
1007
+
1008
+
1009
+ #undef CFF_FIELD
1010
+ #undef CFF_FIELD_DELTA
1011
+
1012
+
1013
+ #ifndef FT_DEBUG_LEVEL_TRACE
1014
+
1015
+
1016
+ #define CFF_FIELD_CALLBACK( code, name, id ) \
1017
+ { \
1018
+ cff_kind_callback, \
1019
+ code | CFFCODE, \
1020
+ 0, 0, \
1021
+ cff_parse_ ## name, \
1022
+ 0, 0 \
1023
+ },
1024
+
1025
+ #define CFF_FIELD_BLEND( code, id ) \
1026
+ { \
1027
+ cff_kind_blend, \
1028
+ code | CFFCODE, \
1029
+ 0, 0, \
1030
+ cff_parse_blend, \
1031
+ 0, 0 \
1032
+ },
1033
+
1034
+ #define CFF_FIELD( code, name, id, kind ) \
1035
+ { \
1036
+ kind, \
1037
+ code | CFFCODE, \
1038
+ FT_FIELD_OFFSET( name ), \
1039
+ FT_FIELD_SIZE( name ), \
1040
+ 0, 0, 0 \
1041
+ },
1042
+
1043
+ #define CFF_FIELD_DELTA( code, name, max, id ) \
1044
+ { \
1045
+ cff_kind_delta, \
1046
+ code | CFFCODE, \
1047
+ FT_FIELD_OFFSET( name ), \
1048
+ FT_FIELD_SIZE_DELTA( name ), \
1049
+ 0, \
1050
+ max, \
1051
+ FT_FIELD_OFFSET( num_ ## name ) \
1052
+ },
1053
+
1054
+ static const CFF_Field_Handler cff_field_handlers[] =
1055
+ {
1056
+
1057
+ #include "cfftoken.h"
1058
+
1059
+ { 0, 0, 0, 0, 0, 0, 0 }
1060
+ };
1061
+
1062
+
1063
+ #else /* FT_DEBUG_LEVEL_TRACE */
1064
+
1065
+
1066
+
1067
+ #define CFF_FIELD_CALLBACK( code, name, id ) \
1068
+ { \
1069
+ cff_kind_callback, \
1070
+ code | CFFCODE, \
1071
+ 0, 0, \
1072
+ cff_parse_ ## name, \
1073
+ 0, 0, \
1074
+ id \
1075
+ },
1076
+
1077
+ #define CFF_FIELD_BLEND( code, id ) \
1078
+ { \
1079
+ cff_kind_blend, \
1080
+ code | CFFCODE, \
1081
+ 0, 0, \
1082
+ cff_parse_blend, \
1083
+ 0, 0, \
1084
+ id \
1085
+ },
1086
+
1087
+ #define CFF_FIELD( code, name, id, kind ) \
1088
+ { \
1089
+ kind, \
1090
+ code | CFFCODE, \
1091
+ FT_FIELD_OFFSET( name ), \
1092
+ FT_FIELD_SIZE( name ), \
1093
+ 0, 0, 0, \
1094
+ id \
1095
+ },
1096
+
1097
+ #define CFF_FIELD_DELTA( code, name, max, id ) \
1098
+ { \
1099
+ cff_kind_delta, \
1100
+ code | CFFCODE, \
1101
+ FT_FIELD_OFFSET( name ), \
1102
+ FT_FIELD_SIZE_DELTA( name ), \
1103
+ 0, \
1104
+ max, \
1105
+ FT_FIELD_OFFSET( num_ ## name ), \
1106
+ id \
1107
+ },
1108
+
1109
+ static const CFF_Field_Handler cff_field_handlers[] =
1110
+ {
1111
+
1112
+ #include "cfftoken.h"
1113
+
1114
+ { 0, 0, 0, 0, 0, 0, 0, 0 }
1115
+ };
1116
+
1117
+
1118
+ #endif /* FT_DEBUG_LEVEL_TRACE */
1119
+
1120
+
1121
+ #else /* FT_CONFIG_OPTION_PIC */
1122
+
1123
+
1124
+ void
1125
+ FT_Destroy_Class_cff_field_handlers( FT_Library library,
1126
+ CFF_Field_Handler* clazz )
1127
+ {
1128
+ FT_Memory memory = library->memory;
1129
+
1130
+
1131
+ if ( clazz )
1132
+ FT_FREE( clazz );
1133
+ }
1134
+
1135
+
1136
+ FT_Error
1137
+ FT_Create_Class_cff_field_handlers( FT_Library library,
1138
+ CFF_Field_Handler** output_class )
1139
+ {
1140
+ CFF_Field_Handler* clazz = NULL;
1141
+ FT_Error error;
1142
+ FT_Memory memory = library->memory;
1143
+
1144
+ int i = 0;
1145
+
1146
+
1147
+ #undef CFF_FIELD
1148
+ #define CFF_FIELD( code, name, id, kind ) i++;
1149
+ #undef CFF_FIELD_DELTA
1150
+ #define CFF_FIELD_DELTA( code, name, max, id ) i++;
1151
+ #undef CFF_FIELD_CALLBACK
1152
+ #define CFF_FIELD_CALLBACK( code, name, id ) i++;
1153
+ #undef CFF_FIELD_BLEND
1154
+ #define CFF_FIELD_BLEND( code, id ) i++;
1155
+
1156
+ #include "cfftoken.h"
1157
+
1158
+ i++; /* { 0, 0, 0, 0, 0, 0, 0 } */
1159
+
1160
+ if ( FT_ALLOC( clazz, sizeof ( CFF_Field_Handler ) * i ) )
1161
+ return error;
1162
+
1163
+ i = 0;
1164
+
1165
+
1166
+ #ifndef FT_DEBUG_LEVEL_TRACE
1167
+
1168
+
1169
+ #undef CFF_FIELD_CALLBACK
1170
+ #define CFF_FIELD_CALLBACK( code_, name_, id_ ) \
1171
+ clazz[i].kind = cff_kind_callback; \
1172
+ clazz[i].code = code_ | CFFCODE; \
1173
+ clazz[i].offset = 0; \
1174
+ clazz[i].size = 0; \
1175
+ clazz[i].reader = cff_parse_ ## name_; \
1176
+ clazz[i].array_max = 0; \
1177
+ clazz[i].count_offset = 0; \
1178
+ i++;
1179
+
1180
+ #undef CFF_FIELD
1181
+ #define CFF_FIELD( code_, name_, id_, kind_ ) \
1182
+ clazz[i].kind = kind_; \
1183
+ clazz[i].code = code_ | CFFCODE; \
1184
+ clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
1185
+ clazz[i].size = FT_FIELD_SIZE( name_ ); \
1186
+ clazz[i].reader = 0; \
1187
+ clazz[i].array_max = 0; \
1188
+ clazz[i].count_offset = 0; \
1189
+ i++; \
1190
+
1191
+ #undef CFF_FIELD_DELTA
1192
+ #define CFF_FIELD_DELTA( code_, name_, max_, id_ ) \
1193
+ clazz[i].kind = cff_kind_delta; \
1194
+ clazz[i].code = code_ | CFFCODE; \
1195
+ clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
1196
+ clazz[i].size = FT_FIELD_SIZE_DELTA( name_ ); \
1197
+ clazz[i].reader = 0; \
1198
+ clazz[i].array_max = max_; \
1199
+ clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
1200
+ i++;
1201
+
1202
+ #undef CFF_FIELD_BLEND
1203
+ #define CFF_FIELD_BLEND( code_, id_ ) \
1204
+ clazz[i].kind = cff_kind_blend; \
1205
+ clazz[i].code = code_ | CFFCODE; \
1206
+ clazz[i].offset = 0; \
1207
+ clazz[i].size = 0; \
1208
+ clazz[i].reader = cff_parse_blend; \
1209
+ clazz[i].array_max = 0; \
1210
+ clazz[i].count_offset = 0; \
1211
+ i++;
1212
+
1213
+ #include "cfftoken.h"
1214
+
1215
+ clazz[i].kind = 0;
1216
+ clazz[i].code = 0;
1217
+ clazz[i].offset = 0;
1218
+ clazz[i].size = 0;
1219
+ clazz[i].reader = 0;
1220
+ clazz[i].array_max = 0;
1221
+ clazz[i].count_offset = 0;
1222
+
1223
+
1224
+ #else /* FT_DEBUG_LEVEL_TRACE */
1225
+
1226
+
1227
+ #undef CFF_FIELD_CALLBACK
1228
+ #define CFF_FIELD_CALLBACK( code_, name_, id_ ) \
1229
+ clazz[i].kind = cff_kind_callback; \
1230
+ clazz[i].code = code_ | CFFCODE; \
1231
+ clazz[i].offset = 0; \
1232
+ clazz[i].size = 0; \
1233
+ clazz[i].reader = cff_parse_ ## name_; \
1234
+ clazz[i].array_max = 0; \
1235
+ clazz[i].count_offset = 0; \
1236
+ clazz[i].id = id_; \
1237
+ i++;
1238
+
1239
+ #undef CFF_FIELD
1240
+ #define CFF_FIELD( code_, name_, id_, kind_ ) \
1241
+ clazz[i].kind = kind_; \
1242
+ clazz[i].code = code_ | CFFCODE; \
1243
+ clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
1244
+ clazz[i].size = FT_FIELD_SIZE( name_ ); \
1245
+ clazz[i].reader = 0; \
1246
+ clazz[i].array_max = 0; \
1247
+ clazz[i].count_offset = 0; \
1248
+ clazz[i].id = id_; \
1249
+ i++; \
1250
+
1251
+ #undef CFF_FIELD_DELTA
1252
+ #define CFF_FIELD_DELTA( code_, name_, max_, id_ ) \
1253
+ clazz[i].kind = cff_kind_delta; \
1254
+ clazz[i].code = code_ | CFFCODE; \
1255
+ clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
1256
+ clazz[i].size = FT_FIELD_SIZE_DELTA( name_ ); \
1257
+ clazz[i].reader = 0; \
1258
+ clazz[i].array_max = max_; \
1259
+ clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
1260
+ clazz[i].id = id_; \
1261
+ i++;
1262
+
1263
+ #undef CFF_FIELD_BLEND
1264
+ #define CFF_FIELD_BLEND( code_, id_ ) \
1265
+ clazz[i].kind = cff_kind_blend; \
1266
+ clazz[i].code = code_ | CFFCODE; \
1267
+ clazz[i].offset = 0; \
1268
+ clazz[i].size = 0; \
1269
+ clazz[i].reader = cff_parse_blend; \
1270
+ clazz[i].array_max = 0; \
1271
+ clazz[i].count_offset = 0; \
1272
+ clazz[i].id = id_; \
1273
+ i++;
1274
+
1275
+ #include "cfftoken.h"
1276
+
1277
+ clazz[i].kind = 0;
1278
+ clazz[i].code = 0;
1279
+ clazz[i].offset = 0;
1280
+ clazz[i].size = 0;
1281
+ clazz[i].reader = 0;
1282
+ clazz[i].array_max = 0;
1283
+ clazz[i].count_offset = 0;
1284
+ clazz[i].id = 0;
1285
+
1286
+
1287
+ #endif /* FT_DEBUG_LEVEL_TRACE */
1288
+
1289
+
1290
+ *output_class = clazz;
1291
+
1292
+ return FT_Err_Ok;
1293
+ }
1294
+
1295
+
1296
+ #endif /* FT_CONFIG_OPTION_PIC */
1297
+
1298
+
1299
+ FT_LOCAL_DEF( FT_Error )
1300
+ cff_parser_run( CFF_Parser parser,
1301
+ FT_Byte* start,
1302
+ FT_Byte* limit )
1303
+ {
1304
+ #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
1305
+ PSAux_Service psaux;
1306
+ #endif
1307
+
1308
+ FT_Byte* p = start;
1309
+ FT_Error error = FT_Err_Ok;
1310
+ FT_Library library = parser->library;
1311
+
1312
+ FT_UNUSED( library );
1313
+
1314
+
1315
+ parser->top = parser->stack;
1316
+ parser->start = start;
1317
+ parser->limit = limit;
1318
+ parser->cursor = start;
1319
+
1320
+ while ( p < limit )
1321
+ {
1322
+ FT_UInt v = *p;
1323
+
1324
+ /* Opcode 31 is legacy MM T2 operator, not a number. */
1325
+ /* Opcode 255 is reserved and should not appear in fonts; */
1326
+ /* it is used internally for CFF2 blends. */
1327
+ if ( v >= 27 && v != 31 && v != 255 )
1328
+ {
1329
+ /* it's a number; we will push its position on the stack */
1330
+ if ( (FT_UInt)( parser->top - parser->stack ) >= parser->stackSize )
1331
+ goto Stack_Overflow;
1332
+
1333
+ *parser->top++ = p;
1334
+
1335
+ /* now, skip it */
1336
+ if ( v == 30 )
1337
+ {
1338
+ /* skip real number */
1339
+ p++;
1340
+ for (;;)
1341
+ {
1342
+ /* An unterminated floating point number at the */
1343
+ /* end of a dictionary is invalid but harmless. */
1344
+ if ( p >= limit )
1345
+ goto Exit;
1346
+ v = p[0] >> 4;
1347
+ if ( v == 15 )
1348
+ break;
1349
+ v = p[0] & 0xF;
1350
+ if ( v == 15 )
1351
+ break;
1352
+ p++;
1353
+ }
1354
+ }
1355
+ else if ( v == 28 )
1356
+ p += 2;
1357
+ else if ( v == 29 )
1358
+ p += 4;
1359
+ else if ( v > 246 )
1360
+ p += 1;
1361
+ }
1362
+ #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
1363
+ else if ( v == 31 )
1364
+ {
1365
+ /* a Type 2 charstring */
1366
+
1367
+ CFF_Decoder decoder;
1368
+ CFF_FontRec cff_rec;
1369
+ FT_Byte* charstring_base;
1370
+ FT_ULong charstring_len;
1371
+
1372
+ FT_Fixed* stack;
1373
+ FT_Byte* q;
1374
+
1375
+
1376
+ charstring_base = ++p;
1377
+
1378
+ /* search `endchar' operator */
1379
+ for (;;)
1380
+ {
1381
+ if ( p >= limit )
1382
+ goto Exit;
1383
+ if ( *p == 14 )
1384
+ break;
1385
+ p++;
1386
+ }
1387
+
1388
+ charstring_len = (FT_ULong)( p - charstring_base ) + 1;
1389
+
1390
+ /* construct CFF_Decoder object */
1391
+ FT_ZERO( &decoder );
1392
+ FT_ZERO( &cff_rec );
1393
+
1394
+ cff_rec.top_font.font_dict.num_designs = parser->num_designs;
1395
+ cff_rec.top_font.font_dict.num_axes = parser->num_axes;
1396
+ decoder.cff = &cff_rec;
1397
+
1398
+ psaux = (PSAux_Service)FT_Get_Module_Interface( library, "psaux" );
1399
+ if ( !psaux )
1400
+ {
1401
+ FT_ERROR(( "cff_parser_run: cannot access `psaux' module\n" ));
1402
+ error = FT_THROW( Missing_Module );
1403
+ goto Exit;
1404
+ }
1405
+
1406
+ error = psaux->cff_decoder_funcs->parse_charstrings_old(
1407
+ &decoder, charstring_base, charstring_len, 1 );
1408
+
1409
+ /* Now copy the stack data in the temporary decoder object, */
1410
+ /* converting it back to charstring number representations */
1411
+ /* (this is ugly, I know). */
1412
+ /* */
1413
+ /* We overwrite the original top DICT charstring under the */
1414
+ /* assumption that the charstring representation of the result */
1415
+ /* of `cff_decoder_parse_charstrings' is shorter, which should */
1416
+ /* be always true. */
1417
+
1418
+ q = charstring_base - 1;
1419
+ stack = decoder.stack;
1420
+
1421
+ while ( stack < decoder.top )
1422
+ {
1423
+ FT_ULong num;
1424
+ FT_Bool neg;
1425
+
1426
+
1427
+ if ( (FT_UInt)( parser->top - parser->stack ) >= parser->stackSize )
1428
+ goto Stack_Overflow;
1429
+
1430
+ *parser->top++ = q;
1431
+
1432
+ if ( *stack < 0 )
1433
+ {
1434
+ num = (FT_ULong)-*stack;
1435
+ neg = 1;
1436
+ }
1437
+ else
1438
+ {
1439
+ num = (FT_ULong)*stack;
1440
+ neg = 0;
1441
+ }
1442
+
1443
+ if ( num & 0xFFFFU )
1444
+ {
1445
+ if ( neg )
1446
+ num = (FT_ULong)-num;
1447
+
1448
+ *q++ = 255;
1449
+ *q++ = ( num & 0xFF000000U ) >> 24;
1450
+ *q++ = ( num & 0x00FF0000U ) >> 16;
1451
+ *q++ = ( num & 0x0000FF00U ) >> 8;
1452
+ *q++ = num & 0x000000FFU;
1453
+ }
1454
+ else
1455
+ {
1456
+ num >>= 16;
1457
+
1458
+ if ( neg )
1459
+ {
1460
+ if ( num <= 107 )
1461
+ *q++ = (FT_Byte)( 139 - num );
1462
+ else if ( num <= 1131 )
1463
+ {
1464
+ *q++ = (FT_Byte)( ( ( num - 108 ) >> 8 ) + 251 );
1465
+ *q++ = (FT_Byte)( ( num - 108 ) & 0xFF );
1466
+ }
1467
+ else
1468
+ {
1469
+ num = (FT_ULong)-num;
1470
+
1471
+ *q++ = 28;
1472
+ *q++ = (FT_Byte)( num >> 8 );
1473
+ *q++ = (FT_Byte)( num & 0xFF );
1474
+ }
1475
+ }
1476
+ else
1477
+ {
1478
+ if ( num <= 107 )
1479
+ *q++ = (FT_Byte)( num + 139 );
1480
+ else if ( num <= 1131 )
1481
+ {
1482
+ *q++ = (FT_Byte)( ( ( num - 108 ) >> 8 ) + 247 );
1483
+ *q++ = (FT_Byte)( ( num - 108 ) & 0xFF );
1484
+ }
1485
+ else
1486
+ {
1487
+ *q++ = 28;
1488
+ *q++ = (FT_Byte)( num >> 8 );
1489
+ *q++ = (FT_Byte)( num & 0xFF );
1490
+ }
1491
+ }
1492
+ }
1493
+
1494
+ stack++;
1495
+ }
1496
+ }
1497
+ #endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
1498
+ else
1499
+ {
1500
+ /* This is not a number, hence it's an operator. Compute its code */
1501
+ /* and look for it in our current list. */
1502
+
1503
+ FT_UInt code;
1504
+ FT_UInt num_args;
1505
+ const CFF_Field_Handler* field;
1506
+
1507
+
1508
+ if ( (FT_UInt)( parser->top - parser->stack ) >= parser->stackSize )
1509
+ goto Stack_Overflow;
1510
+
1511
+ num_args = (FT_UInt)( parser->top - parser->stack );
1512
+ *parser->top = p;
1513
+ code = v;
1514
+
1515
+ if ( v == 12 )
1516
+ {
1517
+ /* two byte operator */
1518
+ p++;
1519
+ if ( p >= limit )
1520
+ goto Syntax_Error;
1521
+
1522
+ code = 0x100 | p[0];
1523
+ }
1524
+ code = code | parser->object_code;
1525
+
1526
+ for ( field = CFF_FIELD_HANDLERS_GET; field->kind; field++ )
1527
+ {
1528
+ if ( field->code == (FT_Int)code )
1529
+ {
1530
+ /* we found our field's handler; read it */
1531
+ FT_Long val;
1532
+ FT_Byte* q = (FT_Byte*)parser->object + field->offset;
1533
+
1534
+
1535
+ #ifdef FT_DEBUG_LEVEL_TRACE
1536
+ FT_TRACE4(( " %s", field->id ));
1537
+ #endif
1538
+
1539
+ /* check that we have enough arguments -- except for */
1540
+ /* delta encoded arrays, which can be empty */
1541
+ if ( field->kind != cff_kind_delta && num_args < 1 )
1542
+ goto Stack_Underflow;
1543
+
1544
+ switch ( field->kind )
1545
+ {
1546
+ case cff_kind_bool:
1547
+ case cff_kind_string:
1548
+ case cff_kind_num:
1549
+ val = cff_parse_num( parser, parser->stack );
1550
+ goto Store_Number;
1551
+
1552
+ case cff_kind_fixed:
1553
+ val = cff_parse_fixed( parser, parser->stack );
1554
+ goto Store_Number;
1555
+
1556
+ case cff_kind_fixed_thousand:
1557
+ val = cff_parse_fixed_scaled( parser, parser->stack, 3 );
1558
+
1559
+ Store_Number:
1560
+ switch ( field->size )
1561
+ {
1562
+ case (8 / FT_CHAR_BIT):
1563
+ *(FT_Byte*)q = (FT_Byte)val;
1564
+ break;
1565
+
1566
+ case (16 / FT_CHAR_BIT):
1567
+ *(FT_Short*)q = (FT_Short)val;
1568
+ break;
1569
+
1570
+ case (32 / FT_CHAR_BIT):
1571
+ *(FT_Int32*)q = (FT_Int)val;
1572
+ break;
1573
+
1574
+ default: /* for 64-bit systems */
1575
+ *(FT_Long*)q = val;
1576
+ }
1577
+
1578
+ #ifdef FT_DEBUG_LEVEL_TRACE
1579
+ switch ( field->kind )
1580
+ {
1581
+ case cff_kind_bool:
1582
+ FT_TRACE4(( " %s\n", val ? "true" : "false" ));
1583
+ break;
1584
+
1585
+ case cff_kind_string:
1586
+ FT_TRACE4(( " %ld (SID)\n", val ));
1587
+ break;
1588
+
1589
+ case cff_kind_num:
1590
+ FT_TRACE4(( " %ld\n", val ));
1591
+ break;
1592
+
1593
+ case cff_kind_fixed:
1594
+ FT_TRACE4(( " %f\n", (double)val / 65536 ));
1595
+ break;
1596
+
1597
+ case cff_kind_fixed_thousand:
1598
+ FT_TRACE4(( " %f\n", (double)val / 65536 / 1000 ));
1599
+
1600
+ default:
1601
+ ; /* never reached */
1602
+ }
1603
+ #endif
1604
+
1605
+ break;
1606
+
1607
+ case cff_kind_delta:
1608
+ {
1609
+ FT_Byte* qcount = (FT_Byte*)parser->object +
1610
+ field->count_offset;
1611
+
1612
+ FT_Byte** data = parser->stack;
1613
+
1614
+
1615
+ if ( num_args > field->array_max )
1616
+ num_args = field->array_max;
1617
+
1618
+ FT_TRACE4(( " [" ));
1619
+
1620
+ /* store count */
1621
+ *qcount = (FT_Byte)num_args;
1622
+
1623
+ val = 0;
1624
+ while ( num_args > 0 )
1625
+ {
1626
+ val = ADD_LONG( val, cff_parse_num( parser, data++ ) );
1627
+ switch ( field->size )
1628
+ {
1629
+ case (8 / FT_CHAR_BIT):
1630
+ *(FT_Byte*)q = (FT_Byte)val;
1631
+ break;
1632
+
1633
+ case (16 / FT_CHAR_BIT):
1634
+ *(FT_Short*)q = (FT_Short)val;
1635
+ break;
1636
+
1637
+ case (32 / FT_CHAR_BIT):
1638
+ *(FT_Int32*)q = (FT_Int)val;
1639
+ break;
1640
+
1641
+ default: /* for 64-bit systems */
1642
+ *(FT_Long*)q = val;
1643
+ }
1644
+
1645
+ FT_TRACE4(( " %ld", val ));
1646
+
1647
+ q += field->size;
1648
+ num_args--;
1649
+ }
1650
+
1651
+ FT_TRACE4(( "]\n" ));
1652
+ }
1653
+ break;
1654
+
1655
+ default: /* callback or blend */
1656
+ error = field->reader( parser );
1657
+ if ( error )
1658
+ goto Exit;
1659
+ }
1660
+ goto Found;
1661
+ }
1662
+ }
1663
+
1664
+ /* this is an unknown operator, or it is unsupported; */
1665
+ /* we will ignore it for now. */
1666
+
1667
+ Found:
1668
+ /* clear stack */
1669
+ /* TODO: could clear blend stack here, */
1670
+ /* but we don't have access to subFont */
1671
+ if ( field->kind != cff_kind_blend )
1672
+ parser->top = parser->stack;
1673
+ }
1674
+ p++;
1675
+ }
1676
+
1677
+ Exit:
1678
+ return error;
1679
+
1680
+ Stack_Overflow:
1681
+ error = FT_THROW( Invalid_Argument );
1682
+ goto Exit;
1683
+
1684
+ Stack_Underflow:
1685
+ error = FT_THROW( Invalid_Argument );
1686
+ goto Exit;
1687
+
1688
+ Syntax_Error:
1689
+ error = FT_THROW( Invalid_Argument );
1690
+ goto Exit;
1691
+ }
1692
+
1693
+
1694
+ /* END */