laag-fontconfig 2.13.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (455) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +28 -0
  4. data/README.org +34 -0
  5. data/ext/laag/fontconfig/extconf.rb +13 -0
  6. data/laag-fontconfig.gemspec +20 -0
  7. data/lib/laag/fontconfig.rb +29 -0
  8. data/vendor/anongit.freedesktop.org/git/fontconfig/AUTHORS +3 -0
  9. data/vendor/anongit.freedesktop.org/git/fontconfig/COPYING +28 -0
  10. data/vendor/anongit.freedesktop.org/git/fontconfig/INSTALL +42 -0
  11. data/vendor/anongit.freedesktop.org/git/fontconfig/Makefile.am +158 -0
  12. data/vendor/anongit.freedesktop.org/git/fontconfig/NEWS +0 -0
  13. data/vendor/anongit.freedesktop.org/git/fontconfig/README +2016 -0
  14. data/vendor/anongit.freedesktop.org/git/fontconfig/Tools.mk +64 -0
  15. data/vendor/anongit.freedesktop.org/git/fontconfig/autogen.sh +126 -0
  16. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-autohint.conf +19 -0
  17. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-hinting-full.conf +19 -0
  18. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-hinting-medium.conf +19 -0
  19. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-hinting-none.conf +19 -0
  20. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-hinting-slight.conf +19 -0
  21. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-no-sub-pixel.conf +19 -0
  22. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-scale-bitmap-fonts.conf +87 -0
  23. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-sub-pixel-bgr.conf +19 -0
  24. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-sub-pixel-rgb.conf +19 -0
  25. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-sub-pixel-vbgr.conf +19 -0
  26. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-sub-pixel-vrgb.conf +19 -0
  27. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/10-unhinted.conf +19 -0
  28. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/11-lcdfilter-default.conf +21 -0
  29. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/11-lcdfilter-legacy.conf +21 -0
  30. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/11-lcdfilter-light.conf +21 -0
  31. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/20-unhint-small-vera.conf +53 -0
  32. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/25-unhint-nonlatin.conf +132 -0
  33. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/30-metric-aliases.conf +634 -0
  34. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/40-nonlatin.conf +236 -0
  35. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/45-generic.conf +136 -0
  36. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/45-latin.conf +278 -0
  37. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/49-sansserif.conf +26 -0
  38. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/50-user.conf +20 -0
  39. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/51-local.conf +11 -0
  40. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/60-generic.conf +67 -0
  41. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/60-latin.conf +79 -0
  42. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/65-fonts-persian.conf +423 -0
  43. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/65-khmer.conf +20 -0
  44. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/65-nonlatin.conf +200 -0
  45. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/69-unifont.conf +32 -0
  46. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/70-no-bitmaps.conf +17 -0
  47. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/70-yes-bitmaps.conf +17 -0
  48. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/80-delicious.conf +23 -0
  49. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/90-synthetic.conf +68 -0
  50. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/Makefile.am +110 -0
  51. data/vendor/anongit.freedesktop.org/git/fontconfig/conf.d/README.in +23 -0
  52. data/vendor/anongit.freedesktop.org/git/fontconfig/config-fixups.h +40 -0
  53. data/vendor/anongit.freedesktop.org/git/fontconfig/configure.ac +793 -0
  54. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/Makefile.am +224 -0
  55. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/check-missing-doc +24 -0
  56. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/confdir.sgml.in +26 -0
  57. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/edit-sgml.c +546 -0
  58. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcatomic.fncs +95 -0
  59. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcblanks.fncs +60 -0
  60. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fccache.fncs +104 -0
  61. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fccharset.fncs +242 -0
  62. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcconfig.fncs +447 -0
  63. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcconstant.fncs +58 -0
  64. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcdircache.fncs +99 -0
  65. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcfile.fncs +88 -0
  66. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcfontset.fncs +140 -0
  67. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcformat.fncs +309 -0
  68. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcfreetype.fncs +135 -0
  69. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcinit.fncs +92 -0
  70. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fclangset.fncs +201 -0
  71. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcmatrix.fncs +125 -0
  72. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcobjectset.fncs +73 -0
  73. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcobjecttype.fncs +48 -0
  74. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcpattern.fncs +433 -0
  75. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcrange.fncs +75 -0
  76. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcstring.fncs +244 -0
  77. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcstrset.fncs +124 -0
  78. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcvalue.fncs +61 -0
  79. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fcweight.fncs +69 -0
  80. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fontconfig-devel.sgml +613 -0
  81. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/fontconfig-user.sgml +812 -0
  82. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/func.sgml +91 -0
  83. data/vendor/anongit.freedesktop.org/git/fontconfig/doc/version.sgml.in +24 -0
  84. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-cache/Makefile.am +69 -0
  85. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-cache/fc-cache.c +423 -0
  86. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-cache/fc-cache.sgml +249 -0
  87. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-case/CaseFolding.txt +1495 -0
  88. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-case/Makefile.am +36 -0
  89. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-case/fc-case.c +363 -0
  90. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-case/fccase.tmpl.h +25 -0
  91. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-cat/Makefile.am +60 -0
  92. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-cat/fc-cat.c +400 -0
  93. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-cat/fc-cat.sgml +169 -0
  94. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-conflist/Makefile.am +60 -0
  95. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-conflist/fc-conflist.c +142 -0
  96. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-conflist/fc-conflist.sgml +135 -0
  97. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/Makefile.am +288 -0
  98. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/README +28 -0
  99. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/aa.orth +40 -0
  100. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ab.orth +45 -0
  101. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/af.orth +46 -0
  102. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ak.orth +30 -0
  103. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/am.orth +36 -0
  104. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/an.orth +45 -0
  105. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ar.orth +39 -0
  106. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/as.orth +45 -0
  107. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ast.orth +47 -0
  108. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/av.orth +97 -0
  109. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ay.orth +37 -0
  110. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/az_az.orth +53 -0
  111. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/az_ir.orth +32 -0
  112. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ba.orth +56 -0
  113. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/be.orth +40 -0
  114. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ber_dz.orth +27 -0
  115. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ber_ma.orth +46 -0
  116. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bg.orth +43 -0
  117. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bh.orth +25 -0
  118. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bho.orth +25 -0
  119. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bi.orth +39 -0
  120. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bin.orth +55 -0
  121. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bm.orth +37 -0
  122. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bn.orth +44 -0
  123. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bo.orth +39 -0
  124. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/br.orth +47 -0
  125. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/brx.orth +46 -0
  126. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bs.orth +39 -0
  127. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/bua.orth +102 -0
  128. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/byn.orth +27 -0
  129. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ca.orth +58 -0
  130. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ce.orth +97 -0
  131. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ch.orth +35 -0
  132. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/chm.orth +109 -0
  133. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/chr.orth +25 -0
  134. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/co.orth +25 -0
  135. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/crh.orth +46 -0
  136. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/cs.orth +67 -0
  137. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/csb.orth +46 -0
  138. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/cu.orth +42 -0
  139. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/cv.orth +109 -0
  140. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/cy.orth +63 -0
  141. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/da.orth +89 -0
  142. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/de.orth +49 -0
  143. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/doi.orth +40 -0
  144. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/dv.orth +34 -0
  145. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/dz.orth +28 -0
  146. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ee.orth +77 -0
  147. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/el.orth +32 -0
  148. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/en.orth +40 -0
  149. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/eo.orth +32 -0
  150. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/es.orth +50 -0
  151. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/et.orth +47 -0
  152. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/eu.orth +45 -0
  153. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fa.orth +73 -0
  154. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fat.orth +30 -0
  155. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fc-lang.c +595 -0
  156. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fc-lang.man +39 -0
  157. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fclang.tmpl.h +25 -0
  158. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ff.orth +38 -0
  159. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fi.orth +51 -0
  160. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fil.orth +45 -0
  161. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fj.orth +34 -0
  162. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fo.orth +59 -0
  163. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fr.orth +58 -0
  164. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fur.orth +39 -0
  165. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/fy.orth +61 -0
  166. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ga.orth +84 -0
  167. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/gd.orth +51 -0
  168. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/gez.orth +60 -0
  169. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/gl.orth +50 -0
  170. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/gn.orth +48 -0
  171. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/gu.orth +41 -0
  172. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/gv.orth +31 -0
  173. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ha.orth +36 -0
  174. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/haw.orth +35 -0
  175. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/he.orth +25 -0
  176. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hi.orth +35 -0
  177. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hne.orth +28 -0
  178. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ho.orth +33 -0
  179. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hr.orth +49 -0
  180. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hsb.orth +42 -0
  181. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ht.orth +35 -0
  182. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hu.orth +49 -0
  183. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hy.orth +26 -0
  184. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/hz.orth +35 -0
  185. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ia.orth +29 -0
  186. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/id.orth +31 -0
  187. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ie.orth +29 -0
  188. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ig.orth +35 -0
  189. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ii.orth +34 -0
  190. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ik.orth +100 -0
  191. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/io.orth +29 -0
  192. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/is.orth +64 -0
  193. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/iso-3166.txt +242 -0
  194. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/iso639-1 +139 -0
  195. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/iso639-2 +473 -0
  196. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/it.orth +51 -0
  197. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/iu.orth +77 -0
  198. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ja.orth +2345 -0
  199. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/jv.orth +36 -0
  200. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ka.orth +34 -0
  201. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kaa.orth +110 -0
  202. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kab.orth +42 -0
  203. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ki.orth +33 -0
  204. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kj.orth +34 -0
  205. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kk.orth +45 -0
  206. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kl.orth +63 -0
  207. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/km.orth +39 -0
  208. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kn.orth +40 -0
  209. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ko.orth +2537 -0
  210. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kok.orth +25 -0
  211. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kr.orth +43 -0
  212. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ks.orth +32 -0
  213. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ku_am.orth +91 -0
  214. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ku_iq.orth +27 -0
  215. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ku_ir.orth +49 -0
  216. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ku_tr.orth +42 -0
  217. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kum.orth +96 -0
  218. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kv.orth +101 -0
  219. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kw.orth +35 -0
  220. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/kwm.orth +29 -0
  221. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ky.orth +102 -0
  222. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/la.orth +31 -0
  223. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lah.orth +35 -0
  224. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lb.orth +62 -0
  225. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lez.orth +97 -0
  226. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lg.orth +33 -0
  227. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/li.orth +43 -0
  228. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ln.orth +43 -0
  229. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lo.orth +45 -0
  230. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lt.orth +43 -0
  231. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/lv.orth +44 -0
  232. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mai.orth +25 -0
  233. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mg.orth +35 -0
  234. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mh.orth +45 -0
  235. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mi.orth +35 -0
  236. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mk.orth +40 -0
  237. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ml.orth +38 -0
  238. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mn_cn.orth +37 -0
  239. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mn_mn.orth +35 -0
  240. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mni.orth +35 -0
  241. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mo.orth +37 -0
  242. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mr.orth +25 -0
  243. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ms.orth +32 -0
  244. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/mt.orth +67 -0
  245. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/my.orth +37 -0
  246. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/na.orth +40 -0
  247. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nb.orth +25 -0
  248. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nds.orth +40 -0
  249. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ne.orth +43 -0
  250. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ng.orth +29 -0
  251. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nl.orth +63 -0
  252. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nn.orth +43 -0
  253. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/no.orth +68 -0
  254. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nqo.orth +30 -0
  255. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nr.orth +29 -0
  256. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nso.orth +34 -0
  257. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/nv.orth +48 -0
  258. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ny.orth +30 -0
  259. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/oc.orth +53 -0
  260. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/om.orth +29 -0
  261. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/or.orth +42 -0
  262. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/os.orth +96 -0
  263. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ota.orth +41 -0
  264. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pa.orth +53 -0
  265. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pa_pk.orth +29 -0
  266. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pap_an.orth +46 -0
  267. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pap_aw.orth +31 -0
  268. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pes.orth +26 -0
  269. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pl.orth +41 -0
  270. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/prs.orth +29 -0
  271. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ps_af.orth +52 -0
  272. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ps_pk.orth +52 -0
  273. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/pt.orth +64 -0
  274. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/qu.orth +36 -0
  275. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/quz.orth +36 -0
  276. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/rm.orth +45 -0
  277. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/rn.orth +32 -0
  278. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ro.orth +38 -0
  279. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ru.orth +38 -0
  280. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/rw.orth +31 -0
  281. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sa.orth +25 -0
  282. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sah.orth +108 -0
  283. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sat.orth +44 -0
  284. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sc.orth +42 -0
  285. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sco.orth +32 -0
  286. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sd.orth +58 -0
  287. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/se.orth +37 -0
  288. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sel.orth +96 -0
  289. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sg.orth +47 -0
  290. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sh.orth +33 -0
  291. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/shs.orth +48 -0
  292. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/si.orth +75 -0
  293. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sid.orth +27 -0
  294. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sk.orth +63 -0
  295. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sl.orth +88 -0
  296. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sm.orth +30 -0
  297. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sma.orth +37 -0
  298. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/smj.orth +37 -0
  299. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/smn.orth +40 -0
  300. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sms.orth +48 -0
  301. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sn.orth +35 -0
  302. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/so.orth +29 -0
  303. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sq.orth +35 -0
  304. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sr.orth +35 -0
  305. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ss.orth +29 -0
  306. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/st.orth +29 -0
  307. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/su.orth +33 -0
  308. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sv.orth +100 -0
  309. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/sw.orth +29 -0
  310. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/syr.orth +29 -0
  311. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ta.orth +46 -0
  312. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/te.orth +39 -0
  313. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tg.orth +108 -0
  314. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/th.orth +30 -0
  315. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ti_er.orth +56 -0
  316. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ti_et.orth +33 -0
  317. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tig.orth +52 -0
  318. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tk.orth +44 -0
  319. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tl.orth +27 -0
  320. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tn.orth +35 -0
  321. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/to.orth +30 -0
  322. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tr.orth +49 -0
  323. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ts.orth +29 -0
  324. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tt.orth +108 -0
  325. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tw.orth +50 -0
  326. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ty.orth +41 -0
  327. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/tyv.orth +102 -0
  328. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ug.orth +50 -0
  329. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/uk.orth +43 -0
  330. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/und_zmth.orth +144 -0
  331. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/und_zsye.orth +151 -0
  332. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ur.orth +68 -0
  333. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/uz.orth +36 -0
  334. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/ve.orth +34 -0
  335. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/vi.orth +58 -0
  336. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/vo.orth +36 -0
  337. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/vot.orth +40 -0
  338. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/wa.orth +47 -0
  339. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/wal.orth +27 -0
  340. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/wen.orth +42 -0
  341. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/wo.orth +42 -0
  342. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/xh.orth +29 -0
  343. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/yap.orth +35 -0
  344. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/yi.orth +25 -0
  345. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/yo.orth +86 -0
  346. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/za.orth +39 -0
  347. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/zh_cn.orth +6792 -0
  348. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/zh_hk.orth +1119 -0
  349. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/zh_mo.orth +32 -0
  350. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/zh_sg.orth +27 -0
  351. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/zh_tw.orth +13105 -0
  352. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-lang/zu.orth +29 -0
  353. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-list/Makefile.am +60 -0
  354. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-list/fc-list.c +220 -0
  355. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-list/fc-list.sgml +227 -0
  356. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-match/Makefile.am +60 -0
  357. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-match/fc-match.c +268 -0
  358. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-match/fc-match.sgml +217 -0
  359. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-pattern/Makefile.am +60 -0
  360. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-pattern/fc-pattern.c +203 -0
  361. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-pattern/fc-pattern.sgml +204 -0
  362. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-query/Makefile.am +60 -0
  363. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-query/fc-query.c +194 -0
  364. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-query/fc-query.sgml +204 -0
  365. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-scan/Makefile.am +60 -0
  366. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-scan/fc-scan.c +197 -0
  367. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-scan/fc-scan.sgml +177 -0
  368. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-validate/Makefile.am +60 -0
  369. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-validate/fc-validate.c +250 -0
  370. data/vendor/anongit.freedesktop.org/git/fontconfig/fc-validate/fc-validate.sgml +182 -0
  371. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig-zip.in +29 -0
  372. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig.pc.in +18 -0
  373. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig.spec.in +138 -0
  374. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig/Makefile.am +10 -0
  375. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig/fcfreetype.h +59 -0
  376. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig/fcprivate.h +134 -0
  377. data/vendor/anongit.freedesktop.org/git/fontconfig/fontconfig/fontconfig.h +1107 -0
  378. data/vendor/anongit.freedesktop.org/git/fontconfig/fonts.conf.in +94 -0
  379. data/vendor/anongit.freedesktop.org/git/fontconfig/fonts.dtd +233 -0
  380. data/vendor/anongit.freedesktop.org/git/fontconfig/git.mk +254 -0
  381. data/vendor/anongit.freedesktop.org/git/fontconfig/its/Makefile.am +11 -0
  382. data/vendor/anongit.freedesktop.org/git/fontconfig/its/fontconfig.its +4 -0
  383. data/vendor/anongit.freedesktop.org/git/fontconfig/its/fontconfig.loc +6 -0
  384. data/vendor/anongit.freedesktop.org/git/fontconfig/local.conf +42 -0
  385. data/vendor/anongit.freedesktop.org/git/fontconfig/m4/.gitkeep +0 -0
  386. data/vendor/anongit.freedesktop.org/git/fontconfig/m4/ac_check_symbol.m4 +48 -0
  387. data/vendor/anongit.freedesktop.org/git/fontconfig/m4/ax_cc_for_build.m4 +77 -0
  388. data/vendor/anongit.freedesktop.org/git/fontconfig/m4/ax_create_stdint_h.m4 +695 -0
  389. data/vendor/anongit.freedesktop.org/git/fontconfig/m4/ax_pthread.m4 +337 -0
  390. data/vendor/anongit.freedesktop.org/git/fontconfig/m4/pkg.m4 +214 -0
  391. data/vendor/anongit.freedesktop.org/git/fontconfig/new-version.sh +139 -0
  392. data/vendor/anongit.freedesktop.org/git/fontconfig/po-conf/ChangeLog +12 -0
  393. data/vendor/anongit.freedesktop.org/git/fontconfig/po-conf/LINGUAS +2 -0
  394. data/vendor/anongit.freedesktop.org/git/fontconfig/po-conf/Makevars +80 -0
  395. data/vendor/anongit.freedesktop.org/git/fontconfig/po-conf/POTFILES.in +34 -0
  396. data/vendor/anongit.freedesktop.org/git/fontconfig/po-conf/zh_CN.po +140 -0
  397. data/vendor/anongit.freedesktop.org/git/fontconfig/po/ChangeLog +12 -0
  398. data/vendor/anongit.freedesktop.org/git/fontconfig/po/LINGUAS +2 -0
  399. data/vendor/anongit.freedesktop.org/git/fontconfig/po/Makevars +78 -0
  400. data/vendor/anongit.freedesktop.org/git/fontconfig/po/POTFILES.in +11 -0
  401. data/vendor/anongit.freedesktop.org/git/fontconfig/po/zh_CN.po +608 -0
  402. data/vendor/anongit.freedesktop.org/git/fontconfig/src/Makefile.am +222 -0
  403. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcarch.c +59 -0
  404. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcarch.h +76 -0
  405. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcatomic.c +229 -0
  406. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcatomic.h +145 -0
  407. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fccache.c +1880 -0
  408. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fccfg.c +2668 -0
  409. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fccharset.c +1400 -0
  410. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fccompat.c +280 -0
  411. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcdbg.c +587 -0
  412. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcdefault.c +343 -0
  413. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcdeprecate.h +36 -0
  414. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcdir.c +435 -0
  415. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcformat.c +1220 -0
  416. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcfreetype.c +2626 -0
  417. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcfs.c +149 -0
  418. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcftint.h +54 -0
  419. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fchash.c +216 -0
  420. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcinit.c +258 -0
  421. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcint.h +1344 -0
  422. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fclang.c +1110 -0
  423. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fclist.c +645 -0
  424. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcmatch.c +1240 -0
  425. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcmatrix.c +116 -0
  426. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcmutex.h +127 -0
  427. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcname.c +634 -0
  428. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcobjs.c +168 -0
  429. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcobjs.h +75 -0
  430. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcobjshash.gperf.h +49 -0
  431. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcpat.c +1420 -0
  432. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcptrlist.c +198 -0
  433. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcrange.c +160 -0
  434. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcserialize.c +155 -0
  435. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcstat.c +442 -0
  436. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcstr.c +1371 -0
  437. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcweight.c +103 -0
  438. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcwindows.h +49 -0
  439. data/vendor/anongit.freedesktop.org/git/fontconfig/src/fcxml.c +3508 -0
  440. data/vendor/anongit.freedesktop.org/git/fontconfig/src/ftglue.c +261 -0
  441. data/vendor/anongit.freedesktop.org/git/fontconfig/src/ftglue.h +111 -0
  442. data/vendor/anongit.freedesktop.org/git/fontconfig/src/makealias +38 -0
  443. data/vendor/anongit.freedesktop.org/git/fontconfig/test/4x6.pcf +0 -0
  444. data/vendor/anongit.freedesktop.org/git/fontconfig/test/8x16.pcf +0 -0
  445. data/vendor/anongit.freedesktop.org/git/fontconfig/test/Makefile.am +64 -0
  446. data/vendor/anongit.freedesktop.org/git/fontconfig/test/fonts.conf.in +4 -0
  447. data/vendor/anongit.freedesktop.org/git/fontconfig/test/out.expected-long-family-names +8 -0
  448. data/vendor/anongit.freedesktop.org/git/fontconfig/test/out.expected-no-long-family-names +8 -0
  449. data/vendor/anongit.freedesktop.org/git/fontconfig/test/run-test.sh +205 -0
  450. data/vendor/anongit.freedesktop.org/git/fontconfig/test/test-bz131804.c +135 -0
  451. data/vendor/anongit.freedesktop.org/git/fontconfig/test/test-bz89617.c +40 -0
  452. data/vendor/anongit.freedesktop.org/git/fontconfig/test/test-bz96676.c +32 -0
  453. data/vendor/anongit.freedesktop.org/git/fontconfig/test/test-migration.c +230 -0
  454. data/vendor/anongit.freedesktop.org/git/fontconfig/test/test-pthread.c +101 -0
  455. metadata +518 -0
