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,38 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* sfdriver.h */
4
+ /* */
5
+ /* High-level SFNT driver interface (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 SFDRIVER_H_
20
+ #define SFDRIVER_H_
21
+
22
+
23
+ #include <ft2build.h>
24
+ #include FT_MODULE_H
25
+
26
+
27
+ FT_BEGIN_HEADER
28
+
29
+
30
+ FT_DECLARE_MODULE( sfnt_module_class )
31
+
32
+
33
+ FT_END_HEADER
34
+
35
+ #endif /* SFDRIVER_H_ */
36
+
37
+
38
+ /* END */
@@ -0,0 +1,41 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* sferrors.h */
4
+ /* */
5
+ /* SFNT error codes (specification only). */
6
+ /* */
7
+ /* Copyright 2001-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
+ /*************************************************************************/
20
+ /* */
21
+ /* This file is used to define the SFNT error enumeration constants. */
22
+ /* */
23
+ /*************************************************************************/
24
+
25
+ #ifndef SFERRORS_H_
26
+ #define SFERRORS_H_
27
+
28
+ #include FT_MODULE_ERRORS_H
29
+
30
+ #undef FTERRORS_H_
31
+
32
+ #undef FT_ERR_PREFIX
33
+ #define FT_ERR_PREFIX SFNT_Err_
34
+ #define FT_ERR_BASE FT_Mod_Err_SFNT
35
+
36
+ #include FT_ERRORS_H
37
+
38
+ #endif /* SFERRORS_H_ */
39
+
40
+
41
+ /* END */
@@ -0,0 +1,35 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* sfnt.c */
4
+ /* */
5
+ /* Single object library component. */
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
+ #define FT_MAKE_OPTION_SINGLE_OBJECT
20
+ #include <ft2build.h>
21
+
22
+ #include "pngshim.c"
23
+ #include "sfdriver.c"
24
+ #include "sfntpic.c"
25
+ #include "sfobjs.c"
26
+ #include "ttbdf.c"
27
+ #include "ttcmap.c"
28
+ #include "ttkern.c"
29
+ #include "ttload.c"
30
+ #include "ttmtx.c"
31
+ #include "ttpost.c"
32
+ #include "ttsbit.c"
33
+
34
+
35
+ /* END */
@@ -0,0 +1,143 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* sfntpic.c */
4
+ /* */
5
+ /* The FreeType position independent code services for sfnt module. */
6
+ /* */
7
+ /* Copyright 2009-2018 by */
8
+ /* Oran Agra and Mickey Gabel. */
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 FT_FREETYPE_H
21
+ #include FT_INTERNAL_OBJECTS_H
22
+ #include "sfntpic.h"
23
+ #include "sferrors.h"
24
+
25
+
26
+ #ifdef FT_CONFIG_OPTION_PIC
27
+
28
+ /* forward declaration of PIC init functions from sfdriver.c */
29
+ FT_Error
30
+ FT_Create_Class_sfnt_services( FT_Library library,
31
+ FT_ServiceDescRec** output_class );
32
+ void
33
+ FT_Destroy_Class_sfnt_services( FT_Library library,
34
+ FT_ServiceDescRec* clazz );
35
+ void
36
+ FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec* clazz );
37
+ void
38
+ FT_Init_Class_sfnt_interface( FT_Library library,
39
+ SFNT_Interface* clazz );
40
+ void
41
+ FT_Init_Class_sfnt_service_glyph_dict(
42
+ FT_Library library,
43
+ FT_Service_GlyphDictRec* clazz );
44
+ void
45
+ FT_Init_Class_sfnt_service_ps_name(
46
+ FT_Library library,
47
+ FT_Service_PsFontNameRec* clazz );
48
+ void
49
+ FT_Init_Class_tt_service_get_cmap_info(
50
+ FT_Library library,
51
+ FT_Service_TTCMapsRec* clazz );
52
+ void
53
+ FT_Init_Class_sfnt_service_sfnt_table(
54
+ FT_Service_SFNT_TableRec* clazz );
55
+
56
+
57
+ /* forward declaration of PIC init functions from ttcmap.c */
58
+ FT_Error
59
+ FT_Create_Class_tt_cmap_classes( FT_Library library,
60
+ TT_CMap_Class** output_class );
61
+ void
62
+ FT_Destroy_Class_tt_cmap_classes( FT_Library library,
63
+ TT_CMap_Class* clazz );
64
+
65
+
66
+ void
67
+ sfnt_module_class_pic_free( FT_Library library )
68
+ {
69
+ FT_PIC_Container* pic_container = &library->pic_container;
70
+ FT_Memory memory = library->memory;
71
+
72
+
73
+ if ( pic_container->sfnt )
74
+ {
75
+ sfntModulePIC* container = (sfntModulePIC*)pic_container->sfnt;
76
+
77
+
78
+ if ( container->sfnt_services )
79
+ FT_Destroy_Class_sfnt_services( library,
80
+ container->sfnt_services );
81
+ container->sfnt_services = NULL;
82
+
83
+ if ( container->tt_cmap_classes )
84
+ FT_Destroy_Class_tt_cmap_classes( library,
85
+ container->tt_cmap_classes );
86
+ container->tt_cmap_classes = NULL;
87
+
88
+ FT_FREE( container );
89
+ pic_container->sfnt = NULL;
90
+ }
91
+ }
92
+
93
+
94
+ FT_Error
95
+ sfnt_module_class_pic_init( FT_Library library )
96
+ {
97
+ FT_PIC_Container* pic_container = &library->pic_container;
98
+ FT_Error error = FT_Err_Ok;
99
+ sfntModulePIC* container = NULL;
100
+ FT_Memory memory = library->memory;
101
+
102
+
103
+ /* allocate pointer, clear and set global container pointer */
104
+ if ( FT_ALLOC( container, sizeof ( *container ) ) )
105
+ return error;
106
+ FT_MEM_SET( container, 0, sizeof ( *container ) );
107
+ pic_container->sfnt = container;
108
+
109
+ /* initialize pointer table - */
110
+ /* this is how the module usually expects this data */
111
+ error = FT_Create_Class_sfnt_services( library,
112
+ &container->sfnt_services );
113
+ if ( error )
114
+ goto Exit;
115
+
116
+ error = FT_Create_Class_tt_cmap_classes( library,
117
+ &container->tt_cmap_classes );
118
+ if ( error )
119
+ goto Exit;
120
+
121
+ FT_Init_Class_sfnt_service_glyph_dict(
122
+ library, &container->sfnt_service_glyph_dict );
123
+ FT_Init_Class_sfnt_service_ps_name(
124
+ library, &container->sfnt_service_ps_name );
125
+ FT_Init_Class_tt_service_get_cmap_info(
126
+ library, &container->tt_service_get_cmap_info );
127
+ FT_Init_Class_sfnt_service_sfnt_table(
128
+ &container->sfnt_service_sfnt_table );
129
+ #ifdef TT_CONFIG_OPTION_BDF
130
+ FT_Init_Class_sfnt_service_bdf( &container->sfnt_service_bdf );
131
+ #endif
132
+ FT_Init_Class_sfnt_interface( library, &container->sfnt_interface );
133
+
134
+ Exit:
135
+ if ( error )
136
+ sfnt_module_class_pic_free( library );
137
+ return error;
138
+ }
139
+
140
+ #endif /* FT_CONFIG_OPTION_PIC */
141
+
142
+
143
+ /* END */
@@ -0,0 +1,112 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* sfntpic.h */
4
+ /* */
5
+ /* The FreeType position independent code services for sfnt module. */
6
+ /* */
7
+ /* Copyright 2009-2018 by */
8
+ /* Oran Agra and Mickey Gabel. */
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 SFNTPIC_H_
20
+ #define SFNTPIC_H_
21
+
22
+
23
+ #include FT_INTERNAL_PIC_H
24
+
25
+
26
+ #ifndef FT_CONFIG_OPTION_PIC
27
+
28
+ #define SFNT_SERVICES_GET sfnt_services
29
+ #define SFNT_SERVICE_GLYPH_DICT_GET sfnt_service_glyph_dict
30
+ #define SFNT_SERVICE_PS_NAME_GET sfnt_service_ps_name
31
+ #define TT_SERVICE_CMAP_INFO_GET tt_service_get_cmap_info
32
+ #define TT_CMAP_CLASSES_GET tt_cmap_classes
33
+ #define SFNT_SERVICE_SFNT_TABLE_GET sfnt_service_sfnt_table
34
+ #define SFNT_SERVICE_BDF_GET sfnt_service_bdf
35
+ #define SFNT_INTERFACE_GET sfnt_interface
36
+
37
+ #else /* FT_CONFIG_OPTION_PIC */
38
+
39
+ /* some include files required for members of sfntModulePIC */
40
+ #include FT_SERVICE_GLYPH_DICT_H
41
+ #include FT_SERVICE_POSTSCRIPT_NAME_H
42
+ #include FT_SERVICE_SFNT_H
43
+ #include FT_SERVICE_TT_CMAP_H
44
+
45
+ #ifdef TT_CONFIG_OPTION_BDF
46
+ #include "ttbdf.h"
47
+ #include FT_SERVICE_BDF_H
48
+ #endif
49
+
50
+ #include FT_INTERNAL_DEBUG_H
51
+ #include FT_INTERNAL_STREAM_H
52
+ #include FT_INTERNAL_SFNT_H
53
+ #include "ttcmap.h"
54
+
55
+
56
+ FT_BEGIN_HEADER
57
+
58
+ typedef struct sfntModulePIC_
59
+ {
60
+ FT_ServiceDescRec* sfnt_services;
61
+ FT_Service_GlyphDictRec sfnt_service_glyph_dict;
62
+ FT_Service_PsFontNameRec sfnt_service_ps_name;
63
+ FT_Service_TTCMapsRec tt_service_get_cmap_info;
64
+ TT_CMap_Class* tt_cmap_classes;
65
+ FT_Service_SFNT_TableRec sfnt_service_sfnt_table;
66
+ #ifdef TT_CONFIG_OPTION_BDF
67
+ FT_Service_BDFRec sfnt_service_bdf;
68
+ #endif
69
+ SFNT_Interface sfnt_interface;
70
+
71
+ } sfntModulePIC;
72
+
73
+
74
+ #define GET_PIC( lib ) \
75
+ ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) )
76
+
77
+ #define SFNT_SERVICES_GET \
78
+ ( GET_PIC( library )->sfnt_services )
79
+ #define SFNT_SERVICE_GLYPH_DICT_GET \
80
+ ( GET_PIC( library )->sfnt_service_glyph_dict )
81
+ #define SFNT_SERVICE_PS_NAME_GET \
82
+ ( GET_PIC( library )->sfnt_service_ps_name )
83
+ #define TT_SERVICE_CMAP_INFO_GET \
84
+ ( GET_PIC( library )->tt_service_get_cmap_info )
85
+ #define TT_CMAP_CLASSES_GET \
86
+ ( GET_PIC( library )->tt_cmap_classes )
87
+ #define SFNT_SERVICE_SFNT_TABLE_GET \
88
+ ( GET_PIC( library )->sfnt_service_sfnt_table )
89
+ #define SFNT_SERVICE_BDF_GET \
90
+ ( GET_PIC( library )->sfnt_service_bdf )
91
+ #define SFNT_INTERFACE_GET \
92
+ ( GET_PIC( library )->sfnt_interface )
93
+
94
+
95
+ /* see sfntpic.c for the implementation */
96
+ void
97
+ sfnt_module_class_pic_free( FT_Library library );
98
+
99
+ FT_Error
100
+ sfnt_module_class_pic_init( FT_Library library );
101
+
102
+
103
+ FT_END_HEADER
104
+
105
+ #endif /* FT_CONFIG_OPTION_PIC */
106
+
107
+ /* */
108
+
109
+ #endif /* SFNTPIC_H_ */
110
+
111
+
112
+ /* END */
@@ -0,0 +1,1804 @@
1
+ /***************************************************************************/
2
+ /* */
3
+ /* sfobjs.c */
4
+ /* */
5
+ /* SFNT object management (base). */
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 "sfobjs.h"
21
+ #include "ttload.h"
22
+ #include "ttcmap.h"
23
+ #include "ttkern.h"
24
+ #include FT_INTERNAL_SFNT_H
25
+ #include FT_INTERNAL_DEBUG_H
26
+ #include FT_TRUETYPE_IDS_H
27
+ #include FT_TRUETYPE_TAGS_H
28
+ #include FT_SERVICE_POSTSCRIPT_CMAPS_H
29
+ #include FT_SFNT_NAMES_H
30
+ #include FT_GZIP_H
31
+
32
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
33
+ #include FT_SERVICE_MULTIPLE_MASTERS_H
34
+ #include FT_SERVICE_METRICS_VARIATIONS_H
35
+ #endif
36
+
37
+ #include "sferrors.h"
38
+
39
+ #ifdef TT_CONFIG_OPTION_BDF
40
+ #include "ttbdf.h"
41
+ #endif
42
+
43
+
44
+ /*************************************************************************/
45
+ /* */
46
+ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */
47
+ /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
48
+ /* messages during execution. */
49
+ /* */
50
+ #undef FT_COMPONENT
51
+ #define FT_COMPONENT trace_sfobjs
52
+
53
+
54
+
55
+ /* convert a UTF-16 name entry to ASCII */
56
+ static FT_String*
57
+ tt_name_ascii_from_utf16( TT_Name entry,
58
+ FT_Memory memory )
59
+ {
60
+ FT_String* string = NULL;
61
+ FT_UInt len, code, n;
62
+ FT_Byte* read = (FT_Byte*)entry->string;
63
+ FT_Error error;
64
+
65
+
66
+ len = (FT_UInt)entry->stringLength / 2;
67
+
68
+ if ( FT_NEW_ARRAY( string, len + 1 ) )
69
+ return NULL;
70
+
71
+ for ( n = 0; n < len; n++ )
72
+ {
73
+ code = FT_NEXT_USHORT( read );
74
+
75
+ if ( code == 0 )
76
+ break;
77
+
78
+ if ( code < 32 || code > 127 )
79
+ code = '?';
80
+
81
+ string[n] = (char)code;
82
+ }
83
+
84
+ string[n] = 0;
85
+
86
+ return string;
87
+ }
88
+
89
+
90
+ /* convert an Apple Roman or symbol name entry to ASCII */
91
+ static FT_String*
92
+ tt_name_ascii_from_other( TT_Name entry,
93
+ FT_Memory memory )
94
+ {
95
+ FT_String* string = NULL;
96
+ FT_UInt len, code, n;
97
+ FT_Byte* read = (FT_Byte*)entry->string;
98
+ FT_Error error;
99
+
100
+
101
+ len = (FT_UInt)entry->stringLength;
102
+
103
+ if ( FT_NEW_ARRAY( string, len + 1 ) )
104
+ return NULL;
105
+
106
+ for ( n = 0; n < len; n++ )
107
+ {
108
+ code = *read++;
109
+
110
+ if ( code == 0 )
111
+ break;
112
+
113
+ if ( code < 32 || code > 127 )
114
+ code = '?';
115
+
116
+ string[n] = (char)code;
117
+ }
118
+
119
+ string[n] = 0;
120
+
121
+ return string;
122
+ }
123
+
124
+
125
+ typedef FT_String* (*TT_Name_ConvertFunc)( TT_Name entry,
126
+ FT_Memory memory );
127
+
128
+
129
+ /* documentation is in sfnt.h */
130
+
131
+ FT_LOCAL_DEF( FT_Error )
132
+ tt_face_get_name( TT_Face face,
133
+ FT_UShort nameid,
134
+ FT_String** name )
135
+ {
136
+ FT_Memory memory = face->root.memory;
137
+ FT_Error error = FT_Err_Ok;
138
+ FT_String* result = NULL;
139
+ FT_UShort n;
140
+ TT_Name rec;
141
+
142
+ FT_Int found_apple = -1;
143
+ FT_Int found_apple_roman = -1;
144
+ FT_Int found_apple_english = -1;
145
+ FT_Int found_win = -1;
146
+ FT_Int found_unicode = -1;
147
+
148
+ FT_Bool is_english = 0;
149
+
150
+ TT_Name_ConvertFunc convert;
151
+
152
+
153
+ FT_ASSERT( name );
154
+
155
+ rec = face->name_table.names;
156
+ for ( n = 0; n < face->num_names; n++, rec++ )
157
+ {
158
+ /* According to the OpenType 1.3 specification, only Microsoft or */
159
+ /* Apple platform IDs might be used in the `name' table. The */
160
+ /* `Unicode' platform is reserved for the `cmap' table, and the */
161
+ /* `ISO' one is deprecated. */
162
+ /* */
163
+ /* However, the Apple TrueType specification doesn't say the same */
164
+ /* thing and goes to suggest that all Unicode `name' table entries */
165
+ /* should be coded in UTF-16 (in big-endian format I suppose). */
166
+ /* */
167
+ if ( rec->nameID == nameid && rec->stringLength > 0 )
168
+ {
169
+ switch ( rec->platformID )
170
+ {
171
+ case TT_PLATFORM_APPLE_UNICODE:
172
+ case TT_PLATFORM_ISO:
173
+ /* there is `languageID' to check there. We should use this */
174
+ /* field only as a last solution when nothing else is */
175
+ /* available. */
176
+ /* */
177
+ found_unicode = n;
178
+ break;
179
+
180
+ case TT_PLATFORM_MACINTOSH:
181
+ /* This is a bit special because some fonts will use either */
182
+ /* an English language id, or a Roman encoding id, to indicate */
183
+ /* the English version of its font name. */
184
+ /* */
185
+ if ( rec->languageID == TT_MAC_LANGID_ENGLISH )
186
+ found_apple_english = n;
187
+ else if ( rec->encodingID == TT_MAC_ID_ROMAN )
188
+ found_apple_roman = n;
189
+ break;
190
+
191
+ case TT_PLATFORM_MICROSOFT:
192
+ /* we only take a non-English name when there is nothing */
193
+ /* else available in the font */
194
+ /* */
195
+ if ( found_win == -1 || ( rec->languageID & 0x3FF ) == 0x009 )
196
+ {
197
+ switch ( rec->encodingID )
198
+ {
199
+ case TT_MS_ID_SYMBOL_CS:
200
+ case TT_MS_ID_UNICODE_CS:
201
+ case TT_MS_ID_UCS_4:
202
+ is_english = FT_BOOL( ( rec->languageID & 0x3FF ) == 0x009 );
203
+ found_win = n;
204
+ break;
205
+
206
+ default:
207
+ ;
208
+ }
209
+ }
210
+ break;
211
+
212
+ default:
213
+ ;
214
+ }
215
+ }
216
+ }
217
+
218
+ found_apple = found_apple_roman;
219
+ if ( found_apple_english >= 0 )
220
+ found_apple = found_apple_english;
221
+
222
+ /* some fonts contain invalid Unicode or Macintosh formatted entries; */
223
+ /* we will thus favor names encoded in Windows formats if available */
224
+ /* (provided it is an English name) */
225
+ /* */
226
+ convert = NULL;
227
+ if ( found_win >= 0 && !( found_apple >= 0 && !is_english ) )
228
+ {
229
+ rec = face->name_table.names + found_win;
230
+ switch ( rec->encodingID )
231
+ {
232
+ /* all Unicode strings are encoded using UTF-16BE */
233
+ case TT_MS_ID_UNICODE_CS:
234
+ case TT_MS_ID_SYMBOL_CS:
235
+ convert = tt_name_ascii_from_utf16;
236
+ break;
237
+
238
+ case TT_MS_ID_UCS_4:
239
+ /* Apparently, if this value is found in a name table entry, it is */
240
+ /* documented as `full Unicode repertoire'. Experience with the */
241
+ /* MsGothic font shipped with Windows Vista shows that this really */
242
+ /* means UTF-16 encoded names (UCS-4 values are only used within */
243
+ /* charmaps). */
244
+ convert = tt_name_ascii_from_utf16;
245
+ break;
246
+
247
+ default:
248
+ ;
249
+ }
250
+ }
251
+ else if ( found_apple >= 0 )
252
+ {
253
+ rec = face->name_table.names + found_apple;
254
+ convert = tt_name_ascii_from_other;
255
+ }
256
+ else if ( found_unicode >= 0 )
257
+ {
258
+ rec = face->name_table.names + found_unicode;
259
+ convert = tt_name_ascii_from_utf16;
260
+ }
261
+
262
+ if ( rec && convert )
263
+ {
264
+ if ( !rec->string )
265
+ {
266
+ FT_Stream stream = face->name_table.stream;
267
+
268
+
269
+ if ( FT_QNEW_ARRAY ( rec->string, rec->stringLength ) ||
270
+ FT_STREAM_SEEK( rec->stringOffset ) ||
271
+ FT_STREAM_READ( rec->string, rec->stringLength ) )
272
+ {
273
+ FT_FREE( rec->string );
274
+ rec->stringLength = 0;
275
+ result = NULL;
276
+ goto Exit;
277
+ }
278
+ }
279
+
280
+ result = convert( rec, memory );
281
+ }
282
+
283
+ Exit:
284
+ *name = result;
285
+ return error;
286
+ }
287
+
288
+
289
+ static FT_Encoding
290
+ sfnt_find_encoding( int platform_id,
291
+ int encoding_id )
292
+ {
293
+ typedef struct TEncoding_
294
+ {
295
+ int platform_id;
296
+ int encoding_id;
297
+ FT_Encoding encoding;
298
+
299
+ } TEncoding;
300
+
301
+ static
302
+ const TEncoding tt_encodings[] =
303
+ {
304
+ { TT_PLATFORM_ISO, -1, FT_ENCODING_UNICODE },
305
+
306
+ { TT_PLATFORM_APPLE_UNICODE, -1, FT_ENCODING_UNICODE },
307
+
308
+ { TT_PLATFORM_MACINTOSH, TT_MAC_ID_ROMAN, FT_ENCODING_APPLE_ROMAN },
309
+
310
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_SYMBOL_CS, FT_ENCODING_MS_SYMBOL },
311
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_UCS_4, FT_ENCODING_UNICODE },
312
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, FT_ENCODING_UNICODE },
313
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, FT_ENCODING_SJIS },
314
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_PRC, FT_ENCODING_PRC },
315
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_BIG_5, FT_ENCODING_BIG5 },
316
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_WANSUNG, FT_ENCODING_WANSUNG },
317
+ { TT_PLATFORM_MICROSOFT, TT_MS_ID_JOHAB, FT_ENCODING_JOHAB }
318
+ };
319
+
320
+ const TEncoding *cur, *limit;
321
+
322
+
323
+ cur = tt_encodings;
324
+ limit = cur + sizeof ( tt_encodings ) / sizeof ( tt_encodings[0] );
325
+
326
+ for ( ; cur < limit; cur++ )
327
+ {
328
+ if ( cur->platform_id == platform_id )
329
+ {
330
+ if ( cur->encoding_id == encoding_id ||
331
+ cur->encoding_id == -1 )
332
+ return cur->encoding;
333
+ }
334
+ }
335
+
336
+ return FT_ENCODING_NONE;
337
+ }
338
+
339
+
340
+ #define WRITE_USHORT( p, v ) \
341
+ do \
342
+ { \
343
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
344
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
345
+ \
346
+ } while ( 0 )
347
+
348
+ #define WRITE_ULONG( p, v ) \
349
+ do \
350
+ { \
351
+ *(p)++ = (FT_Byte)( (v) >> 24 ); \
352
+ *(p)++ = (FT_Byte)( (v) >> 16 ); \
353
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
354
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
355
+ \
356
+ } while ( 0 )
357
+
358
+
359
+ static void
360
+ sfnt_stream_close( FT_Stream stream )
361
+ {
362
+ FT_Memory memory = stream->memory;
363
+
364
+
365
+ FT_FREE( stream->base );
366
+
367
+ stream->size = 0;
368
+ stream->base = NULL;
369
+ stream->close = NULL;
370
+ }
371
+
372
+
373
+ FT_CALLBACK_DEF( int )
374
+ compare_offsets( const void* a,
375
+ const void* b )
376
+ {
377
+ WOFF_Table table1 = *(WOFF_Table*)a;
378
+ WOFF_Table table2 = *(WOFF_Table*)b;
379
+
380
+ FT_ULong offset1 = table1->Offset;
381
+ FT_ULong offset2 = table2->Offset;
382
+
383
+
384
+ if ( offset1 > offset2 )
385
+ return 1;
386
+ else if ( offset1 < offset2 )
387
+ return -1;
388
+ else
389
+ return 0;
390
+ }
391
+
392
+
393
+ /* Replace `face->root.stream' with a stream containing the extracted */
394
+ /* SFNT of a WOFF font. */
395
+
396
+ static FT_Error
397
+ woff_open_font( FT_Stream stream,
398
+ TT_Face face )
399
+ {
400
+ FT_Memory memory = stream->memory;
401
+ FT_Error error = FT_Err_Ok;
402
+
403
+ WOFF_HeaderRec woff;
404
+ WOFF_Table tables = NULL;
405
+ WOFF_Table* indices = NULL;
406
+
407
+ FT_ULong woff_offset;
408
+
409
+ FT_Byte* sfnt = NULL;
410
+ FT_Stream sfnt_stream = NULL;
411
+
412
+ FT_Byte* sfnt_header;
413
+ FT_ULong sfnt_offset;
414
+
415
+ FT_Int nn;
416
+ FT_ULong old_tag = 0;
417
+
418
+ static const FT_Frame_Field woff_header_fields[] =
419
+ {
420
+ #undef FT_STRUCTURE
421
+ #define FT_STRUCTURE WOFF_HeaderRec
422
+
423
+ FT_FRAME_START( 44 ),
424
+ FT_FRAME_ULONG ( signature ),
425
+ FT_FRAME_ULONG ( flavor ),
426
+ FT_FRAME_ULONG ( length ),
427
+ FT_FRAME_USHORT( num_tables ),
428
+ FT_FRAME_USHORT( reserved ),
429
+ FT_FRAME_ULONG ( totalSfntSize ),
430
+ FT_FRAME_USHORT( majorVersion ),
431
+ FT_FRAME_USHORT( minorVersion ),
432
+ FT_FRAME_ULONG ( metaOffset ),
433
+ FT_FRAME_ULONG ( metaLength ),
434
+ FT_FRAME_ULONG ( metaOrigLength ),
435
+ FT_FRAME_ULONG ( privOffset ),
436
+ FT_FRAME_ULONG ( privLength ),
437
+ FT_FRAME_END
438
+ };
439
+
440
+
441
+ FT_ASSERT( stream == face->root.stream );
442
+ FT_ASSERT( FT_STREAM_POS() == 0 );
443
+
444
+ if ( FT_STREAM_READ_FIELDS( woff_header_fields, &woff ) )
445
+ return error;
446
+
447
+ /* Make sure we don't recurse back here or hit TTC code. */
448
+ if ( woff.flavor == TTAG_wOFF || woff.flavor == TTAG_ttcf )
449
+ return FT_THROW( Invalid_Table );
450
+
451
+ /* Miscellaneous checks. */
452
+ if ( woff.length != stream->size ||
453
+ woff.num_tables == 0 ||
454
+ 44 + woff.num_tables * 20UL >= woff.length ||
455
+ 12 + woff.num_tables * 16UL >= woff.totalSfntSize ||
456
+ ( woff.totalSfntSize & 3 ) != 0 ||
457
+ ( woff.metaOffset == 0 && ( woff.metaLength != 0 ||
458
+ woff.metaOrigLength != 0 ) ) ||
459
+ ( woff.metaLength != 0 && woff.metaOrigLength == 0 ) ||
460
+ ( woff.privOffset == 0 && woff.privLength != 0 ) )
461
+ {
462
+ FT_ERROR(( "woff_font_open: invalid WOFF header\n" ));
463
+ return FT_THROW( Invalid_Table );
464
+ }
465
+
466
+ /* Don't trust `totalSfntSize' before thorough checks. */
467
+ if ( FT_ALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
468
+ FT_NEW( sfnt_stream ) )
469
+ goto Exit;
470
+
471
+ sfnt_header = sfnt;
472
+
473
+ /* Write sfnt header. */
474
+ {
475
+ FT_UInt searchRange, entrySelector, rangeShift, x;
476
+
477
+
478
+ x = woff.num_tables;
479
+ entrySelector = 0;
480
+ while ( x )
481
+ {
482
+ x >>= 1;
483
+ entrySelector += 1;
484
+ }
485
+ entrySelector--;
486
+
487
+ searchRange = ( 1 << entrySelector ) * 16;
488
+ rangeShift = woff.num_tables * 16 - searchRange;
489
+
490
+ WRITE_ULONG ( sfnt_header, woff.flavor );
491
+ WRITE_USHORT( sfnt_header, woff.num_tables );
492
+ WRITE_USHORT( sfnt_header, searchRange );
493
+ WRITE_USHORT( sfnt_header, entrySelector );
494
+ WRITE_USHORT( sfnt_header, rangeShift );
495
+ }
496
+
497
+ /* While the entries in the sfnt header must be sorted by the */
498
+ /* tag value, the tables themselves are not. We thus have to */
499
+ /* sort them by offset and check that they don't overlap. */
500
+
501
+ if ( FT_NEW_ARRAY( tables, woff.num_tables ) ||
502
+ FT_NEW_ARRAY( indices, woff.num_tables ) )
503
+ goto Exit;
504
+
505
+ FT_TRACE2(( "\n"
506
+ " tag offset compLen origLen checksum\n"
507
+ " -------------------------------------------\n" ));
508
+
509
+ if ( FT_FRAME_ENTER( 20L * woff.num_tables ) )
510
+ goto Exit;
511
+
512
+ for ( nn = 0; nn < woff.num_tables; nn++ )
513
+ {
514
+ WOFF_Table table = tables + nn;
515
+
516
+ table->Tag = FT_GET_TAG4();
517
+ table->Offset = FT_GET_ULONG();
518
+ table->CompLength = FT_GET_ULONG();
519
+ table->OrigLength = FT_GET_ULONG();
520
+ table->CheckSum = FT_GET_ULONG();
521
+
522
+ FT_TRACE2(( " %c%c%c%c %08lx %08lx %08lx %08lx\n",
523
+ (FT_Char)( table->Tag >> 24 ),
524
+ (FT_Char)( table->Tag >> 16 ),
525
+ (FT_Char)( table->Tag >> 8 ),
526
+ (FT_Char)( table->Tag ),
527
+ table->Offset,
528
+ table->CompLength,
529
+ table->OrigLength,
530
+ table->CheckSum ));
531
+
532
+ if ( table->Tag <= old_tag )
533
+ {
534
+ FT_FRAME_EXIT();
535
+
536
+ FT_ERROR(( "woff_font_open: table tags are not sorted\n" ));
537
+ error = FT_THROW( Invalid_Table );
538
+ goto Exit;
539
+ }
540
+
541
+ old_tag = table->Tag;
542
+ indices[nn] = table;
543
+ }
544
+
545
+ FT_FRAME_EXIT();
546
+
547
+ /* Sort by offset. */
548
+
549
+ ft_qsort( indices,
550
+ woff.num_tables,
551
+ sizeof ( WOFF_Table ),
552
+ compare_offsets );
553
+
554
+ /* Check offsets and lengths. */
555
+
556
+ woff_offset = 44 + woff.num_tables * 20L;
557
+ sfnt_offset = 12 + woff.num_tables * 16L;
558
+
559
+ for ( nn = 0; nn < woff.num_tables; nn++ )
560
+ {
561
+ WOFF_Table table = indices[nn];
562
+
563
+
564
+ if ( table->Offset != woff_offset ||
565
+ table->CompLength > woff.length ||
566
+ table->Offset > woff.length - table->CompLength ||
567
+ table->OrigLength > woff.totalSfntSize ||
568
+ sfnt_offset > woff.totalSfntSize - table->OrigLength ||
569
+ table->CompLength > table->OrigLength )
570
+ {
571
+ FT_ERROR(( "woff_font_open: invalid table offsets\n" ));
572
+ error = FT_THROW( Invalid_Table );
573
+ goto Exit;
574
+ }
575
+
576
+ table->OrigOffset = sfnt_offset;
577
+
578
+ /* The offsets must be multiples of 4. */
579
+ woff_offset += ( table->CompLength + 3 ) & ~3U;
580
+ sfnt_offset += ( table->OrigLength + 3 ) & ~3U;
581
+ }
582
+
583
+ /*
584
+ * Final checks!
585
+ *
586
+ * We don't decode and check the metadata block.
587
+ * We don't check table checksums either.
588
+ * But other than those, I think we implement all
589
+ * `MUST' checks from the spec.
590
+ */
591
+
592
+ if ( woff.metaOffset )
593
+ {
594
+ if ( woff.metaOffset != woff_offset ||
595
+ woff.metaOffset + woff.metaLength > woff.length )
596
+ {
597
+ FT_ERROR(( "woff_font_open:"
598
+ " invalid `metadata' offset or length\n" ));
599
+ error = FT_THROW( Invalid_Table );
600
+ goto Exit;
601
+ }
602
+
603
+ /* We have padding only ... */
604
+ woff_offset += woff.metaLength;
605
+ }
606
+
607
+ if ( woff.privOffset )
608
+ {
609
+ /* ... if it isn't the last block. */
610
+ woff_offset = ( woff_offset + 3 ) & ~3U;
611
+
612
+ if ( woff.privOffset != woff_offset ||
613
+ woff.privOffset + woff.privLength > woff.length )
614
+ {
615
+ FT_ERROR(( "woff_font_open: invalid `private' offset or length\n" ));
616
+ error = FT_THROW( Invalid_Table );
617
+ goto Exit;
618
+ }
619
+
620
+ /* No padding for the last block. */
621
+ woff_offset += woff.privLength;
622
+ }
623
+
624
+ if ( sfnt_offset != woff.totalSfntSize ||
625
+ woff_offset != woff.length )
626
+ {
627
+ FT_ERROR(( "woff_font_open: invalid `sfnt' table structure\n" ));
628
+ error = FT_THROW( Invalid_Table );
629
+ goto Exit;
630
+ }
631
+
632
+ /* Now use `totalSfntSize'. */
633
+ if ( FT_REALLOC( sfnt,
634
+ 12 + woff.num_tables * 16UL,
635
+ woff.totalSfntSize ) )
636
+ goto Exit;
637
+
638
+ sfnt_header = sfnt + 12;
639
+
640
+ /* Write the tables. */
641
+
642
+ for ( nn = 0; nn < woff.num_tables; nn++ )
643
+ {
644
+ WOFF_Table table = tables + nn;
645
+
646
+
647
+ /* Write SFNT table entry. */
648
+ WRITE_ULONG( sfnt_header, table->Tag );
649
+ WRITE_ULONG( sfnt_header, table->CheckSum );
650
+ WRITE_ULONG( sfnt_header, table->OrigOffset );
651
+ WRITE_ULONG( sfnt_header, table->OrigLength );
652
+
653
+ /* Write table data. */
654
+ if ( FT_STREAM_SEEK( table->Offset ) ||
655
+ FT_FRAME_ENTER( table->CompLength ) )
656
+ goto Exit;
657
+
658
+ if ( table->CompLength == table->OrigLength )
659
+ {
660
+ /* Uncompressed data; just copy. */
661
+ ft_memcpy( sfnt + table->OrigOffset,
662
+ stream->cursor,
663
+ table->OrigLength );
664
+ }
665
+ else
666
+ {
667
+ #ifdef FT_CONFIG_OPTION_USE_ZLIB
668
+
669
+ /* Uncompress with zlib. */
670
+ FT_ULong output_len = table->OrigLength;
671
+
672
+
673
+ error = FT_Gzip_Uncompress( memory,
674
+ sfnt + table->OrigOffset, &output_len,
675
+ stream->cursor, table->CompLength );
676
+ if ( error )
677
+ goto Exit;
678
+ if ( output_len != table->OrigLength )
679
+ {
680
+ FT_ERROR(( "woff_font_open: compressed table length mismatch\n" ));
681
+ error = FT_THROW( Invalid_Table );
682
+ goto Exit;
683
+ }
684
+
685
+ #else /* !FT_CONFIG_OPTION_USE_ZLIB */
686
+
687
+ error = FT_THROW( Unimplemented_Feature );
688
+ goto Exit;
689
+
690
+ #endif /* !FT_CONFIG_OPTION_USE_ZLIB */
691
+ }
692
+
693
+ FT_FRAME_EXIT();
694
+
695
+ /* We don't check whether the padding bytes in the WOFF file are */
696
+ /* actually '\0'. For the output, however, we do set them properly. */
697
+ sfnt_offset = table->OrigOffset + table->OrigLength;
698
+ while ( sfnt_offset & 3 )
699
+ {
700
+ sfnt[sfnt_offset] = '\0';
701
+ sfnt_offset++;
702
+ }
703
+ }
704
+
705
+ /* Ok! Finally ready. Swap out stream and return. */
706
+ FT_Stream_OpenMemory( sfnt_stream, sfnt, woff.totalSfntSize );
707
+ sfnt_stream->memory = stream->memory;
708
+ sfnt_stream->close = sfnt_stream_close;
709
+
710
+ FT_Stream_Free(
711
+ face->root.stream,
712
+ ( face->root.face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 );
713
+
714
+ face->root.stream = sfnt_stream;
715
+
716
+ face->root.face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
717
+
718
+ Exit:
719
+ FT_FREE( tables );
720
+ FT_FREE( indices );
721
+
722
+ if ( error )
723
+ {
724
+ FT_FREE( sfnt );
725
+ FT_Stream_Close( sfnt_stream );
726
+ FT_FREE( sfnt_stream );
727
+ }
728
+
729
+ return error;
730
+ }
731
+
732
+
733
+ #undef WRITE_USHORT
734
+ #undef WRITE_ULONG
735
+
736
+
737
+ /* Fill in face->ttc_header. If the font is not a TTC, it is */
738
+ /* synthesized into a TTC with one offset table. */
739
+ static FT_Error
740
+ sfnt_open_font( FT_Stream stream,
741
+ TT_Face face )
742
+ {
743
+ FT_Memory memory = stream->memory;
744
+ FT_Error error;
745
+ FT_ULong tag, offset;
746
+
747
+ static const FT_Frame_Field ttc_header_fields[] =
748
+ {
749
+ #undef FT_STRUCTURE
750
+ #define FT_STRUCTURE TTC_HeaderRec
751
+
752
+ FT_FRAME_START( 8 ),
753
+ FT_FRAME_LONG( version ),
754
+ FT_FRAME_LONG( count ), /* this is ULong in the specs */
755
+ FT_FRAME_END
756
+ };
757
+
758
+
759
+ face->ttc_header.tag = 0;
760
+ face->ttc_header.version = 0;
761
+ face->ttc_header.count = 0;
762
+
763
+ retry:
764
+ offset = FT_STREAM_POS();
765
+
766
+ if ( FT_READ_ULONG( tag ) )
767
+ return error;
768
+
769
+ if ( tag == TTAG_wOFF )
770
+ {
771
+ FT_TRACE2(( "sfnt_open_font: file is a WOFF; synthesizing SFNT\n" ));
772
+
773
+ if ( FT_STREAM_SEEK( offset ) )
774
+ return error;
775
+
776
+ error = woff_open_font( stream, face );
777
+ if ( error )
778
+ return error;
779
+
780
+ /* Swap out stream and retry! */
781
+ stream = face->root.stream;
782
+ goto retry;
783
+ }
784
+
785
+ if ( tag != 0x00010000UL &&
786
+ tag != TTAG_ttcf &&
787
+ tag != TTAG_OTTO &&
788
+ tag != TTAG_true &&
789
+ tag != TTAG_typ1 &&
790
+ tag != TTAG_0xA5kbd &&
791
+ tag != TTAG_0xA5lst &&
792
+ tag != 0x00020000UL )
793
+ {
794
+ FT_TRACE2(( " not a font using the SFNT container format\n" ));
795
+ return FT_THROW( Unknown_File_Format );
796
+ }
797
+
798
+ face->ttc_header.tag = TTAG_ttcf;
799
+
800
+ if ( tag == TTAG_ttcf )
801
+ {
802
+ FT_Int n;
803
+
804
+
805
+ FT_TRACE3(( "sfnt_open_font: file is a collection\n" ));
806
+
807
+ if ( FT_STREAM_READ_FIELDS( ttc_header_fields, &face->ttc_header ) )
808
+ return error;
809
+
810
+ FT_TRACE3(( " with %ld subfonts\n",
811
+ face->ttc_header.count ));
812
+
813
+ if ( face->ttc_header.count == 0 )
814
+ return FT_THROW( Invalid_Table );
815
+
816
+ /* a rough size estimate: let's conservatively assume that there */
817
+ /* is just a single table info in each subfont header (12 + 16*1 = */
818
+ /* 28 bytes), thus we have (at least) `12 + 4*count' bytes for the */
819
+ /* size of the TTC header plus `28*count' bytes for all subfont */
820
+ /* headers */
821
+ if ( (FT_ULong)face->ttc_header.count > stream->size / ( 28 + 4 ) )
822
+ return FT_THROW( Array_Too_Large );
823
+
824
+ /* now read the offsets of each font in the file */
825
+ if ( FT_NEW_ARRAY( face->ttc_header.offsets, face->ttc_header.count ) )
826
+ return error;
827
+
828
+ if ( FT_FRAME_ENTER( face->ttc_header.count * 4L ) )
829
+ return error;
830
+
831
+ for ( n = 0; n < face->ttc_header.count; n++ )
832
+ face->ttc_header.offsets[n] = FT_GET_ULONG();
833
+
834
+ FT_FRAME_EXIT();
835
+ }
836
+ else
837
+ {
838
+ FT_TRACE3(( "sfnt_open_font: synthesize TTC\n" ));
839
+
840
+ face->ttc_header.version = 1 << 16;
841
+ face->ttc_header.count = 1;
842
+
843
+ if ( FT_NEW( face->ttc_header.offsets ) )
844
+ return error;
845
+
846
+ face->ttc_header.offsets[0] = offset;
847
+ }
848
+
849
+ return error;
850
+ }
851
+
852
+
853
+ FT_LOCAL_DEF( FT_Error )
854
+ sfnt_init_face( FT_Stream stream,
855
+ TT_Face face,
856
+ FT_Int face_instance_index,
857
+ FT_Int num_params,
858
+ FT_Parameter* params )
859
+ {
860
+ FT_Error error;
861
+ FT_Library library = face->root.driver->root.library;
862
+ SFNT_Service sfnt;
863
+ FT_Int face_index;
864
+
865
+
866
+ /* for now, parameters are unused */
867
+ FT_UNUSED( num_params );
868
+ FT_UNUSED( params );
869
+
870
+
871
+ sfnt = (SFNT_Service)face->sfnt;
872
+ if ( !sfnt )
873
+ {
874
+ sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" );
875
+ if ( !sfnt )
876
+ {
877
+ FT_ERROR(( "sfnt_init_face: cannot access `sfnt' module\n" ));
878
+ return FT_THROW( Missing_Module );
879
+ }
880
+
881
+ face->sfnt = sfnt;
882
+ face->goto_table = sfnt->goto_table;
883
+ }
884
+
885
+ FT_FACE_FIND_GLOBAL_SERVICE( face, face->psnames, POSTSCRIPT_CMAPS );
886
+
887
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
888
+ if ( !face->mm )
889
+ {
890
+ /* we want the MM interface from the `truetype' module only */
891
+ FT_Module tt_module = FT_Get_Module( library, "truetype" );
892
+
893
+
894
+ face->mm = ft_module_get_service( tt_module,
895
+ FT_SERVICE_ID_MULTI_MASTERS,
896
+ 0 );
897
+ }
898
+
899
+ if ( !face->var )
900
+ {
901
+ /* we want the metrics variations interface */
902
+ /* from the `truetype' module only */
903
+ FT_Module tt_module = FT_Get_Module( library, "truetype" );
904
+
905
+
906
+ face->var = ft_module_get_service( tt_module,
907
+ FT_SERVICE_ID_METRICS_VARIATIONS,
908
+ 0 );
909
+ }
910
+ #endif
911
+
912
+ FT_TRACE2(( "SFNT driver\n" ));
913
+
914
+ error = sfnt_open_font( stream, face );
915
+ if ( error )
916
+ return error;
917
+
918
+ /* Stream may have changed in sfnt_open_font. */
919
+ stream = face->root.stream;
920
+
921
+ FT_TRACE2(( "sfnt_init_face: %08p, %d\n", face, face_instance_index ));
922
+
923
+ face_index = FT_ABS( face_instance_index ) & 0xFFFF;
924
+
925
+ /* value -(N+1) requests information on index N */
926
+ if ( face_instance_index < 0 )
927
+ face_index--;
928
+
929
+ if ( face_index >= face->ttc_header.count )
930
+ {
931
+ if ( face_instance_index >= 0 )
932
+ return FT_THROW( Invalid_Argument );
933
+ else
934
+ face_index = 0;
935
+ }
936
+
937
+ if ( FT_STREAM_SEEK( face->ttc_header.offsets[face_index] ) )
938
+ return error;
939
+
940
+ /* check whether we have a valid TrueType file */
941
+ error = sfnt->load_font_dir( face, stream );
942
+ if ( error )
943
+ return error;
944
+
945
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
946
+ {
947
+ FT_Memory memory = face->root.memory;
948
+
949
+ FT_ULong fvar_len;
950
+
951
+ FT_ULong version;
952
+ FT_ULong offset;
953
+
954
+ FT_UShort num_axes;
955
+ FT_UShort axis_size;
956
+ FT_UShort num_instances;
957
+ FT_UShort instance_size;
958
+
959
+ FT_Int instance_index;
960
+
961
+ FT_Byte* default_values = NULL;
962
+ FT_Byte* instance_values = NULL;
963
+
964
+
965
+ instance_index = FT_ABS( face_instance_index ) >> 16;
966
+
967
+ /* test whether current face is a GX font with named instances */
968
+ if ( face->goto_table( face, TTAG_fvar, stream, &fvar_len ) ||
969
+ fvar_len < 20 ||
970
+ FT_READ_ULONG( version ) ||
971
+ FT_READ_USHORT( offset ) ||
972
+ FT_STREAM_SKIP( 2 ) /* reserved */ ||
973
+ FT_READ_USHORT( num_axes ) ||
974
+ FT_READ_USHORT( axis_size ) ||
975
+ FT_READ_USHORT( num_instances ) ||
976
+ FT_READ_USHORT( instance_size ) )
977
+ {
978
+ version = 0;
979
+ offset = 0;
980
+ num_axes = 0;
981
+ axis_size = 0;
982
+ num_instances = 0;
983
+ instance_size = 0;
984
+ }
985
+
986
+ /* check that the data is bound by the table length */
987
+ if ( version != 0x00010000UL ||
988
+ axis_size != 20 ||
989
+ num_axes == 0 ||
990
+ /* `num_axes' limit implied by 16-bit `instance_size' */
991
+ num_axes > 0x3FFE ||
992
+ !( instance_size == 4 + 4 * num_axes ||
993
+ instance_size == 6 + 4 * num_axes ) ||
994
+ /* `num_instances' limit implied by limited range of name IDs */
995
+ num_instances > 0x7EFF ||
996
+ offset +
997
+ axis_size * num_axes +
998
+ instance_size * num_instances > fvar_len )
999
+ num_instances = 0;
1000
+ else
1001
+ face->variation_support |= TT_FACE_FLAG_VAR_FVAR;
1002
+
1003
+ /*
1004
+ * As documented in the OpenType specification, an entry for the
1005
+ * default instance may be omitted in the named instance table. In
1006
+ * particular this means that even if there is no named instance
1007
+ * table in the font we actually do have a named instance, namely the
1008
+ * default instance.
1009
+ *
1010
+ * For consistency, we always want the default instance in our list
1011
+ * of named instances. If it is missing, we try to synthesize it
1012
+ * later on. Here, we have to adjust `num_instances' accordingly.
1013
+ */
1014
+
1015
+ if ( ( face->variation_support & TT_FACE_FLAG_VAR_FVAR ) &&
1016
+ !( FT_ALLOC( default_values, num_axes * 4 ) ||
1017
+ FT_ALLOC( instance_values, num_axes * 4 ) ) )
1018
+ {
1019
+ /* the current stream position is 16 bytes after the table start */
1020
+ FT_ULong array_start = FT_STREAM_POS() - 16 + offset;
1021
+ FT_ULong default_value_offset, instance_offset;
1022
+
1023
+ FT_Byte* p;
1024
+ FT_UInt i;
1025
+
1026
+
1027
+ default_value_offset = array_start + 8;
1028
+ p = default_values;
1029
+
1030
+ for ( i = 0; i < num_axes; i++ )
1031
+ {
1032
+ (void)FT_STREAM_READ_AT( default_value_offset, p, 4 );
1033
+
1034
+ default_value_offset += axis_size;
1035
+ p += 4;
1036
+ }
1037
+
1038
+ instance_offset = array_start + axis_size * num_axes + 4;
1039
+
1040
+ for ( i = 0; i < num_instances; i++ )
1041
+ {
1042
+ (void)FT_STREAM_READ_AT( instance_offset,
1043
+ instance_values,
1044
+ num_axes * 4 );
1045
+
1046
+ if ( !ft_memcmp( default_values, instance_values, num_axes * 4 ) )
1047
+ break;
1048
+
1049
+ instance_offset += instance_size;
1050
+ }
1051
+
1052
+ if ( i == num_instances )
1053
+ {
1054
+ /* no default instance in named instance table; */
1055
+ /* we thus have to synthesize it */
1056
+ num_instances++;
1057
+ }
1058
+ }
1059
+
1060
+ FT_FREE( default_values );
1061
+ FT_FREE( instance_values );
1062
+
1063
+ /* we don't support Multiple Master CFFs yet; */
1064
+ /* note that `glyf' or `CFF2' have precedence */
1065
+ if ( face->goto_table( face, TTAG_glyf, stream, 0 ) &&
1066
+ face->goto_table( face, TTAG_CFF2, stream, 0 ) &&
1067
+ !face->goto_table( face, TTAG_CFF, stream, 0 ) )
1068
+ num_instances = 0;
1069
+
1070
+ /* instance indices in `face_instance_index' start with index 1, */
1071
+ /* thus `>' and not `>=' */
1072
+ if ( instance_index > num_instances )
1073
+ {
1074
+ if ( face_instance_index >= 0 )
1075
+ return FT_THROW( Invalid_Argument );
1076
+ else
1077
+ num_instances = 0;
1078
+ }
1079
+
1080
+ face->root.style_flags = (FT_Long)num_instances << 16;
1081
+ }
1082
+ #endif
1083
+
1084
+ face->root.num_faces = face->ttc_header.count;
1085
+ face->root.face_index = face_instance_index;
1086
+
1087
+ return error;
1088
+ }
1089
+
1090
+
1091
+ #define LOAD_( x ) \
1092
+ do \
1093
+ { \
1094
+ FT_TRACE2(( "`" #x "' " )); \
1095
+ FT_TRACE3(( "-->\n" )); \
1096
+ \
1097
+ error = sfnt->load_ ## x( face, stream ); \
1098
+ \
1099
+ FT_TRACE2(( "%s\n", ( !error ) \
1100
+ ? "loaded" \
1101
+ : FT_ERR_EQ( error, Table_Missing ) \
1102
+ ? "missing" \
1103
+ : "failed to load" )); \
1104
+ FT_TRACE3(( "\n" )); \
1105
+ } while ( 0 )
1106
+
1107
+ #define LOADM_( x, vertical ) \
1108
+ do \
1109
+ { \
1110
+ FT_TRACE2(( "`%s" #x "' ", \
1111
+ vertical ? "vertical " : "" )); \
1112
+ FT_TRACE3(( "-->\n" )); \
1113
+ \
1114
+ error = sfnt->load_ ## x( face, stream, vertical ); \
1115
+ \
1116
+ FT_TRACE2(( "%s\n", ( !error ) \
1117
+ ? "loaded" \
1118
+ : FT_ERR_EQ( error, Table_Missing ) \
1119
+ ? "missing" \
1120
+ : "failed to load" )); \
1121
+ FT_TRACE3(( "\n" )); \
1122
+ } while ( 0 )
1123
+
1124
+ #define GET_NAME( id, field ) \
1125
+ do \
1126
+ { \
1127
+ error = tt_face_get_name( face, TT_NAME_ID_ ## id, field ); \
1128
+ if ( error ) \
1129
+ goto Exit; \
1130
+ } while ( 0 )
1131
+
1132
+
1133
+ FT_LOCAL_DEF( FT_Error )
1134
+ sfnt_load_face( FT_Stream stream,
1135
+ TT_Face face,
1136
+ FT_Int face_instance_index,
1137
+ FT_Int num_params,
1138
+ FT_Parameter* params )
1139
+ {
1140
+ FT_Error error;
1141
+ #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
1142
+ FT_Error psnames_error;
1143
+ #endif
1144
+ FT_Bool has_outline;
1145
+ FT_Bool is_apple_sbit;
1146
+ FT_Bool is_apple_sbix;
1147
+ FT_Bool has_CBLC;
1148
+ FT_Bool has_CBDT;
1149
+ FT_Bool ignore_typographic_family = FALSE;
1150
+ FT_Bool ignore_typographic_subfamily = FALSE;
1151
+
1152
+ SFNT_Service sfnt = (SFNT_Service)face->sfnt;
1153
+
1154
+ FT_UNUSED( face_instance_index );
1155
+
1156
+
1157
+ /* Check parameters */
1158
+
1159
+ {
1160
+ FT_Int i;
1161
+
1162
+
1163
+ for ( i = 0; i < num_params; i++ )
1164
+ {
1165
+ if ( params[i].tag == FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY )
1166
+ ignore_typographic_family = TRUE;
1167
+ else if ( params[i].tag == FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY )
1168
+ ignore_typographic_subfamily = TRUE;
1169
+ }
1170
+ }
1171
+
1172
+ /* Load tables */
1173
+
1174
+ /* We now support two SFNT-based bitmapped font formats. They */
1175
+ /* are recognized easily as they do not include a `glyf' */
1176
+ /* table. */
1177
+ /* */
1178
+ /* The first format comes from Apple, and uses a table named */
1179
+ /* `bhed' instead of `head' to store the font header (using */
1180
+ /* the same format). It also doesn't include horizontal and */
1181
+ /* vertical metrics tables (i.e. `hhea' and `vhea' tables are */
1182
+ /* missing). */
1183
+ /* */
1184
+ /* The other format comes from Microsoft, and is used with */
1185
+ /* WinCE/PocketPC. It looks like a standard TTF, except that */
1186
+ /* it doesn't contain outlines. */
1187
+ /* */
1188
+
1189
+ FT_TRACE2(( "sfnt_load_face: %08p\n\n", face ));
1190
+
1191
+ /* do we have outlines in there? */
1192
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1193
+ has_outline = FT_BOOL( face->root.internal->incremental_interface ||
1194
+ tt_face_lookup_table( face, TTAG_glyf ) ||
1195
+ tt_face_lookup_table( face, TTAG_CFF ) ||
1196
+ tt_face_lookup_table( face, TTAG_CFF2 ) );
1197
+ #else
1198
+ has_outline = FT_BOOL( tt_face_lookup_table( face, TTAG_glyf ) ||
1199
+ tt_face_lookup_table( face, TTAG_CFF ) ||
1200
+ tt_face_lookup_table( face, TTAG_CFF2 ) );
1201
+ #endif
1202
+
1203
+ is_apple_sbit = 0;
1204
+ is_apple_sbix = !face->goto_table( face, TTAG_sbix, stream, 0 );
1205
+
1206
+ /* Apple 'sbix' color bitmaps are rendered scaled and then the 'glyf'
1207
+ * outline rendered on top. We don't support that yet, so just ignore
1208
+ * the 'glyf' outline and advertise it as a bitmap-only font. */
1209
+ if ( is_apple_sbix )
1210
+ has_outline = FALSE;
1211
+
1212
+ /* if this font doesn't contain outlines, we try to load */
1213
+ /* a `bhed' table */
1214
+ if ( !has_outline && sfnt->load_bhed )
1215
+ {
1216
+ LOAD_( bhed );
1217
+ is_apple_sbit = FT_BOOL( !error );
1218
+ }
1219
+
1220
+ /* load the font header (`head' table) if this isn't an Apple */
1221
+ /* sbit font file */
1222
+ if ( !is_apple_sbit || is_apple_sbix )
1223
+ {
1224
+ LOAD_( head );
1225
+ if ( error )
1226
+ goto Exit;
1227
+ }
1228
+
1229
+ has_CBLC = !face->goto_table( face, TTAG_CBLC, stream, 0 );
1230
+ has_CBDT = !face->goto_table( face, TTAG_CBDT, stream, 0 );
1231
+
1232
+ /* Ignore outlines for CBLC/CBDT fonts. */
1233
+ if ( has_CBLC || has_CBDT )
1234
+ has_outline = FALSE;
1235
+
1236
+ /* OpenType 1.8.2 introduced limits to this value; */
1237
+ /* however, they make sense for older SFNT fonts also */
1238
+ if ( face->header.Units_Per_EM < 16 ||
1239
+ face->header.Units_Per_EM > 16384 )
1240
+ {
1241
+ error = FT_THROW( Invalid_Table );
1242
+
1243
+ goto Exit;
1244
+ }
1245
+
1246
+ /* the following tables are often not present in embedded TrueType */
1247
+ /* fonts within PDF documents, so don't check for them. */
1248
+ LOAD_( maxp );
1249
+ LOAD_( cmap );
1250
+
1251
+ /* the following tables are optional in PCL fonts -- */
1252
+ /* don't check for errors */
1253
+ LOAD_( name );
1254
+ LOAD_( post );
1255
+
1256
+ #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
1257
+ psnames_error = error;
1258
+ #endif
1259
+
1260
+ /* do not load the metrics headers and tables if this is an Apple */
1261
+ /* sbit font file */
1262
+ if ( !is_apple_sbit )
1263
+ {
1264
+ /* load the `hhea' and `hmtx' tables */
1265
+ LOADM_( hhea, 0 );
1266
+ if ( !error )
1267
+ {
1268
+ LOADM_( hmtx, 0 );
1269
+ if ( FT_ERR_EQ( error, Table_Missing ) )
1270
+ {
1271
+ error = FT_THROW( Hmtx_Table_Missing );
1272
+
1273
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1274
+ /* If this is an incrementally loaded font and there are */
1275
+ /* overriding metrics, tolerate a missing `hmtx' table. */
1276
+ if ( face->root.internal->incremental_interface &&
1277
+ face->root.internal->incremental_interface->funcs->
1278
+ get_glyph_metrics )
1279
+ {
1280
+ face->horizontal.number_Of_HMetrics = 0;
1281
+ error = FT_Err_Ok;
1282
+ }
1283
+ #endif
1284
+ }
1285
+ }
1286
+ else if ( FT_ERR_EQ( error, Table_Missing ) )
1287
+ {
1288
+ /* No `hhea' table necessary for SFNT Mac fonts. */
1289
+ if ( face->format_tag == TTAG_true )
1290
+ {
1291
+ FT_TRACE2(( "This is an SFNT Mac font.\n" ));
1292
+
1293
+ has_outline = 0;
1294
+ error = FT_Err_Ok;
1295
+ }
1296
+ else
1297
+ {
1298
+ error = FT_THROW( Horiz_Header_Missing );
1299
+
1300
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1301
+ /* If this is an incrementally loaded font and there are */
1302
+ /* overriding metrics, tolerate a missing `hhea' table. */
1303
+ if ( face->root.internal->incremental_interface &&
1304
+ face->root.internal->incremental_interface->funcs->
1305
+ get_glyph_metrics )
1306
+ {
1307
+ face->horizontal.number_Of_HMetrics = 0;
1308
+ error = FT_Err_Ok;
1309
+ }
1310
+ #endif
1311
+
1312
+ }
1313
+ }
1314
+
1315
+ if ( error )
1316
+ goto Exit;
1317
+
1318
+ /* try to load the `vhea' and `vmtx' tables */
1319
+ LOADM_( hhea, 1 );
1320
+ if ( !error )
1321
+ {
1322
+ LOADM_( hmtx, 1 );
1323
+ if ( !error )
1324
+ face->vertical_info = 1;
1325
+ }
1326
+
1327
+ if ( error && FT_ERR_NEQ( error, Table_Missing ) )
1328
+ goto Exit;
1329
+
1330
+ LOAD_( os2 );
1331
+ if ( error )
1332
+ {
1333
+ /* we treat the table as missing if there are any errors */
1334
+ face->os2.version = 0xFFFFU;
1335
+ }
1336
+ }
1337
+
1338
+ /* the optional tables */
1339
+
1340
+ /* embedded bitmap support */
1341
+ if ( sfnt->load_eblc )
1342
+ LOAD_( eblc );
1343
+
1344
+ /* consider the pclt, kerning, and gasp tables as optional */
1345
+ LOAD_( pclt );
1346
+ LOAD_( gasp );
1347
+ LOAD_( kern );
1348
+
1349
+ face->root.num_glyphs = face->max_profile.numGlyphs;
1350
+
1351
+ /* Bit 8 of the `fsSelection' field in the `OS/2' table denotes */
1352
+ /* a WWS-only font face. `WWS' stands for `weight', width', and */
1353
+ /* `slope', a term used by Microsoft's Windows Presentation */
1354
+ /* Foundation (WPF). This flag has been introduced in version */
1355
+ /* 1.5 of the OpenType specification (May 2008). */
1356
+
1357
+ face->root.family_name = NULL;
1358
+ face->root.style_name = NULL;
1359
+ if ( face->os2.version != 0xFFFFU && face->os2.fsSelection & 256 )
1360
+ {
1361
+ if ( !ignore_typographic_family )
1362
+ GET_NAME( TYPOGRAPHIC_FAMILY, &face->root.family_name );
1363
+ if ( !face->root.family_name )
1364
+ GET_NAME( FONT_FAMILY, &face->root.family_name );
1365
+
1366
+ if ( !ignore_typographic_subfamily )
1367
+ GET_NAME( TYPOGRAPHIC_SUBFAMILY, &face->root.style_name );
1368
+ if ( !face->root.style_name )
1369
+ GET_NAME( FONT_SUBFAMILY, &face->root.style_name );
1370
+ }
1371
+ else
1372
+ {
1373
+ GET_NAME( WWS_FAMILY, &face->root.family_name );
1374
+ if ( !face->root.family_name && !ignore_typographic_family )
1375
+ GET_NAME( TYPOGRAPHIC_FAMILY, &face->root.family_name );
1376
+ if ( !face->root.family_name )
1377
+ GET_NAME( FONT_FAMILY, &face->root.family_name );
1378
+
1379
+ GET_NAME( WWS_SUBFAMILY, &face->root.style_name );
1380
+ if ( !face->root.style_name && !ignore_typographic_subfamily )
1381
+ GET_NAME( TYPOGRAPHIC_SUBFAMILY, &face->root.style_name );
1382
+ if ( !face->root.style_name )
1383
+ GET_NAME( FONT_SUBFAMILY, &face->root.style_name );
1384
+ }
1385
+
1386
+ /* now set up root fields */
1387
+ {
1388
+ FT_Face root = &face->root;
1389
+ FT_Long flags = root->face_flags;
1390
+
1391
+
1392
+ /*********************************************************************/
1393
+ /* */
1394
+ /* Compute face flags. */
1395
+ /* */
1396
+ if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_CBLC ||
1397
+ face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX )
1398
+ flags |= FT_FACE_FLAG_COLOR; /* color glyphs */
1399
+
1400
+ if ( has_outline == TRUE )
1401
+ flags |= FT_FACE_FLAG_SCALABLE; /* scalable outlines */
1402
+
1403
+ /* The sfnt driver only supports bitmap fonts natively, thus we */
1404
+ /* don't set FT_FACE_FLAG_HINTER. */
1405
+ flags |= FT_FACE_FLAG_SFNT | /* SFNT file format */
1406
+ FT_FACE_FLAG_HORIZONTAL; /* horizontal data */
1407
+
1408
+ #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
1409
+ if ( !psnames_error &&
1410
+ face->postscript.FormatType != 0x00030000L )
1411
+ flags |= FT_FACE_FLAG_GLYPH_NAMES;
1412
+ #endif
1413
+
1414
+ /* fixed width font? */
1415
+ if ( face->postscript.isFixedPitch )
1416
+ flags |= FT_FACE_FLAG_FIXED_WIDTH;
1417
+
1418
+ /* vertical information? */
1419
+ if ( face->vertical_info )
1420
+ flags |= FT_FACE_FLAG_VERTICAL;
1421
+
1422
+ /* kerning available ? */
1423
+ if ( TT_FACE_HAS_KERNING( face ) )
1424
+ flags |= FT_FACE_FLAG_KERNING;
1425
+
1426
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1427
+ /* Don't bother to load the tables unless somebody asks for them. */
1428
+ /* No need to do work which will (probably) not be used. */
1429
+ if ( face->variation_support & TT_FACE_FLAG_VAR_FVAR )
1430
+ {
1431
+ if ( tt_face_lookup_table( face, TTAG_glyf ) != 0 &&
1432
+ tt_face_lookup_table( face, TTAG_gvar ) != 0 )
1433
+ flags |= FT_FACE_FLAG_MULTIPLE_MASTERS;
1434
+ if ( tt_face_lookup_table( face, TTAG_CFF2 ) != 0 )
1435
+ flags |= FT_FACE_FLAG_MULTIPLE_MASTERS;
1436
+ }
1437
+ #endif
1438
+
1439
+ root->face_flags = flags;
1440
+
1441
+ /*********************************************************************/
1442
+ /* */
1443
+ /* Compute style flags. */
1444
+ /* */
1445
+
1446
+ flags = 0;
1447
+ if ( has_outline == TRUE && face->os2.version != 0xFFFFU )
1448
+ {
1449
+ /* We have an OS/2 table; use the `fsSelection' field. Bit 9 */
1450
+ /* indicates an oblique font face. This flag has been */
1451
+ /* introduced in version 1.5 of the OpenType specification. */
1452
+
1453
+ if ( face->os2.fsSelection & 512 ) /* bit 9 */
1454
+ flags |= FT_STYLE_FLAG_ITALIC;
1455
+ else if ( face->os2.fsSelection & 1 ) /* bit 0 */
1456
+ flags |= FT_STYLE_FLAG_ITALIC;
1457
+
1458
+ if ( face->os2.fsSelection & 32 ) /* bit 5 */
1459
+ flags |= FT_STYLE_FLAG_BOLD;
1460
+ }
1461
+ else
1462
+ {
1463
+ /* this is an old Mac font, use the header field */
1464
+
1465
+ if ( face->header.Mac_Style & 1 )
1466
+ flags |= FT_STYLE_FLAG_BOLD;
1467
+
1468
+ if ( face->header.Mac_Style & 2 )
1469
+ flags |= FT_STYLE_FLAG_ITALIC;
1470
+ }
1471
+
1472
+ root->style_flags |= flags;
1473
+
1474
+ /*********************************************************************/
1475
+ /* */
1476
+ /* Polish the charmaps. */
1477
+ /* */
1478
+ /* Try to set the charmap encoding according to the platform & */
1479
+ /* encoding ID of each charmap. Emulate Unicode charmap if one */
1480
+ /* is missing. */
1481
+ /* */
1482
+
1483
+ tt_face_build_cmaps( face ); /* ignore errors */
1484
+
1485
+
1486
+ /* set the encoding fields */
1487
+ {
1488
+ FT_Int m;
1489
+ #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
1490
+ FT_Bool has_unicode = FALSE;
1491
+ #endif
1492
+
1493
+
1494
+ for ( m = 0; m < root->num_charmaps; m++ )
1495
+ {
1496
+ FT_CharMap charmap = root->charmaps[m];
1497
+
1498
+
1499
+ charmap->encoding = sfnt_find_encoding( charmap->platform_id,
1500
+ charmap->encoding_id );
1501
+
1502
+ #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
1503
+
1504
+ if ( charmap->encoding == FT_ENCODING_UNICODE ||
1505
+ charmap->encoding == FT_ENCODING_MS_SYMBOL ) /* PUA */
1506
+ has_unicode = TRUE;
1507
+ }
1508
+
1509
+ /* synthesize Unicode charmap if one is missing */
1510
+ if ( !has_unicode )
1511
+ {
1512
+ FT_CharMapRec cmaprec;
1513
+
1514
+
1515
+ cmaprec.face = root;
1516
+ cmaprec.platform_id = TT_PLATFORM_MICROSOFT;
1517
+ cmaprec.encoding_id = TT_MS_ID_UNICODE_CS;
1518
+ cmaprec.encoding = FT_ENCODING_UNICODE;
1519
+
1520
+
1521
+ error = FT_CMap_New( (FT_CMap_Class)&tt_cmap_unicode_class_rec,
1522
+ NULL, &cmaprec, NULL );
1523
+ if ( error &&
1524
+ FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
1525
+ goto Exit;
1526
+ error = FT_Err_Ok;
1527
+
1528
+ #endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
1529
+
1530
+ }
1531
+ }
1532
+
1533
+ #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
1534
+
1535
+ /*
1536
+ * Now allocate the root array of FT_Bitmap_Size records and
1537
+ * populate them. Unfortunately, it isn't possible to indicate bit
1538
+ * depths in the FT_Bitmap_Size record. This is a design error.
1539
+ */
1540
+ {
1541
+ FT_UInt count;
1542
+
1543
+
1544
+ count = face->sbit_num_strikes;
1545
+
1546
+ if ( count > 0 )
1547
+ {
1548
+ FT_Memory memory = face->root.stream->memory;
1549
+ FT_UShort em_size = face->header.Units_Per_EM;
1550
+ FT_Short avgwidth = face->os2.xAvgCharWidth;
1551
+ FT_Size_Metrics metrics;
1552
+
1553
+ FT_UInt* sbit_strike_map = NULL;
1554
+ FT_UInt strike_idx, bsize_idx;
1555
+
1556
+
1557
+ if ( em_size == 0 || face->os2.version == 0xFFFFU )
1558
+ {
1559
+ avgwidth = 1;
1560
+ em_size = 1;
1561
+ }
1562
+
1563
+ /* to avoid invalid strike data in the `available_sizes' field */
1564
+ /* of `FT_Face', we map `available_sizes' indices to strike */
1565
+ /* indices */
1566
+ if ( FT_NEW_ARRAY( root->available_sizes, count ) ||
1567
+ FT_NEW_ARRAY( sbit_strike_map, count ) )
1568
+ goto Exit;
1569
+
1570
+ bsize_idx = 0;
1571
+ for ( strike_idx = 0; strike_idx < count; strike_idx++ )
1572
+ {
1573
+ FT_Bitmap_Size* bsize = root->available_sizes + bsize_idx;
1574
+
1575
+
1576
+ error = sfnt->load_strike_metrics( face, strike_idx, &metrics );
1577
+ if ( error )
1578
+ continue;
1579
+
1580
+ bsize->height = (FT_Short)( metrics.height >> 6 );
1581
+ bsize->width = (FT_Short)(
1582
+ ( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size );
1583
+
1584
+ bsize->x_ppem = metrics.x_ppem << 6;
1585
+ bsize->y_ppem = metrics.y_ppem << 6;
1586
+
1587
+ /* assume 72dpi */
1588
+ bsize->size = metrics.y_ppem << 6;
1589
+
1590
+ /* only use strikes with valid PPEM values */
1591
+ if ( bsize->x_ppem && bsize->y_ppem )
1592
+ sbit_strike_map[bsize_idx++] = strike_idx;
1593
+ }
1594
+
1595
+ /* reduce array size to the actually used elements */
1596
+ (void)FT_RENEW_ARRAY( sbit_strike_map, count, bsize_idx );
1597
+
1598
+ /* from now on, all strike indices are mapped */
1599
+ /* using `sbit_strike_map' */
1600
+ if ( bsize_idx )
1601
+ {
1602
+ face->sbit_strike_map = sbit_strike_map;
1603
+
1604
+ root->face_flags |= FT_FACE_FLAG_FIXED_SIZES;
1605
+ root->num_fixed_sizes = (FT_Int)bsize_idx;
1606
+ }
1607
+ }
1608
+ }
1609
+
1610
+ #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
1611
+
1612
+ /* a font with no bitmaps and no outlines is scalable; */
1613
+ /* it has only empty glyphs then */
1614
+ if ( !FT_HAS_FIXED_SIZES( root ) && !FT_IS_SCALABLE( root ) )
1615
+ root->face_flags |= FT_FACE_FLAG_SCALABLE;
1616
+
1617
+
1618
+ /*********************************************************************/
1619
+ /* */
1620
+ /* Set up metrics. */
1621
+ /* */
1622
+ if ( FT_IS_SCALABLE( root ) )
1623
+ {
1624
+ /* XXX What about if outline header is missing */
1625
+ /* (e.g. sfnt wrapped bitmap)? */
1626
+ root->bbox.xMin = face->header.xMin;
1627
+ root->bbox.yMin = face->header.yMin;
1628
+ root->bbox.xMax = face->header.xMax;
1629
+ root->bbox.yMax = face->header.yMax;
1630
+ root->units_per_EM = face->header.Units_Per_EM;
1631
+
1632
+
1633
+ /* XXX: Computing the ascender/descender/height is very different */
1634
+ /* from what the specification tells you. Apparently, we */
1635
+ /* must be careful because */
1636
+ /* */
1637
+ /* - not all fonts have an OS/2 table; in this case, we take */
1638
+ /* the values in the horizontal header. However, these */
1639
+ /* values very often are not reliable. */
1640
+ /* */
1641
+ /* - otherwise, the correct typographic values are in the */
1642
+ /* sTypoAscender, sTypoDescender & sTypoLineGap fields. */
1643
+ /* */
1644
+ /* However, certain fonts have these fields set to 0. */
1645
+ /* Rather, they have usWinAscent & usWinDescent correctly */
1646
+ /* set (but with different values). */
1647
+ /* */
1648
+ /* As an example, Arial Narrow is implemented through four */
1649
+ /* files ARIALN.TTF, ARIALNI.TTF, ARIALNB.TTF & ARIALNBI.TTF */
1650
+ /* */
1651
+ /* Strangely, all fonts have the same values in their */
1652
+ /* sTypoXXX fields, except ARIALNB which sets them to 0. */
1653
+ /* */
1654
+ /* On the other hand, they all have different */
1655
+ /* usWinAscent/Descent values -- as a conclusion, the OS/2 */
1656
+ /* table cannot be used to compute the text height reliably! */
1657
+ /* */
1658
+
1659
+ /* The ascender and descender are taken from the `hhea' table. */
1660
+ /* If zero, they are taken from the `OS/2' table. */
1661
+
1662
+ root->ascender = face->horizontal.Ascender;
1663
+ root->descender = face->horizontal.Descender;
1664
+
1665
+ root->height = root->ascender - root->descender +
1666
+ face->horizontal.Line_Gap;
1667
+
1668
+ if ( !( root->ascender || root->descender ) )
1669
+ {
1670
+ if ( face->os2.version != 0xFFFFU )
1671
+ {
1672
+ if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
1673
+ {
1674
+ root->ascender = face->os2.sTypoAscender;
1675
+ root->descender = face->os2.sTypoDescender;
1676
+
1677
+ root->height = root->ascender - root->descender +
1678
+ face->os2.sTypoLineGap;
1679
+ }
1680
+ else
1681
+ {
1682
+ root->ascender = (FT_Short)face->os2.usWinAscent;
1683
+ root->descender = -(FT_Short)face->os2.usWinDescent;
1684
+
1685
+ root->height = root->ascender - root->descender;
1686
+ }
1687
+ }
1688
+ }
1689
+
1690
+ root->max_advance_width =
1691
+ (FT_Short)face->horizontal.advance_Width_Max;
1692
+ root->max_advance_height =
1693
+ (FT_Short)( face->vertical_info ? face->vertical.advance_Height_Max
1694
+ : root->height );
1695
+
1696
+ /* See https://www.microsoft.com/typography/otspec/post.htm -- */
1697
+ /* Adjust underline position from top edge to centre of */
1698
+ /* stroke to convert TrueType meaning to FreeType meaning. */
1699
+ root->underline_position = face->postscript.underlinePosition -
1700
+ face->postscript.underlineThickness / 2;
1701
+ root->underline_thickness = face->postscript.underlineThickness;
1702
+ }
1703
+
1704
+ }
1705
+
1706
+ Exit:
1707
+ FT_TRACE2(( "sfnt_load_face: done\n" ));
1708
+
1709
+ return error;
1710
+ }
1711
+
1712
+
1713
+ #undef LOAD_
1714
+ #undef LOADM_
1715
+ #undef GET_NAME
1716
+
1717
+
1718
+ FT_LOCAL_DEF( void )
1719
+ sfnt_done_face( TT_Face face )
1720
+ {
1721
+ FT_Memory memory;
1722
+ SFNT_Service sfnt;
1723
+
1724
+
1725
+ if ( !face )
1726
+ return;
1727
+
1728
+ memory = face->root.memory;
1729
+ sfnt = (SFNT_Service)face->sfnt;
1730
+
1731
+ if ( sfnt )
1732
+ {
1733
+ /* destroy the postscript names table if it is loaded */
1734
+ if ( sfnt->free_psnames )
1735
+ sfnt->free_psnames( face );
1736
+
1737
+ /* destroy the embedded bitmaps table if it is loaded */
1738
+ if ( sfnt->free_eblc )
1739
+ sfnt->free_eblc( face );
1740
+ }
1741
+
1742
+ #ifdef TT_CONFIG_OPTION_BDF
1743
+ /* freeing the embedded BDF properties */
1744
+ tt_face_free_bdf_props( face );
1745
+ #endif
1746
+
1747
+ /* freeing the kerning table */
1748
+ tt_face_done_kern( face );
1749
+
1750
+ /* freeing the collection table */
1751
+ FT_FREE( face->ttc_header.offsets );
1752
+ face->ttc_header.count = 0;
1753
+
1754
+ /* freeing table directory */
1755
+ FT_FREE( face->dir_tables );
1756
+ face->num_tables = 0;
1757
+
1758
+ {
1759
+ FT_Stream stream = FT_FACE_STREAM( face );
1760
+
1761
+
1762
+ /* simply release the 'cmap' table frame */
1763
+ FT_FRAME_RELEASE( face->cmap_table );
1764
+ face->cmap_size = 0;
1765
+ }
1766
+
1767
+ face->horz_metrics_size = 0;
1768
+ face->vert_metrics_size = 0;
1769
+
1770
+ /* freeing vertical metrics, if any */
1771
+ if ( face->vertical_info )
1772
+ {
1773
+ FT_FREE( face->vertical.long_metrics );
1774
+ FT_FREE( face->vertical.short_metrics );
1775
+ face->vertical_info = 0;
1776
+ }
1777
+
1778
+ /* freeing the gasp table */
1779
+ FT_FREE( face->gasp.gaspRanges );
1780
+ face->gasp.numRanges = 0;
1781
+
1782
+ /* freeing the name table */
1783
+ if ( sfnt )
1784
+ sfnt->free_name( face );
1785
+
1786
+ /* freeing family and style name */
1787
+ FT_FREE( face->root.family_name );
1788
+ FT_FREE( face->root.style_name );
1789
+
1790
+ /* freeing sbit size table */
1791
+ FT_FREE( face->root.available_sizes );
1792
+ FT_FREE( face->sbit_strike_map );
1793
+ face->root.num_fixed_sizes = 0;
1794
+
1795
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1796
+ FT_FREE( face->postscript_name );
1797
+ FT_FREE( face->var_postscript_prefix );
1798
+ #endif
1799
+
1800
+ face->sfnt = NULL;
1801
+ }
1802
+
1803
+
1804
+ /* END */