@@ -0,0 +1,168 @@
1
+ /*
2
+ * fontconfig/src/fclist.c
3
+ *
4
+ * Copyright © 2000 Keith Packard
5
+ *
6
+ * Permission to use, copy, modify, distribute, and sell this software and its
7
+ * documentation for any purpose is hereby granted without fee, provided that
8
+ * the above copyright notice appear in all copies and that both that
9
+ * copyright notice and this permission notice appear in supporting
10
+ * documentation, and that the name of the author(s) not be used in
11
+ * advertising or publicity pertaining to distribution of the software without
12
+ * specific, written prior permission. The authors make no
13
+ * representations about the suitability of this software for any purpose. It
14
+ * is provided "as is" without express or implied warranty.
15
+ *
16
+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18
+ * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22
+ * PERFORMANCE OF THIS SOFTWARE.
23
+ */
24
+
25
+ #include "fcint.h"
26
+
27
+ static unsigned int
28
+ FcObjectTypeHash (register const char *str, register FC_GPERF_SIZE_T len);
29
+
30
+ static const struct FcObjectTypeInfo *
31
+ FcObjectTypeLookup (register const char *str, register FC_GPERF_SIZE_T len);
32
+
33
+ #include "fcobjshash.h"
34
+
35
+ #include <string.h>
36
+
37
+ /* The 1000 is to leave some room for future added internal objects, such
38
+ * that caches from newer fontconfig can still be used with older fontconfig
39
+ * without getting confused. */
40
+ static fc_atomic_int_t next_id = FC_MAX_BASE_OBJECT + FC_EXT_OBJ_INDEX;
41
+ struct FcObjectOtherTypeInfo {
42
+ struct FcObjectOtherTypeInfo *next;
43
+ FcObjectType object;
44
+ FcObject id;
45
+ } *other_types;
46
+
47
+ void
48
+ FcObjectFini (void)
49
+ {
50
+ struct FcObjectOtherTypeInfo *ots, *ot;
51
+
52
+ retry:
53
+ ots = fc_atomic_ptr_get (&other_types);
54
+ if (!ots)
55
+ return;
56
+ if (!fc_atomic_ptr_cmpexch (&other_types, ots, NULL))
57
+ goto retry;
58
+
59
+ while (ots)
60
+ {
61
+ ot = ots->next;
62
+ if (ots->object.object)
63
+ free (ots->object.object);
64
+ free (ots);
65
+ ots = ot;
66
+ }
67
+ }
68
+
69
+ static FcObjectType *
70
+ _FcObjectLookupOtherTypeByName (const char *str, FcObject *id)
71
+ {
72
+ struct FcObjectOtherTypeInfo *ots, *ot;
73
+
74
+ retry:
75
+ ots = fc_atomic_ptr_get (&other_types);
76
+
77
+ for (ot = ots; ot; ot = ot->next)
78
+ if (0 == strcmp (ot->object.object, str))
79
+ break;
80
+
81
+ if (!ot)
82
+ {
83
+ ot = malloc (sizeof (*ot));
84
+ if (!ot)
85
+ return NULL;
86
+
87
+ ot->object.object = (char *) FcStrdup (str);
88
+ ot->object.type = FcTypeUnknown;
89
+ ot->id = fc_atomic_int_add (next_id, +1);
90
+ if (ot->id < (FC_MAX_BASE_OBJECT + FC_EXT_OBJ_INDEX))
91
+ {
92
+ fprintf (stderr, "Fontconfig error: No object ID to assign\n");
93
+ abort ();
94
+ }
95
+ ot->next = ots;
96
+
97
+ if (!fc_atomic_ptr_cmpexch (&other_types, ots, ot)) {
98
+ if (ot->object.object)
99
+ free (ot->object.object);
100
+ free (ot);
101
+ goto retry;
102
+ }
103
+ }
104
+
105
+ if (id)
106
+ *id = ot->id;
107
+
108
+ return &ot->object;
109
+ }
110
+
111
+ FcObject
112
+ FcObjectLookupBuiltinIdByName (const char *str)
113
+ {
114
+ const struct FcObjectTypeInfo *o = FcObjectTypeLookup (str, strlen (str));
115
+
116
+ if (o)
117
+ return o->id;
118
+
119
+ return 0;
120
+ }
121
+
122
+ FcObject
123
+ FcObjectLookupIdByName (const char *str)
124
+ {
125
+ const struct FcObjectTypeInfo *o = FcObjectTypeLookup (str, strlen (str));
126
+ FcObject id;
127
+ if (o)
128
+ return o->id;
129
+
130
+ if (_FcObjectLookupOtherTypeByName (str, &id))
131
+ return id;
132
+
133
+ return 0;
134
+ }
135
+
136
+ const char *
137
+ FcObjectLookupOtherNameById (FcObject id)
138
+ {
139
+ struct FcObjectOtherTypeInfo *ot;
140
+
141
+ for (ot = fc_atomic_ptr_get (&other_types); ot; ot = ot->next)
142
+ if (ot->id == id)
143
+ return ot->object.object;
144
+
145
+ return NULL;
146
+ }
147
+
148
+ const FcObjectType *
149
+ FcObjectLookupOtherTypeByName (const char *str)
150
+ {
151
+ return _FcObjectLookupOtherTypeByName (str, NULL);
152
+ }
153
+
154
+ FcPrivate const FcObjectType *
155
+ FcObjectLookupOtherTypeById (FcObject id)
156
+ {
157
+ struct FcObjectOtherTypeInfo *ot;
158
+
159
+ for (ot = fc_atomic_ptr_get (&other_types); ot; ot = ot->next)
160
+ if (ot->id == id)
161
+ return &ot->object;
162
+
163
+ return NULL;
164
+ }
165
+
166
+
167
+ #include "fcaliastail.h"
168
+ #undef __fcobjs__
@@ -0,0 +1,75 @@
1
+ /*
2
+ * fontconfig/src/fcobjs.h
3
+ *
4
+ * Copyright © 2000 Keith Packard
5
+ *
6
+ * Permission to use, copy, modify, distribute, and sell this software and its
7
+ * documentation for any purpose is hereby granted without fee, provided that
8
+ * the above copyright notice appear in all copies and that both that
9
+ * copyright notice and this permission notice appear in supporting
10
+ * documentation, and that the name of the author(s) not be used in
11
+ * advertising or publicity pertaining to distribution of the software without
12
+ * specific, written prior permission. The authors make no
13
+ * representations about the suitability of this software for any purpose. It
14
+ * is provided "as is" without express or implied warranty.
15
+ *
16
+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18
+ * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22
+ * PERFORMANCE OF THIS SOFTWARE.
23
+ */
24
+ /* DON'T REORDER! The order is part of the cache signature. */
25
+ FC_OBJECT (FAMILY, FcTypeString, FcCompareFamily)
26
+ FC_OBJECT (FAMILYLANG, FcTypeString, NULL)
27
+ FC_OBJECT (STYLE, FcTypeString, FcCompareString)
28
+ FC_OBJECT (STYLELANG, FcTypeString, NULL)
29
+ FC_OBJECT (FULLNAME, FcTypeString, NULL)
30
+ FC_OBJECT (FULLNAMELANG, FcTypeString, NULL)
31
+ FC_OBJECT (SLANT, FcTypeInteger, FcCompareNumber)
32
+ FC_OBJECT (WEIGHT, FcTypeRange, FcCompareRange)
33
+ FC_OBJECT (WIDTH, FcTypeRange, FcCompareRange)
34
+ FC_OBJECT (SIZE, FcTypeRange, FcCompareSize)
35
+ FC_OBJECT (ASPECT, FcTypeDouble, NULL)
36
+ FC_OBJECT (PIXEL_SIZE, FcTypeDouble, FcCompareNumber)
37
+ FC_OBJECT (SPACING, FcTypeInteger, FcCompareNumber)
38
+ FC_OBJECT (FOUNDRY, FcTypeString, FcCompareString)
39
+ FC_OBJECT (ANTIALIAS, FcTypeBool, FcCompareBool)
40
+ FC_OBJECT (HINT_STYLE, FcTypeInteger, NULL)
41
+ FC_OBJECT (HINTING, FcTypeBool, NULL)
42
+ FC_OBJECT (VERTICAL_LAYOUT, FcTypeBool, NULL)
43
+ FC_OBJECT (AUTOHINT, FcTypeBool, NULL)
44
+ FC_OBJECT (GLOBAL_ADVANCE, FcTypeBool, NULL) /* deprecated */
45
+ FC_OBJECT (FILE, FcTypeString, FcCompareFilename)
46
+ FC_OBJECT (INDEX, FcTypeInteger, NULL)
47
+ FC_OBJECT (RASTERIZER, FcTypeString, FcCompareString) /* deprecated */
48
+ FC_OBJECT (OUTLINE, FcTypeBool, FcCompareBool)
49
+ FC_OBJECT (SCALABLE, FcTypeBool, FcCompareBool)
50
+ FC_OBJECT (DPI, FcTypeDouble, NULL)
51
+ FC_OBJECT (RGBA, FcTypeInteger, NULL)
52
+ FC_OBJECT (SCALE, FcTypeDouble, NULL)
53
+ FC_OBJECT (MINSPACE, FcTypeBool, NULL)
54
+ FC_OBJECT (CHARWIDTH, FcTypeInteger, NULL)
55
+ FC_OBJECT (CHAR_HEIGHT, FcTypeInteger, NULL)
56
+ FC_OBJECT (MATRIX, FcTypeMatrix, NULL)
57
+ FC_OBJECT (CHARSET, FcTypeCharSet, FcCompareCharSet)
58
+ FC_OBJECT (LANG, FcTypeLangSet, FcCompareLang)
59
+ FC_OBJECT (FONTVERSION, FcTypeInteger, FcCompareNumber)
60
+ FC_OBJECT (CAPABILITY, FcTypeString, NULL)
61
+ FC_OBJECT (FONTFORMAT, FcTypeString, FcCompareString)
62
+ FC_OBJECT (EMBOLDEN, FcTypeBool, NULL)
63
+ FC_OBJECT (EMBEDDED_BITMAP, FcTypeBool, NULL)
64
+ FC_OBJECT (DECORATIVE, FcTypeBool, FcCompareBool)
65
+ FC_OBJECT (LCD_FILTER, FcTypeInteger, NULL)
66
+ FC_OBJECT (NAMELANG, FcTypeString, NULL)
67
+ FC_OBJECT (FONT_FEATURES, FcTypeString, NULL)
68
+ FC_OBJECT (PRGNAME, FcTypeString, NULL)
69
+ FC_OBJECT (HASH, FcTypeString, NULL) /* deprecated */
70
+ FC_OBJECT (POSTSCRIPT_NAME, FcTypeString, FcComparePostScript)
71
+ FC_OBJECT (COLOR, FcTypeBool, FcCompareBool)
72
+ FC_OBJECT (SYMBOL, FcTypeBool, FcCompareBool)
73
+ FC_OBJECT (FONT_VARIATIONS, FcTypeString, NULL)
74
+ FC_OBJECT (VARIABLE, FcTypeBool, FcCompareBool)
75
+ /* ^-------------- Add new objects here. */
@@ -0,0 +1,49 @@
1
+ /*
2
+ * fontconfig/src/fcobjshash.gperf.h
3
+ *
4
+ * Copyright © 2000 Keith Packard
5
+ *
6
+ * Permission to use, copy, modify, distribute, and sell this software and its
7
+ * documentation for any purpose is hereby granted without fee, provided that
8
+ * the above copyright notice appear in all copies and that both that
9
+ * copyright notice and this permission notice appear in supporting
10
+ * documentation, and that the name of the author(s) not be used in
11
+ * advertising or publicity pertaining to distribution of the software without
12
+ * specific, written prior permission. The authors make no
13
+ * representations about the suitability of this software for any purpose. It
14
+ * is provided "as is" without express or implied warranty.
15
+ *
16
+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18
+ * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22
+ * PERFORMANCE OF THIS SOFTWARE.
23
+ */
24
+ %{
25
+ CUT_OUT_BEGIN
26
+ #include <fontconfig/fontconfig.h>
27
+ CUT_OUT_END
28
+ %}
29
+ %struct-type
30
+ %language=ANSI-C
31
+ %includes
32
+ %enum
33
+ %readonly-tables
34
+ %define slot-name name
35
+ %define hash-function-name FcObjectTypeHash
36
+ %define lookup-function-name FcObjectTypeLookup
37
+
38
+ %pic
39
+ %define string-pool-name FcObjectTypeNamePool
40
+
41
+ struct FcObjectTypeInfo {
42
+ int name;
43
+ int id;
44
+ };
45
+
46
+ %%
47
+ #define FC_OBJECT(NAME, Type, Cmp) FC_##NAME, FC_##NAME##_OBJECT
48
+ #include "fcobjs.h"
49
+ #undef FC_OBJECT
@@ -0,0 +1,1420 @@
1
+ /*
2
+ * Copyright © 2000 Keith Packard
3
+ *
4
+ * Permission to use, copy, modify, distribute, and sell this software and its
5
+ * documentation for any purpose is hereby granted without fee, provided that
6
+ * the above copyright notice appear in all copies and that both that
7
+ * copyright notice and this permission notice appear in supporting
8
+ * documentation, and that the name of the author(s) not be used in
9
+ * advertising or publicity pertaining to distribution of the software without
10
+ * specific, written prior permission. The authors make no
11
+ * representations about the suitability of this software for any purpose. It
12
+ * is provided "as is" without express or implied warranty.
13
+ *
14
+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16
+ * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20
+ * PERFORMANCE OF THIS SOFTWARE.
21
+ */
22
+
23
+ #include "fcint.h"
24
+ #include "fcftint.h"
25
+
26
+ /* Objects MT-safe for readonly access. */
27
+
28
+ FcPattern *
29
+ FcPatternCreate (void)
30
+ {
31
+ FcPattern *p;
32
+
33
+ p = (FcPattern *) malloc (sizeof (FcPattern));
34
+ if (!p)
35
+ return 0;
36
+ memset (p, 0, sizeof (FcPattern));
37
+ p->num = 0;
38
+ p->size = 0;
39
+ p->elts_offset = FcPtrToOffset (p, NULL);
40
+ FcRefInit (&p->ref, 1);
41
+ return p;
42
+ }
43
+
44
+ void
45
+ FcValueDestroy (FcValue v)
46
+ {
47
+ switch ((int) v.type) {
48
+ case FcTypeString:
49
+ FcFree (v.u.s);
50
+ break;
51
+ case FcTypeMatrix:
52
+ FcMatrixFree ((FcMatrix *) v.u.m);
53
+ break;
54
+ case FcTypeCharSet:
55
+ FcCharSetDestroy ((FcCharSet *) v.u.c);
56
+ break;
57
+ case FcTypeLangSet:
58
+ FcLangSetDestroy ((FcLangSet *) v.u.l);
59
+ break;
60
+ case FcTypeRange:
61
+ FcRangeDestroy ((FcRange *) v.u.r);
62
+ break;
63
+ default:
64
+ break;
65
+ }
66
+ }
67
+
68
+ FcValue
69
+ FcValueCanonicalize (const FcValue *v)
70
+ {
71
+ FcValue new;
72
+
73
+ switch ((int) v->type)
74
+ {
75
+ case FcTypeString:
76
+ new.u.s = FcValueString(v);
77
+ new.type = FcTypeString;
78
+ break;
79
+ case FcTypeCharSet:
80
+ new.u.c = FcValueCharSet(v);
81
+ new.type = FcTypeCharSet;
82
+ break;
83
+ case FcTypeLangSet:
84
+ new.u.l = FcValueLangSet(v);
85
+ new.type = FcTypeLangSet;
86
+ break;
87
+ case FcTypeRange:
88
+ new.u.r = FcValueRange(v);
89
+ new.type = FcTypeRange;
90
+ break;
91
+ default:
92
+ new = *v;
93
+ break;
94
+ }
95
+ return new;
96
+ }
97
+
98
+ FcValue
99
+ FcValueSave (FcValue v)
100
+ {
101
+ switch ((int) v.type) {
102
+ case FcTypeString:
103
+ v.u.s = FcStrdup (v.u.s);
104
+ if (!v.u.s)
105
+ v.type = FcTypeVoid;
106
+ break;
107
+ case FcTypeMatrix:
108
+ v.u.m = FcMatrixCopy (v.u.m);
109
+ if (!v.u.m)
110
+ v.type = FcTypeVoid;
111
+ break;
112
+ case FcTypeCharSet:
113
+ v.u.c = FcCharSetCopy ((FcCharSet *) v.u.c);
114
+ if (!v.u.c)
115
+ v.type = FcTypeVoid;
116
+ break;
117
+ case FcTypeLangSet:
118
+ v.u.l = FcLangSetCopy (v.u.l);
119
+ if (!v.u.l)
120
+ v.type = FcTypeVoid;
121
+ break;
122
+ case FcTypeRange:
123
+ v.u.r = FcRangeCopy (v.u.r);
124
+ if (!v.u.r)
125
+ v.type = FcTypeVoid;
126
+ break;
127
+ default:
128
+ break;
129
+ }
130
+ return v;
131
+ }
132
+
133
+ FcValueListPtr
134
+ FcValueListCreate (void)
135
+ {
136
+ return calloc (1, sizeof (FcValueList));
137
+ }
138
+
139
+ void
140
+ FcValueListDestroy (FcValueListPtr l)
141
+ {
142
+ FcValueListPtr next;
143
+ for (; l; l = next)
144
+ {
145
+ switch ((int) l->value.type) {
146
+ case FcTypeString:
147
+ FcFree (l->value.u.s);
148
+ break;
149
+ case FcTypeMatrix:
150
+ FcMatrixFree ((FcMatrix *)l->value.u.m);
151
+ break;
152
+ case FcTypeCharSet:
153
+ FcCharSetDestroy
154
+ ((FcCharSet *) (l->value.u.c));
155
+ break;
156
+ case FcTypeLangSet:
157
+ FcLangSetDestroy
158
+ ((FcLangSet *) (l->value.u.l));
159
+ break;
160
+ case FcTypeRange:
161
+ FcRangeDestroy ((FcRange *) (l->value.u.r));
162
+ break;
163
+ default:
164
+ break;
165
+ }
166
+ next = FcValueListNext(l);
167
+ free(l);
168
+ }
169
+ }
170
+
171
+ FcValueListPtr
172
+ FcValueListPrepend (FcValueListPtr vallist,
173
+ FcValue value,
174
+ FcValueBinding binding)
175
+ {
176
+ FcValueListPtr new;
177
+
178
+ if (value.type == FcTypeVoid)
179
+ return vallist;
180
+ new = FcValueListCreate ();
181
+ if (!new)
182
+ return vallist;
183
+
184
+ new->value = FcValueSave (value);
185
+ new->binding = binding;
186
+ new->next = vallist;
187
+
188
+ return new;
189
+ }
190
+
191
+ FcValueListPtr
192
+ FcValueListAppend (FcValueListPtr vallist,
193
+ FcValue value,
194
+ FcValueBinding binding)
195
+ {
196
+ FcValueListPtr new, last;
197
+
198
+ if (value.type == FcTypeVoid)
199
+ return vallist;
200
+ new = FcValueListCreate ();
201
+ if (!new)
202
+ return vallist;
203
+
204
+ new->value = FcValueSave (value);
205
+ new->binding = binding;
206
+ new->next = NULL;
207
+
208
+ if (vallist)
209
+ {
210
+ for (last = vallist; FcValueListNext (last); last = FcValueListNext (last));
211
+
212
+ last->next = new;
213
+ }
214
+ else
215
+ vallist = new;
216
+
217
+ return vallist;
218
+ }
219
+
220
+ FcValueListPtr
221
+ FcValueListDuplicate(FcValueListPtr orig)
222
+ {
223
+ FcValueListPtr new = NULL, l, t = NULL;
224
+ FcValue v;
225
+
226
+ for (l = orig; l != NULL; l = FcValueListNext (l))
227
+ {
228
+ if (!new)
229
+ {
230
+ t = new = FcValueListCreate();
231
+ }
232
+ else
233
+ {
234
+ t->next = FcValueListCreate();
235
+ t = FcValueListNext (t);
236
+ }
237
+ v = FcValueCanonicalize (&l->value);
238
+ t->value = FcValueSave (v);
239
+ t->binding = l->binding;
240
+ t->next = NULL;
241
+ }
242
+
243
+ return new;
244
+ }
245
+
246
+ FcBool
247
+ FcValueEqual (FcValue va, FcValue vb)
248
+ {
249
+ if (va.type != vb.type)
250
+ {
251
+ if (va.type == FcTypeInteger)
252
+ {
253
+ va.type = FcTypeDouble;
254
+ va.u.d = va.u.i;
255
+ }
256
+ if (vb.type == FcTypeInteger)
257
+ {
258
+ vb.type = FcTypeDouble;
259
+ vb.u.d = vb.u.i;
260
+ }
261
+ if (va.type != vb.type)
262
+ return FcFalse;
263
+ }
264
+ switch (va.type) {
265
+ case FcTypeUnknown:
266
+ return FcFalse; /* don't know how to compare this object */
267
+ case FcTypeVoid:
268
+ return FcTrue;
269
+ case FcTypeInteger:
270
+ return va.u.i == vb.u.i;
271
+ case FcTypeDouble:
272
+ return va.u.d == vb.u.d;
273
+ case FcTypeString:
274
+ return FcStrCmpIgnoreCase (va.u.s, vb.u.s) == 0;
275
+ case FcTypeBool:
276
+ return va.u.b == vb.u.b;
277
+ case FcTypeMatrix:
278
+ return FcMatrixEqual (va.u.m, vb.u.m);
279
+ case FcTypeCharSet:
280
+ return FcCharSetEqual (va.u.c, vb.u.c);
281
+ case FcTypeFTFace:
282
+ return va.u.f == vb.u.f;
283
+ case FcTypeLangSet:
284
+ return FcLangSetEqual (va.u.l, vb.u.l);
285
+ case FcTypeRange:
286
+ return FcRangeIsInRange (va.u.r, vb.u.r);
287
+ }
288
+ return FcFalse;
289
+ }
290
+
291
+ static FcChar32
292
+ FcDoubleHash (double d)
293
+ {
294
+ if (d < 0)
295
+ d = -d;
296
+ if (d > 0xffffffff)
297
+ d = 0xffffffff;
298
+ return (FcChar32) d;
299
+ }
300
+
301
+ FcChar32
302
+ FcStringHash (const FcChar8 *s)
303
+ {
304
+ FcChar8 c;
305
+ FcChar32 h = 0;
306
+
307
+ if (s)
308
+ while ((c = *s++))
309
+ h = ((h << 1) | (h >> 31)) ^ c;
310
+ return h;
311
+ }
312
+
313
+ static FcChar32
314
+ FcValueHash (const FcValue *v)
315
+ {
316
+ switch (v->type) {
317
+ case FcTypeUnknown:
318
+ case FcTypeVoid:
319
+ return 0;
320
+ case FcTypeInteger:
321
+ return (FcChar32) v->u.i;
322
+ case FcTypeDouble:
323
+ return FcDoubleHash (v->u.d);
324
+ case FcTypeString:
325
+ return FcStringHash (FcValueString(v));
326
+ case FcTypeBool:
327
+ return (FcChar32) v->u.b;
328
+ case FcTypeMatrix:
329
+ return (FcDoubleHash (v->u.m->xx) ^
330
+ FcDoubleHash (v->u.m->xy) ^
331
+ FcDoubleHash (v->u.m->yx) ^
332
+ FcDoubleHash (v->u.m->yy));
333
+ case FcTypeCharSet:
334
+ return (FcChar32) FcValueCharSet(v)->num;
335
+ case FcTypeFTFace:
336
+ return FcStringHash ((const FcChar8 *) ((FT_Face) v->u.f)->family_name) ^
337
+ FcStringHash ((const FcChar8 *) ((FT_Face) v->u.f)->style_name);
338
+ case FcTypeLangSet:
339
+ return FcLangSetHash (FcValueLangSet(v));
340
+ case FcTypeRange:
341
+ return FcRangeHash (v->u.r);
342
+ }
343
+ return 0;
344
+ }
345
+
346
+ static FcBool
347
+ FcValueListEqual (FcValueListPtr la, FcValueListPtr lb)
348
+ {
349
+ if (la == lb)
350
+ return FcTrue;
351
+
352
+ while (la && lb)
353
+ {
354
+ if (!FcValueEqual (la->value, lb->value))
355
+ return FcFalse;
356
+ la = FcValueListNext(la);
357
+ lb = FcValueListNext(lb);
358
+ }
359
+ if (la || lb)
360
+ return FcFalse;
361
+ return FcTrue;
362
+ }
363
+
364
+ static FcChar32
365
+ FcValueListHash (FcValueListPtr l)
366
+ {
367
+ FcChar32 hash = 0;
368
+
369
+ for (; l; l = FcValueListNext(l))
370
+ {
371
+ hash = ((hash << 1) | (hash >> 31)) ^ FcValueHash (&l->value);
372
+ }
373
+ return hash;
374
+ }
375
+
376
+ void
377
+ FcPatternDestroy (FcPattern *p)
378
+ {
379
+ int i;
380
+ FcPatternElt *elts;
381
+
382
+ if (!p)
383
+ return;
384
+
385
+ if (FcRefIsConst (&p->ref))
386
+ {
387
+ FcCacheObjectDereference (p);
388
+ return;
389
+ }
390
+
391
+ if (FcRefDec (&p->ref) != 1)
392
+ return;
393
+
394
+ elts = FcPatternElts (p);
395
+ for (i = 0; i < p->num; i++)
396
+ FcValueListDestroy (FcPatternEltValues(&elts[i]));
397
+
398
+ free (elts);
399
+ free (p);
400
+ }
401
+
402
+ static int
403
+ FcPatternObjectPosition (const FcPattern *p, FcObject object)
404
+ {
405
+ int low, high, mid, c;
406
+ FcPatternElt *elts = FcPatternElts(p);
407
+
408
+ low = 0;
409
+ high = p->num - 1;
410
+ c = 1;
411
+ mid = 0;
412
+ while (low <= high)
413
+ {
414
+ mid = (low + high) >> 1;
415
+ c = elts[mid].object - object;
416
+ if (c == 0)
417
+ return mid;
418
+ if (c < 0)
419
+ low = mid + 1;
420
+ else
421
+ high = mid - 1;
422
+ }
423
+ if (c < 0)
424
+ mid++;
425
+ return -(mid + 1);
426
+ }
427
+
428
+ int
429
+ FcPatternPosition (const FcPattern *p, const char *object)
430
+ {
431
+ return FcPatternObjectPosition (p, FcObjectFromName (object));
432
+ }
433
+
434
+ FcPatternElt *
435
+ FcPatternObjectFindElt (const FcPattern *p, FcObject object)
436
+ {
437
+ int i = FcPatternObjectPosition (p, object);
438
+ if (i < 0)
439
+ return 0;
440
+ return &FcPatternElts(p)[i];
441
+ }
442
+
443
+ FcPatternElt *
444
+ FcPatternObjectInsertElt (FcPattern *p, FcObject object)
445
+ {
446
+ int i;
447
+ FcPatternElt *e;
448
+
449
+ i = FcPatternObjectPosition (p, object);
450
+ if (i < 0)
451
+ {
452
+ i = -i - 1;
453
+
454
+ /* reallocate array */
455
+ if (p->num + 1 >= p->size)
456
+ {
457
+ int s = p->size + 16;
458
+ if (p->size)
459
+ {
460
+ FcPatternElt *e0 = FcPatternElts(p);
461
+ e = (FcPatternElt *) realloc (e0, s * sizeof (FcPatternElt));
462
+ if (!e) /* maybe it was mmapped */
463
+ {
464
+ e = malloc(s * sizeof (FcPatternElt));
465
+ if (e)
466
+ memcpy(e, e0, p->num * sizeof (FcPatternElt));
467
+ }
468
+ }
469
+ else
470
+ e = (FcPatternElt *) malloc (s * sizeof (FcPatternElt));
471
+ if (!e)
472
+ return FcFalse;
473
+ p->elts_offset = FcPtrToOffset (p, e);
474
+ while (p->size < s)
475
+ {
476
+ e[p->size].object = 0;
477
+ e[p->size].values = NULL;
478
+ p->size++;
479
+ }
480
+ }
481
+
482
+ e = FcPatternElts(p);
483
+ /* move elts up */
484
+ memmove (e + i + 1,
485
+ e + i,
486
+ sizeof (FcPatternElt) *
487
+ (p->num - i));
488
+
489
+ /* bump count */
490
+ p->num++;
491
+
492
+ e[i].object = object;
493
+ e[i].values = NULL;
494
+ }
495
+
496
+ return FcPatternElts(p) + i;
497
+ }
498
+
499
+ FcBool
500
+ FcPatternEqual (const FcPattern *pa, const FcPattern *pb)
501
+ {
502
+ int i;
503
+ FcPatternElt *pae, *pbe;
504
+
505
+ if (pa == pb)
506
+ return FcTrue;
507
+
508
+ if (pa->num != pb->num)
509
+ return FcFalse;
510
+ pae = FcPatternElts(pa);
511
+ pbe = FcPatternElts(pb);
512
+ for (i = 0; i < pa->num; i++)
513
+ {
514
+ if (pae[i].object != pbe[i].object)
515
+ return FcFalse;
516
+ if (!FcValueListEqual (FcPatternEltValues(&pae[i]),
517
+ FcPatternEltValues(&pbe[i])))
518
+ return FcFalse;
519
+ }
520
+ return FcTrue;
521
+ }
522
+
523
+ FcChar32
524
+ FcPatternHash (const FcPattern *p)
525
+ {
526
+ int i;
527
+ FcChar32 h = 0;
528
+ FcPatternElt *pe = FcPatternElts(p);
529
+
530
+ for (i = 0; i < p->num; i++)
531
+ {
532
+ h = (((h << 1) | (h >> 31)) ^
533
+ pe[i].object ^
534
+ FcValueListHash (FcPatternEltValues(&pe[i])));
535
+ }
536
+ return h;
537
+ }
538
+
539
+ FcBool
540
+ FcPatternEqualSubset (const FcPattern *pai, const FcPattern *pbi, const FcObjectSet *os)
541
+ {
542
+ FcPatternElt *ea, *eb;
543
+ int i;
544
+
545
+ for (i = 0; i < os->nobject; i++)
546
+ {
547
+ FcObject object = FcObjectFromName (os->objects[i]);
548
+ ea = FcPatternObjectFindElt (pai, object);
549
+ eb = FcPatternObjectFindElt (pbi, object);
550
+ if (ea)
551
+ {
552
+ if (!eb)
553
+ return FcFalse;
554
+ if (!FcValueListEqual (FcPatternEltValues(ea), FcPatternEltValues(eb)))
555
+ return FcFalse;
556
+ }
557
+ else
558
+ {
559
+ if (eb)
560
+ return FcFalse;
561
+ }
562
+ }
563
+ return FcTrue;
564
+ }
565
+
566
+ FcBool
567
+ FcPatternObjectListAdd (FcPattern *p,
568
+ FcObject object,
569
+ FcValueListPtr list,
570
+ FcBool append)
571
+ {
572
+ FcPatternElt *e;
573
+ FcValueListPtr l, *prev;
574
+
575
+ if (FcRefIsConst (&p->ref))
576
+ goto bail0;
577
+
578
+ /*
579
+ * Make sure the stored type is valid for built-in objects
580
+ */
581
+ for (l = list; l != NULL; l = FcValueListNext (l))
582
+ {
583
+ if (!FcObjectValidType (object, l->value.type))
584
+ {
585
+ fprintf (stderr,
586
+ "Fontconfig warning: FcPattern object %s does not accept value", FcObjectName (object));
587
+ FcValuePrintFile (stderr, l->value);
588
+ fprintf (stderr, "\n");
589
+ goto bail0;
590
+ }
591
+ }
592
+
593
+ e = FcPatternObjectInsertElt (p, object);
594
+ if (!e)
595
+ goto bail0;
596
+
597
+ if (append)
598
+ {
599
+ for (prev = &e->values; *prev; prev = &(*prev)->next)
600
+ ;
601
+ *prev = list;
602
+ }
603
+ else
604
+ {
605
+ for (prev = &list; *prev; prev = &(*prev)->next)
606
+ ;
607
+ *prev = e->values;
608
+ e->values = list;
609
+ }
610
+
611
+ return FcTrue;
612
+
613
+ bail0:
614
+ return FcFalse;
615
+ }
616
+
617
+ FcBool
618
+ FcPatternObjectAddWithBinding (FcPattern *p,
619
+ FcObject object,
620
+ FcValue value,
621
+ FcValueBinding binding,
622
+ FcBool append)
623
+ {
624
+ FcPatternElt *e;
625
+ FcValueListPtr new, *prev;
626
+
627
+ if (FcRefIsConst (&p->ref))
628
+ goto bail0;
629
+
630
+ new = FcValueListCreate ();
631
+ if (!new)
632
+ goto bail0;
633
+
634
+ value = FcValueSave (value);
635
+ if (value.type == FcTypeVoid)
636
+ goto bail1;
637
+
638
+ /*
639
+ * Make sure the stored type is valid for built-in objects
640
+ */
641
+ if (!FcObjectValidType (object, value.type))
642
+ {
643
+ fprintf (stderr,
644
+ "Fontconfig warning: FcPattern object %s does not accept value",
645
+ FcObjectName (object));
646
+ FcValuePrintFile (stderr, value);
647
+ fprintf (stderr, "\n");
648
+ goto bail1;
649
+ }
650
+
651
+ new->value = value;
652
+ new->binding = binding;
653
+ new->next = NULL;
654
+
655
+ e = FcPatternObjectInsertElt (p, object);
656
+ if (!e)
657
+ goto bail2;
658
+
659
+ if (append)
660
+ {
661
+ for (prev = &e->values; *prev; prev = &(*prev)->next)
662
+ ;
663
+ *prev = new;
664
+ }
665
+ else
666
+ {
667
+ new->next = e->values;
668
+ e->values = new;
669
+ }
670
+
671
+ return FcTrue;
672
+
673
+ bail2:
674
+ FcValueDestroy (value);
675
+ bail1:
676
+ free (new);
677
+ bail0:
678
+ return FcFalse;
679
+ }
680
+
681
+ FcBool
682
+ FcPatternObjectAdd (FcPattern *p, FcObject object, FcValue value, FcBool append)
683
+ {
684
+ return FcPatternObjectAddWithBinding (p, object,
685
+ value, FcValueBindingStrong, append);
686
+ }
687
+
688
+ FcBool
689
+ FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append)
690
+ {
691
+ return FcPatternObjectAddWithBinding (p, FcObjectFromName (object),
692
+ value, FcValueBindingStrong, append);
693
+ }
694
+
695
+ FcBool
696
+ FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append)
697
+ {
698
+ return FcPatternObjectAddWithBinding (p, FcObjectFromName (object),
699
+ value, FcValueBindingWeak, append);
700
+ }
701
+
702
+ FcBool
703
+ FcPatternObjectDel (FcPattern *p, FcObject object)
704
+ {
705
+ FcPatternElt *e;
706
+
707
+ e = FcPatternObjectFindElt (p, object);
708
+ if (!e)
709
+ return FcFalse;
710
+
711
+ /* destroy value */
712
+ FcValueListDestroy (e->values);
713
+
714
+ /* shuffle existing ones down */
715
+ memmove (e, e+1,
716
+ (FcPatternElts(p) + p->num - (e + 1)) *
717
+ sizeof (FcPatternElt));
718
+ p->num--;
719
+ e = FcPatternElts(p) + p->num;
720
+ e->object = 0;
721
+ e->values = NULL;
722
+ return FcTrue;
723
+ }
724
+
725
+ FcBool
726
+ FcPatternDel (FcPattern *p, const char *object)
727
+ {
728
+ return FcPatternObjectDel (p, FcObjectFromName (object));
729
+ }
730
+
731
+ FcBool
732
+ FcPatternRemove (FcPattern *p, const char *object, int id)
733
+ {
734
+ FcPatternElt *e;
735
+ FcValueListPtr *prev, l;
736
+
737
+ e = FcPatternObjectFindElt (p, FcObjectFromName (object));
738
+ if (!e)
739
+ return FcFalse;
740
+ for (prev = &e->values; (l = *prev); prev = &l->next)
741
+ {
742
+ if (!id)
743
+ {
744
+ *prev = l->next;
745
+ l->next = NULL;
746
+ FcValueListDestroy (l);
747
+ if (!e->values)
748
+ FcPatternDel (p, object);
749
+ return FcTrue;
750
+ }
751
+ id--;
752
+ }
753
+ return FcFalse;
754
+ }
755
+
756
+ FcBool
757
+ FcPatternObjectAddInteger (FcPattern *p, FcObject object, int i)
758
+ {
759
+ FcValue v;
760
+
761
+ v.type = FcTypeInteger;
762
+ v.u.i = i;
763
+ return FcPatternObjectAdd (p, object, v, FcTrue);
764
+ }
765
+
766
+ FcBool
767
+ FcPatternAddInteger (FcPattern *p, const char *object, int i)
768
+ {
769
+ return FcPatternObjectAddInteger (p, FcObjectFromName (object), i);
770
+ }
771
+
772
+ FcBool
773
+ FcPatternObjectAddDouble (FcPattern *p, FcObject object, double d)
774
+ {
775
+ FcValue v;
776
+
777
+ v.type = FcTypeDouble;
778
+ v.u.d = d;
779
+ return FcPatternObjectAdd (p, object, v, FcTrue);
780
+ }
781
+
782
+
783
+ FcBool
784
+ FcPatternAddDouble (FcPattern *p, const char *object, double d)
785
+ {
786
+ return FcPatternObjectAddDouble (p, FcObjectFromName (object), d);
787
+ }
788
+
789
+ FcBool
790
+ FcPatternObjectAddString (FcPattern *p, FcObject object, const FcChar8 *s)
791
+ {
792
+ FcValue v;
793
+
794
+ if (!s)
795
+ {
796
+ v.type = FcTypeVoid;
797
+ v.u.s = 0;
798
+ return FcPatternObjectAdd (p, object, v, FcTrue);
799
+ }
800
+
801
+ v.type = FcTypeString;
802
+ v.u.s = s;
803
+ return FcPatternObjectAdd (p, object, v, FcTrue);
804
+ }
805
+
806
+ FcBool
807
+ FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s)
808
+ {
809
+ return FcPatternObjectAddString (p, FcObjectFromName (object), s);
810
+ }
811
+
812
+ FcBool
813
+ FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s)
814
+ {
815
+ FcValue v;
816
+
817
+ v.type = FcTypeMatrix;
818
+ v.u.m = s;
819
+ return FcPatternAdd (p, object, v, FcTrue);
820
+ }
821
+
822
+
823
+ FcBool
824
+ FcPatternObjectAddBool (FcPattern *p, FcObject object, FcBool b)
825
+ {
826
+ FcValue v;
827
+
828
+ v.type = FcTypeBool;
829
+ v.u.b = b;
830
+ return FcPatternObjectAdd (p, object, v, FcTrue);
831
+ }
832
+
833
+ FcBool
834
+ FcPatternAddBool (FcPattern *p, const char *object, FcBool b)
835
+ {
836
+ return FcPatternObjectAddBool (p, FcObjectFromName (object), b);
837
+ }
838
+
839
+ FcBool
840
+ FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c)
841
+ {
842
+ FcValue v;
843
+
844
+ v.type = FcTypeCharSet;
845
+ v.u.c = (FcCharSet *)c;
846
+ return FcPatternAdd (p, object, v, FcTrue);
847
+ }
848
+
849
+ FcBool
850
+ FcPatternAddFTFace (FcPattern *p, const char *object, const FT_Face f)
851
+ {
852
+ FcValue v;
853
+
854
+ v.type = FcTypeFTFace;
855
+ v.u.f = (void *) f;
856
+ return FcPatternAdd (p, object, v, FcTrue);
857
+ }
858
+
859
+ FcBool
860
+ FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls)
861
+ {
862
+ FcValue v;
863
+
864
+ v.type = FcTypeLangSet;
865
+ v.u.l = (FcLangSet *)ls;
866
+ return FcPatternAdd (p, object, v, FcTrue);
867
+ }
868
+
869
+ FcBool
870
+ FcPatternObjectAddRange (FcPattern *p, FcObject object, const FcRange *r)
871
+ {
872
+ FcValue v;
873
+
874
+ v.type = FcTypeRange;
875
+ v.u.r = (FcRange *)r;
876
+ return FcPatternObjectAdd (p, object, v, FcTrue);
877
+ }
878
+
879
+ FcBool
880
+ FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r)
881
+ {
882
+ return FcPatternObjectAddRange (p, FcObjectFromName (object), r);
883
+ }
884
+
885
+ FcResult
886
+ FcPatternObjectGetWithBinding (const FcPattern *p, FcObject object, int id, FcValue *v, FcValueBinding *b)
887
+ {
888
+ FcPatternElt *e;
889
+ FcValueListPtr l;
890
+
891
+ if (!p)
892
+ return FcResultNoMatch;
893
+ e = FcPatternObjectFindElt (p, object);
894
+ if (!e)
895
+ return FcResultNoMatch;
896
+ for (l = FcPatternEltValues(e); l; l = FcValueListNext(l))
897
+ {
898
+ if (!id)
899
+ {
900
+ *v = FcValueCanonicalize(&l->value);
901
+ if (b)
902
+ *b = l->binding;
903
+ return FcResultMatch;
904
+ }
905
+ id--;
906
+ }
907
+ return FcResultNoId;
908
+ }
909
+
910
+ FcResult
911
+ FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v)
912
+ {
913
+ return FcPatternObjectGetWithBinding (p, object, id, v, NULL);
914
+ }
915
+
916
+ FcResult
917
+ FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b)
918
+ {
919
+ return FcPatternObjectGetWithBinding (p, FcObjectFromName (object), id, v, b);
920
+ }
921
+
922
+ FcResult
923
+ FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v)
924
+ {
925
+ return FcPatternObjectGetWithBinding (p, FcObjectFromName (object), id, v, NULL);
926
+ }
927
+
928
+ FcResult
929
+ FcPatternObjectGetInteger (const FcPattern *p, FcObject object, int id, int *i)
930
+ {
931
+ FcValue v;
932
+ FcResult r;
933
+
934
+ r = FcPatternObjectGet (p, object, id, &v);
935
+ if (r != FcResultMatch)
936
+ return r;
937
+ switch ((int) v.type) {
938
+ case FcTypeDouble:
939
+ *i = (int) v.u.d;
940
+ break;
941
+ case FcTypeInteger:
942
+ *i = v.u.i;
943
+ break;
944
+ default:
945
+ return FcResultTypeMismatch;
946
+ }
947
+ return FcResultMatch;
948
+ }
949
+
950
+ FcResult
951
+ FcPatternGetInteger (const FcPattern *p, const char *object, int id, int *i)
952
+ {
953
+ return FcPatternObjectGetInteger (p, FcObjectFromName (object), id, i);
954
+ }
955
+
956
+
957
+ FcResult
958
+ FcPatternObjectGetDouble (const FcPattern *p, FcObject object, int id, double *d)
959
+ {
960
+ FcValue v;
961
+ FcResult r;
962
+
963
+ r = FcPatternObjectGet (p, object, id, &v);
964
+ if (r != FcResultMatch)
965
+ return r;
966
+ switch ((int) v.type) {
967
+ case FcTypeDouble:
968
+ *d = v.u.d;
969
+ break;
970
+ case FcTypeInteger:
971
+ *d = (double) v.u.i;
972
+ break;
973
+ default:
974
+ return FcResultTypeMismatch;
975
+ }
976
+ return FcResultMatch;
977
+ }
978
+
979
+ FcResult
980
+ FcPatternGetDouble (const FcPattern *p, const char *object, int id, double *d)
981
+ {
982
+ return FcPatternObjectGetDouble (p, FcObjectFromName (object), id, d);
983
+ }
984
+
985
+ FcResult
986
+ FcPatternObjectGetString (const FcPattern *p, FcObject object, int id, FcChar8 ** s)
987
+ {
988
+ FcValue v;
989
+ FcResult r;
990
+
991
+ r = FcPatternObjectGet (p, object, id, &v);
992
+ if (r != FcResultMatch)
993
+ return r;
994
+ if (v.type != FcTypeString)
995
+ return FcResultTypeMismatch;
996
+
997
+ *s = (FcChar8 *) v.u.s;
998
+ return FcResultMatch;
999
+ }
1000
+
1001
+ FcResult
1002
+ FcPatternGetString (const FcPattern *p, const char *object, int id, FcChar8 ** s)
1003
+ {
1004
+ return FcPatternObjectGetString (p, FcObjectFromName (object), id, s);
1005
+ }
1006
+
1007
+ FcResult
1008
+ FcPatternGetMatrix(const FcPattern *p, const char *object, int id, FcMatrix **m)
1009
+ {
1010
+ FcValue v;
1011
+ FcResult r;
1012
+
1013
+ r = FcPatternGet (p, object, id, &v);
1014
+ if (r != FcResultMatch)
1015
+ return r;
1016
+ if (v.type != FcTypeMatrix)
1017
+ return FcResultTypeMismatch;
1018
+ *m = (FcMatrix *)v.u.m;
1019
+ return FcResultMatch;
1020
+ }
1021
+
1022
+
1023
+ FcResult
1024
+ FcPatternObjectGetBool (const FcPattern *p, FcObject object, int id, FcBool *b)
1025
+ {
1026
+ FcValue v;
1027
+ FcResult r;
1028
+
1029
+ r = FcPatternObjectGet (p, object, id, &v);
1030
+ if (r != FcResultMatch)
1031
+ return r;
1032
+ if (v.type != FcTypeBool)
1033
+ return FcResultTypeMismatch;
1034
+ *b = v.u.b;
1035
+ return FcResultMatch;
1036
+ }
1037
+
1038
+ FcResult
1039
+ FcPatternGetBool(const FcPattern *p, const char *object, int id, FcBool *b)
1040
+ {
1041
+ return FcPatternObjectGetBool (p, FcObjectFromName (object), id, b);
1042
+ }
1043
+
1044
+ FcResult
1045
+ FcPatternGetCharSet(const FcPattern *p, const char *object, int id, FcCharSet **c)
1046
+ {
1047
+ FcValue v;
1048
+ FcResult r;
1049
+
1050
+ r = FcPatternGet (p, object, id, &v);
1051
+ if (r != FcResultMatch)
1052
+ return r;
1053
+ if (v.type != FcTypeCharSet)
1054
+ return FcResultTypeMismatch;
1055
+ *c = (FcCharSet *)v.u.c;
1056
+ return FcResultMatch;
1057
+ }
1058
+
1059
+ FcResult
1060
+ FcPatternGetFTFace(const FcPattern *p, const char *object, int id, FT_Face *f)
1061
+ {
1062
+ FcValue v;
1063
+ FcResult r;
1064
+
1065
+ r = FcPatternGet (p, object, id, &v);
1066
+ if (r != FcResultMatch)
1067
+ return r;
1068
+ if (v.type != FcTypeFTFace)
1069
+ return FcResultTypeMismatch;
1070
+ *f = (FT_Face) v.u.f;
1071
+ return FcResultMatch;
1072
+ }
1073
+
1074
+ FcResult
1075
+ FcPatternGetLangSet(const FcPattern *p, const char *object, int id, FcLangSet **ls)
1076
+ {
1077
+ FcValue v;
1078
+ FcResult r;
1079
+
1080
+ r = FcPatternGet (p, object, id, &v);
1081
+ if (r != FcResultMatch)
1082
+ return r;
1083
+ if (v.type != FcTypeLangSet)
1084
+ return FcResultTypeMismatch;
1085
+ *ls = (FcLangSet *)v.u.l;
1086
+ return FcResultMatch;
1087
+ }
1088
+
1089
+ FcResult
1090
+ FcPatternObjectGetRange (const FcPattern *p, FcObject object, int id, FcRange **r)
1091
+ {
1092
+ FcValue v;
1093
+ FcResult res;
1094
+
1095
+ res = FcPatternObjectGet (p, object, id, &v);
1096
+ if (res != FcResultMatch)
1097
+ return res;
1098
+ switch ((int)v.type) {
1099
+ case FcTypeRange:
1100
+ *r = (FcRange *)v.u.r;
1101
+ break;
1102
+ default:
1103
+ return FcResultTypeMismatch;
1104
+ }
1105
+ return FcResultMatch;
1106
+ }
1107
+
1108
+ FcResult
1109
+ FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r)
1110
+ {
1111
+ return FcPatternObjectGetRange (p, FcObjectFromName (object), id, r);
1112
+ }
1113
+
1114
+ FcPattern *
1115
+ FcPatternDuplicate (const FcPattern *orig)
1116
+ {
1117
+ FcPattern *new;
1118
+ FcPatternElt *e;
1119
+ int i;
1120
+ FcValueListPtr l;
1121
+
1122
+ if (!orig)
1123
+ return NULL;
1124
+
1125
+ new = FcPatternCreate ();
1126
+ if (!new)
1127
+ goto bail0;
1128
+
1129
+ e = FcPatternElts(orig);
1130
+
1131
+ for (i = 0; i < orig->num; i++)
1132
+ {
1133
+ for (l = FcPatternEltValues(e + i); l; l = FcValueListNext(l))
1134
+ {
1135
+ if (!FcPatternObjectAddWithBinding (new, e[i].object,
1136
+ FcValueCanonicalize(&l->value),
1137
+ l->binding,
1138
+ FcTrue))
1139
+ goto bail1;
1140
+
1141
+ }
1142
+ }
1143
+
1144
+ return new;
1145
+
1146
+ bail1:
1147
+ FcPatternDestroy (new);
1148
+ bail0:
1149
+ return 0;
1150
+ }
1151
+
1152
+ void
1153
+ FcPatternReference (FcPattern *p)
1154
+ {
1155
+ if (!FcRefIsConst (&p->ref))
1156
+ FcRefInc (&p->ref);
1157
+ else
1158
+ FcCacheObjectReference (p);
1159
+ }
1160
+
1161
+ FcPattern *
1162
+ FcPatternVaBuild (FcPattern *p, va_list va)
1163
+ {
1164
+ FcPattern *ret;
1165
+
1166
+ FcPatternVapBuild (ret, p, va);
1167
+ return ret;
1168
+ }
1169
+
1170
+ FcPattern *
1171
+ FcPatternBuild (FcPattern *p, ...)
1172
+ {
1173
+ va_list va;
1174
+
1175
+ va_start (va, p);
1176
+ FcPatternVapBuild (p, p, va);
1177
+ va_end (va);
1178
+ return p;
1179
+ }
1180
+
1181
+ /*
1182
+ * Add all of the elements in 's' to 'p'
1183
+ */
1184
+ FcBool
1185
+ FcPatternAppend (FcPattern *p, FcPattern *s)
1186
+ {
1187
+ int i;
1188
+ FcPatternElt *e;
1189
+ FcValueListPtr v;
1190
+
1191
+ for (i = 0; i < s->num; i++)
1192
+ {
1193
+ e = FcPatternElts(s)+i;
1194
+ for (v = FcPatternEltValues(e); v; v = FcValueListNext(v))
1195
+ {
1196
+ if (!FcPatternObjectAddWithBinding (p, e->object,
1197
+ FcValueCanonicalize(&v->value),
1198
+ v->binding, FcTrue))
1199
+ return FcFalse;
1200
+ }
1201
+ }
1202
+ return FcTrue;
1203
+ }
1204
+
1205
+ FcPattern *
1206
+ FcPatternFilter (FcPattern *p, const FcObjectSet *os)
1207
+ {
1208
+ int i;
1209
+ FcPattern *ret;
1210
+ FcPatternElt *e;
1211
+ FcValueListPtr v;
1212
+
1213
+ if (!os)
1214
+ return FcPatternDuplicate (p);
1215
+
1216
+ ret = FcPatternCreate ();
1217
+ if (!ret)
1218
+ return NULL;
1219
+
1220
+ for (i = 0; i < os->nobject; i++)
1221
+ {
1222
+ FcObject object = FcObjectFromName (os->objects[i]);
1223
+ e = FcPatternObjectFindElt (p, object);
1224
+ if (e)
1225
+ {
1226
+ for (v = FcPatternEltValues(e); v; v = FcValueListNext(v))
1227
+ {
1228
+ if (!FcPatternObjectAddWithBinding (ret, e->object,
1229
+ FcValueCanonicalize(&v->value),
1230
+ v->binding, FcTrue))
1231
+ goto bail0;
1232
+ }
1233
+ }
1234
+ }
1235
+ return ret;
1236
+
1237
+ bail0:
1238
+ FcPatternDestroy (ret);
1239
+ return NULL;
1240
+ }
1241
+
1242
+
1243
+ FcBool
1244
+ FcPatternSerializeAlloc (FcSerialize *serialize, const FcPattern *pat)
1245
+ {
1246
+ int i;
1247
+ FcPatternElt *elts = FcPatternElts(pat);
1248
+
1249
+ if (!FcSerializeAlloc (serialize, pat, sizeof (FcPattern)))
1250
+ return FcFalse;
1251
+ if (!FcSerializeAlloc (serialize, elts, pat->num * sizeof (FcPatternElt)))
1252
+ return FcFalse;
1253
+ for (i = 0; i < pat->num; i++)
1254
+ if (!FcValueListSerializeAlloc (serialize, FcPatternEltValues(elts+i)))
1255
+ return FcFalse;
1256
+ return FcTrue;
1257
+ }
1258
+
1259
+ FcPattern *
1260
+ FcPatternSerialize (FcSerialize *serialize, const FcPattern *pat)
1261
+ {
1262
+ FcPattern *pat_serialized;
1263
+ FcPatternElt *elts = FcPatternElts (pat);
1264
+ FcPatternElt *elts_serialized;
1265
+ FcValueList *values_serialized;
1266
+ int i;
1267
+
1268
+ pat_serialized = FcSerializePtr (serialize, pat);
1269
+ if (!pat_serialized)
1270
+ return NULL;
1271
+ *pat_serialized = *pat;
1272
+ pat_serialized->size = pat->num;
1273
+ FcRefSetConst (&pat_serialized->ref);
1274
+
1275
+ elts_serialized = FcSerializePtr (serialize, elts);
1276
+ if (!elts_serialized)
1277
+ return NULL;
1278
+
1279
+ pat_serialized->elts_offset = FcPtrToOffset (pat_serialized,
1280
+ elts_serialized);
1281
+
1282
+ for (i = 0; i < pat->num; i++)
1283
+ {
1284
+ values_serialized = FcValueListSerialize (serialize, FcPatternEltValues (elts+i));
1285
+ if (!values_serialized)
1286
+ return NULL;
1287
+ elts_serialized[i].object = elts[i].object;
1288
+ elts_serialized[i].values = FcPtrToEncodedOffset (&elts_serialized[i],
1289
+ values_serialized,
1290
+ FcValueList);
1291
+ }
1292
+ if (FcDebug() & FC_DBG_CACHEV) {
1293
+ printf ("Raw pattern:\n");
1294
+ FcPatternPrint (pat);
1295
+ printf ("Serialized pattern:\n");
1296
+ FcPatternPrint (pat_serialized);
1297
+ printf ("\n");
1298
+ }
1299
+ return pat_serialized;
1300
+ }
1301
+
1302
+ FcBool
1303
+ FcValueListSerializeAlloc (FcSerialize *serialize, const FcValueList *vl)
1304
+ {
1305
+ while (vl)
1306
+ {
1307
+ if (!FcSerializeAlloc (serialize, vl, sizeof (FcValueList)))
1308
+ return FcFalse;
1309
+ switch ((int) vl->value.type) {
1310
+ case FcTypeString:
1311
+ if (!FcStrSerializeAlloc (serialize, vl->value.u.s))
1312
+ return FcFalse;
1313
+ break;
1314
+ case FcTypeCharSet:
1315
+ if (!FcCharSetSerializeAlloc (serialize, vl->value.u.c))
1316
+ return FcFalse;
1317
+ break;
1318
+ case FcTypeLangSet:
1319
+ if (!FcLangSetSerializeAlloc (serialize, vl->value.u.l))
1320
+ return FcFalse;
1321
+ break;
1322
+ case FcTypeRange:
1323
+ if (!FcRangeSerializeAlloc (serialize, vl->value.u.r))
1324
+ return FcFalse;
1325
+ break;
1326
+ default:
1327
+ break;
1328
+ }
1329
+ vl = vl->next;
1330
+ }
1331
+ return FcTrue;
1332
+ }
1333
+
1334
+ FcValueList *
1335
+ FcValueListSerialize (FcSerialize *serialize, const FcValueList *vl)
1336
+ {
1337
+ FcValueList *vl_serialized;
1338
+ FcChar8 *s_serialized;
1339
+ FcCharSet *c_serialized;
1340
+ FcLangSet *l_serialized;
1341
+ FcRange *r_serialized;
1342
+ FcValueList *head_serialized = NULL;
1343
+ FcValueList *prev_serialized = NULL;
1344
+
1345
+ while (vl)
1346
+ {
1347
+ vl_serialized = FcSerializePtr (serialize, vl);
1348
+ if (!vl_serialized)
1349
+ return NULL;
1350
+
1351
+ if (prev_serialized)
1352
+ prev_serialized->next = FcPtrToEncodedOffset (prev_serialized,
1353
+ vl_serialized,
1354
+ FcValueList);
1355
+ else
1356
+ head_serialized = vl_serialized;
1357
+
1358
+ vl_serialized->next = NULL;
1359
+ vl_serialized->value.type = vl->value.type;
1360
+ switch ((int) vl->value.type) {
1361
+ case FcTypeInteger:
1362
+ vl_serialized->value.u.i = vl->value.u.i;
1363
+ break;
1364
+ case FcTypeDouble:
1365
+ vl_serialized->value.u.d = vl->value.u.d;
1366
+ break;
1367
+ case FcTypeString:
1368
+ s_serialized = FcStrSerialize (serialize, vl->value.u.s);
1369
+ if (!s_serialized)
1370
+ return NULL;
1371
+ vl_serialized->value.u.s = FcPtrToEncodedOffset (&vl_serialized->value,
1372
+ s_serialized,
1373
+ FcChar8);
1374
+ break;
1375
+ case FcTypeBool:
1376
+ vl_serialized->value.u.b = vl->value.u.b;
1377
+ break;
1378
+ case FcTypeMatrix:
1379
+ /* can't happen */
1380
+ break;
1381
+ case FcTypeCharSet:
1382
+ c_serialized = FcCharSetSerialize (serialize, vl->value.u.c);
1383
+ if (!c_serialized)
1384
+ return NULL;
1385
+ vl_serialized->value.u.c = FcPtrToEncodedOffset (&vl_serialized->value,
1386
+ c_serialized,
1387
+ FcCharSet);
1388
+ break;
1389
+ case FcTypeFTFace:
1390
+ /* can't happen */
1391
+ break;
1392
+ case FcTypeLangSet:
1393
+ l_serialized = FcLangSetSerialize (serialize, vl->value.u.l);
1394
+ if (!l_serialized)
1395
+ return NULL;
1396
+ vl_serialized->value.u.l = FcPtrToEncodedOffset (&vl_serialized->value,
1397
+ l_serialized,
1398
+ FcLangSet);
1399
+ break;
1400
+ case FcTypeRange:
1401
+ r_serialized = FcRangeSerialize (serialize, vl->value.u.r);
1402
+ if (!r_serialized)
1403
+ return NULL;
1404
+ vl_serialized->value.u.r = FcPtrToEncodedOffset (&vl_serialized->value,
1405
+ r_serialized,
1406
+ FcRange);
1407
+ break;
1408
+ default:
1409
+ break;
1410
+ }
1411
+ prev_serialized = vl_serialized;
1412
+ vl = vl->next;
1413
+ }
1414
+ return head_serialized;
1415
+ }
1416
+
1417
+ #define __fcpat__
1418
+ #include "fcaliastail.h"
1419
+ #include "fcftaliastail.h"
1420
+ #undef __fcpat__