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,1240 @@
1
+ /*
2
+ * fontconfig/src/fcmatch.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 double
28
+ FcCompareNumber (const FcValue *value1, const FcValue *value2, FcValue *bestValue)
29
+ {
30
+ double v1, v2, v;
31
+
32
+ switch ((int) value1->type) {
33
+ case FcTypeInteger:
34
+ v1 = (double) value1->u.i;
35
+ break;
36
+ case FcTypeDouble:
37
+ v1 = value1->u.d;
38
+ break;
39
+ default:
40
+ return -1.0;
41
+ }
42
+ switch ((int) value2->type) {
43
+ case FcTypeInteger:
44
+ v2 = (double) value2->u.i;
45
+ break;
46
+ case FcTypeDouble:
47
+ v2 = value2->u.d;
48
+ break;
49
+ default:
50
+ return -1.0;
51
+ }
52
+ v = v2 - v1;
53
+ if (v < 0)
54
+ v = -v;
55
+ *bestValue = FcValueCanonicalize (value2);
56
+ return v;
57
+ }
58
+
59
+ static double
60
+ FcCompareString (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
61
+ {
62
+ *bestValue = FcValueCanonicalize (v2);
63
+ return (double) FcStrCmpIgnoreCase (FcValueString(v1), FcValueString(v2)) != 0;
64
+ }
65
+
66
+ static double
67
+ FcCompareFamily (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
68
+ {
69
+ /* rely on the guarantee in FcPatternObjectAddWithBinding that
70
+ * families are always FcTypeString. */
71
+ const FcChar8* v1_string = FcValueString(v1);
72
+ const FcChar8* v2_string = FcValueString(v2);
73
+
74
+ *bestValue = FcValueCanonicalize (v2);
75
+
76
+ if (FcToLower(*v1_string) != FcToLower(*v2_string) &&
77
+ *v1_string != ' ' && *v2_string != ' ')
78
+ return 1.0;
79
+
80
+ return (double) FcStrCmpIgnoreBlanksAndCase (v1_string, v2_string) != 0;
81
+ }
82
+
83
+ static double
84
+ FcComparePostScript (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
85
+ {
86
+ const FcChar8 *v1_string = FcValueString (v1);
87
+ const FcChar8 *v2_string = FcValueString (v2);
88
+ int n;
89
+ size_t len;
90
+
91
+ *bestValue = FcValueCanonicalize (v2);
92
+
93
+ if (FcToLower (*v1_string) != FcToLower (*v2_string) &&
94
+ *v1_string != ' ' && *v2_string != ' ')
95
+ return 1.0;
96
+
97
+ n = FcStrMatchIgnoreCaseAndDelims (v1_string, v2_string, (const FcChar8 *)" -");
98
+ len = strlen ((const char *)v1_string);
99
+
100
+ return (double)(len - n) / (double)len;
101
+ }
102
+
103
+ static double
104
+ FcCompareLang (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
105
+ {
106
+ FcLangResult result;
107
+ FcValue value1 = FcValueCanonicalize(v1), value2 = FcValueCanonicalize(v2);
108
+
109
+ switch ((int) value1.type) {
110
+ case FcTypeLangSet:
111
+ switch ((int) value2.type) {
112
+ case FcTypeLangSet:
113
+ result = FcLangSetCompare (value1.u.l, value2.u.l);
114
+ break;
115
+ case FcTypeString:
116
+ result = FcLangSetHasLang (value1.u.l,
117
+ value2.u.s);
118
+ break;
119
+ default:
120
+ return -1.0;
121
+ }
122
+ break;
123
+ case FcTypeString:
124
+ switch ((int) value2.type) {
125
+ case FcTypeLangSet:
126
+ result = FcLangSetHasLang (value2.u.l, value1.u.s);
127
+ break;
128
+ case FcTypeString:
129
+ result = FcLangCompare (value1.u.s,
130
+ value2.u.s);
131
+ break;
132
+ default:
133
+ return -1.0;
134
+ }
135
+ break;
136
+ default:
137
+ return -1.0;
138
+ }
139
+ *bestValue = FcValueCanonicalize (v2);
140
+ switch (result) {
141
+ case FcLangEqual:
142
+ return 0;
143
+ case FcLangDifferentCountry:
144
+ return 1;
145
+ case FcLangDifferentLang:
146
+ default:
147
+ return 2;
148
+ }
149
+ }
150
+
151
+ static double
152
+ FcCompareBool (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
153
+ {
154
+ if (v2->type != FcTypeBool || v1->type != FcTypeBool)
155
+ return -1.0;
156
+
157
+ if (v2->u.b != FcDontCare)
158
+ *bestValue = FcValueCanonicalize (v2);
159
+ else
160
+ *bestValue = FcValueCanonicalize (v1);
161
+
162
+ return (double) ((v2->u.b ^ v1->u.b) == 1);
163
+ }
164
+
165
+ static double
166
+ FcCompareCharSet (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
167
+ {
168
+ *bestValue = FcValueCanonicalize (v2); /* TODO Improve. */
169
+ return (double) FcCharSetSubtractCount (FcValueCharSet(v1), FcValueCharSet(v2));
170
+ }
171
+
172
+ static double
173
+ FcCompareRange (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
174
+ {
175
+ FcValue value1 = FcValueCanonicalize (v1);
176
+ FcValue value2 = FcValueCanonicalize (v2);
177
+ double b1, e1, b2, e2, d;
178
+
179
+ switch ((int) value1.type) {
180
+ case FcTypeInteger:
181
+ b1 = e1 = value1.u.i;
182
+ break;
183
+ case FcTypeDouble:
184
+ b1 = e1 = value1.u.d;
185
+ break;
186
+ case FcTypeRange:
187
+ b1 = value1.u.r->begin;
188
+ e1 = value1.u.r->end;
189
+ break;
190
+ default:
191
+ return -1;
192
+ }
193
+ switch ((int) value2.type) {
194
+ case FcTypeInteger:
195
+ b2 = e2 = value2.u.i;
196
+ break;
197
+ case FcTypeDouble:
198
+ b2 = e2 = value2.u.d;
199
+ break;
200
+ case FcTypeRange:
201
+ b2 = value2.u.r->begin;
202
+ e2 = value2.u.r->end;
203
+ break;
204
+ default:
205
+ return -1;
206
+ }
207
+
208
+ if (e1 < b2)
209
+ d = b2;
210
+ else if (e2 < b1)
211
+ d = e2;
212
+ else
213
+ d = (FC_MAX (b1, b2) + FC_MIN (e1, e2)) * .5;
214
+
215
+ bestValue->type = FcTypeDouble;
216
+ bestValue->u.d = d;
217
+
218
+ /* If the ranges overlap, it's a match, otherwise return closest distance. */
219
+ if (e1 < b2 || e2 < b1)
220
+ return FC_MIN (fabs (b2 - e1), fabs (b1 - e2));
221
+ else
222
+ return 0.0;
223
+ }
224
+
225
+ static double
226
+ FcCompareSize (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
227
+ {
228
+ FcValue value1 = FcValueCanonicalize (v1);
229
+ FcValue value2 = FcValueCanonicalize (v2);
230
+ double b1, e1, b2, e2;
231
+
232
+ switch ((int) value1.type) {
233
+ case FcTypeInteger:
234
+ b1 = e1 = value1.u.i;
235
+ break;
236
+ case FcTypeDouble:
237
+ b1 = e1 = value1.u.d;
238
+ break;
239
+ case FcTypeRange:
240
+ abort();
241
+ b1 = value1.u.r->begin;
242
+ e1 = value1.u.r->end;
243
+ break;
244
+ default:
245
+ return -1;
246
+ }
247
+ switch ((int) value2.type) {
248
+ case FcTypeInteger:
249
+ b2 = e2 = value2.u.i;
250
+ break;
251
+ case FcTypeDouble:
252
+ b2 = e2 = value2.u.d;
253
+ break;
254
+ case FcTypeRange:
255
+ b2 = value2.u.r->begin;
256
+ e2 = value2.u.r->end;
257
+ break;
258
+ default:
259
+ return -1;
260
+ }
261
+
262
+ bestValue->type = FcTypeDouble;
263
+ bestValue->u.d = (b1 + e1) * .5;
264
+
265
+ /* If the ranges overlap, it's a match, otherwise return closest distance. */
266
+ if (e1 < b2 || e2 < b1)
267
+ return FC_MIN (fabs (b2 - e1), fabs (b1 - e2));
268
+ if (b2 != e2 && b1 == e2) /* Semi-closed interval. */
269
+ return 1e-15;
270
+ else
271
+ return 0.0;
272
+ }
273
+
274
+ static double
275
+ FcCompareFilename (const FcValue *v1, const FcValue *v2, FcValue *bestValue)
276
+ {
277
+ const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2);
278
+ *bestValue = FcValueCanonicalize (v2);
279
+ if (FcStrCmp (s1, s2) == 0)
280
+ return 0.0;
281
+ else if (FcStrCmpIgnoreCase (s1, s2) == 0)
282
+ return 1.0;
283
+ else if (FcStrGlobMatch (s1, s2))
284
+ return 2.0;
285
+ else
286
+ return 3.0;
287
+ }
288
+
289
+
290
+ /* Define priorities to -1 for objects that don't have a compare function. */
291
+
292
+ #define PRI_NULL(n) \
293
+ PRI_ ## n ## _STRONG = -1, \
294
+ PRI_ ## n ## _WEAK = -1,
295
+ #define PRI1(n)
296
+ #define PRI_FcCompareFamily(n) PRI1(n)
297
+ #define PRI_FcCompareString(n) PRI1(n)
298
+ #define PRI_FcCompareNumber(n) PRI1(n)
299
+ #define PRI_FcCompareBool(n) PRI1(n)
300
+ #define PRI_FcCompareFilename(n) PRI1(n)
301
+ #define PRI_FcCompareCharSet(n) PRI1(n)
302
+ #define PRI_FcCompareLang(n) PRI1(n)
303
+ #define PRI_FcComparePostScript(n) PRI1(n)
304
+ #define PRI_FcCompareRange(n) PRI1(n)
305
+ #define PRI_FcCompareSize(n) PRI1(n)
306
+
307
+ #define FC_OBJECT(NAME, Type, Cmp) PRI_##Cmp(NAME)
308
+
309
+ typedef enum _FcMatcherPriorityDummy {
310
+ #include "fcobjs.h"
311
+ } FcMatcherPriorityDummy;
312
+
313
+ #undef FC_OBJECT
314
+
315
+
316
+ /* Canonical match priority order. */
317
+
318
+ #undef PRI1
319
+ #define PRI1(n) \
320
+ PRI_ ## n, \
321
+ PRI_ ## n ## _STRONG = PRI_ ## n, \
322
+ PRI_ ## n ## _WEAK = PRI_ ## n
323
+
324
+ typedef enum _FcMatcherPriority {
325
+ PRI1(FILE),
326
+ PRI1(FONTFORMAT),
327
+ PRI1(VARIABLE),
328
+ PRI1(SCALABLE),
329
+ PRI1(COLOR),
330
+ PRI1(FOUNDRY),
331
+ PRI1(CHARSET),
332
+ PRI_FAMILY_STRONG,
333
+ PRI_POSTSCRIPT_NAME_STRONG,
334
+ PRI1(LANG),
335
+ PRI_FAMILY_WEAK,
336
+ PRI_POSTSCRIPT_NAME_WEAK,
337
+ PRI1(SYMBOL),
338
+ PRI1(SPACING),
339
+ PRI1(SIZE),
340
+ PRI1(PIXEL_SIZE),
341
+ PRI1(STYLE),
342
+ PRI1(SLANT),
343
+ PRI1(WEIGHT),
344
+ PRI1(WIDTH),
345
+ PRI1(DECORATIVE),
346
+ PRI1(ANTIALIAS),
347
+ PRI1(RASTERIZER),
348
+ PRI1(OUTLINE),
349
+ PRI1(FONTVERSION),
350
+ PRI_END
351
+ } FcMatcherPriority;
352
+
353
+ #undef PRI1
354
+
355
+ typedef struct _FcMatcher {
356
+ FcObject object;
357
+ double (*compare) (const FcValue *v1, const FcValue *v2, FcValue *bestValue);
358
+ int strong, weak;
359
+ } FcMatcher;
360
+
361
+ /*
362
+ * Order is significant, it defines the precedence of
363
+ * each value, earlier values are more significant than
364
+ * later values
365
+ */
366
+ #define FC_OBJECT(NAME, Type, Cmp) { FC_##NAME##_OBJECT, Cmp, PRI_##NAME##_STRONG, PRI_##NAME##_WEAK },
367
+ static const FcMatcher _FcMatchers [] = {
368
+ { FC_INVALID_OBJECT, NULL, -1, -1 },
369
+ #include "fcobjs.h"
370
+ };
371
+ #undef FC_OBJECT
372
+
373
+ static const FcMatcher*
374
+ FcObjectToMatcher (FcObject object,
375
+ FcBool include_lang)
376
+ {
377
+ if (include_lang)
378
+ {
379
+ switch (object) {
380
+ case FC_FAMILYLANG_OBJECT:
381
+ case FC_STYLELANG_OBJECT:
382
+ case FC_FULLNAMELANG_OBJECT:
383
+ object = FC_LANG_OBJECT;
384
+ break;
385
+ }
386
+ }
387
+ if (object > FC_MAX_BASE_OBJECT ||
388
+ !_FcMatchers[object].compare ||
389
+ _FcMatchers[object].strong == -1 ||
390
+ _FcMatchers[object].weak == -1)
391
+ return NULL;
392
+
393
+ return _FcMatchers + object;
394
+ }
395
+
396
+ static FcBool
397
+ FcCompareValueList (FcObject object,
398
+ const FcMatcher *match,
399
+ FcValueListPtr v1orig, /* pattern */
400
+ FcValueListPtr v2orig, /* target */
401
+ FcValue *bestValue,
402
+ double *value,
403
+ int *n,
404
+ FcResult *result)
405
+ {
406
+ FcValueListPtr v1, v2;
407
+ double v, best, bestStrong, bestWeak;
408
+ int j, k, pos = 0;
409
+
410
+ if (!match)
411
+ {
412
+ if (bestValue)
413
+ *bestValue = FcValueCanonicalize(&v2orig->value);
414
+ if (n)
415
+ *n = 0;
416
+ return FcTrue;
417
+ }
418
+
419
+ best = 1e99;
420
+ bestStrong = 1e99;
421
+ bestWeak = 1e99;
422
+ j = 0;
423
+ for (v1 = v1orig; v1; v1 = FcValueListNext(v1))
424
+ {
425
+ for (v2 = v2orig, k = 0; v2; v2 = FcValueListNext(v2), k++)
426
+ {
427
+ FcValue matchValue;
428
+ v = (match->compare) (&v1->value, &v2->value, &matchValue);
429
+ if (v < 0)
430
+ {
431
+ *result = FcResultTypeMismatch;
432
+ return FcFalse;
433
+ }
434
+ v = v * 1000 + j;
435
+ if (v < best)
436
+ {
437
+ if (bestValue)
438
+ *bestValue = matchValue;
439
+ best = v;
440
+ pos = k;
441
+ }
442
+ if (v1->binding == FcValueBindingStrong)
443
+ {
444
+ if (v < bestStrong)
445
+ bestStrong = v;
446
+ }
447
+ else
448
+ {
449
+ if (v < bestWeak)
450
+ bestWeak = v;
451
+ }
452
+ }
453
+ j++;
454
+ }
455
+ if (FcDebug () & FC_DBG_MATCHV)
456
+ {
457
+ printf (" %s: %g ", FcObjectName (object), best);
458
+ FcValueListPrint (v1orig);
459
+ printf (", ");
460
+ FcValueListPrint (v2orig);
461
+ printf ("\n");
462
+ }
463
+ if (value)
464
+ {
465
+ int weak = match->weak;
466
+ int strong = match->strong;
467
+ if (weak == strong)
468
+ value[strong] += best;
469
+ else
470
+ {
471
+ value[weak] += bestWeak;
472
+ value[strong] += bestStrong;
473
+ }
474
+ }
475
+ if (n)
476
+ *n = pos;
477
+
478
+ return FcTrue;
479
+ }
480
+
481
+ /*
482
+ * Return a value indicating the distance between the two lists of
483
+ * values
484
+ */
485
+
486
+ static FcBool
487
+ FcCompare (FcPattern *pat,
488
+ FcPattern *fnt,
489
+ double *value,
490
+ FcResult *result)
491
+ {
492
+ int i, i1, i2;
493
+
494
+ for (i = 0; i < PRI_END; i++)
495
+ value[i] = 0.0;
496
+
497
+ i1 = 0;
498
+ i2 = 0;
499
+ while (i1 < pat->num && i2 < fnt->num)
500
+ {
501
+ FcPatternElt *elt_i1 = &FcPatternElts(pat)[i1];
502
+ FcPatternElt *elt_i2 = &FcPatternElts(fnt)[i2];
503
+
504
+ i = FcObjectCompare(elt_i1->object, elt_i2->object);
505
+ if (i > 0)
506
+ i2++;
507
+ else if (i < 0)
508
+ i1++;
509
+ else
510
+ {
511
+ const FcMatcher *match = FcObjectToMatcher (elt_i1->object, FcFalse);
512
+ if (!FcCompareValueList (elt_i1->object, match,
513
+ FcPatternEltValues(elt_i1),
514
+ FcPatternEltValues(elt_i2),
515
+ NULL, value, NULL, result))
516
+ return FcFalse;
517
+ i1++;
518
+ i2++;
519
+ }
520
+ }
521
+ return FcTrue;
522
+ }
523
+
524
+ FcPattern *
525
+ FcFontRenderPrepare (FcConfig *config,
526
+ FcPattern *pat,
527
+ FcPattern *font)
528
+ {
529
+ FcPattern *new;
530
+ int i;
531
+ FcPatternElt *fe, *pe;
532
+ FcValue v;
533
+ FcResult result;
534
+ FcBool variable = FcFalse;
535
+ FcStrBuf variations;
536
+
537
+ assert (pat != NULL);
538
+ assert (font != NULL);
539
+
540
+ FcPatternObjectGetBool (font, FC_VARIABLE_OBJECT, 0, &variable);
541
+ assert (variable != FcDontCare);
542
+ if (variable)
543
+ FcStrBufInit (&variations, NULL, 0);
544
+
545
+ new = FcPatternCreate ();
546
+ if (!new)
547
+ return NULL;
548
+ for (i = 0; i < font->num; i++)
549
+ {
550
+ fe = &FcPatternElts(font)[i];
551
+ if (fe->object == FC_FAMILYLANG_OBJECT ||
552
+ fe->object == FC_STYLELANG_OBJECT ||
553
+ fe->object == FC_FULLNAMELANG_OBJECT)
554
+ {
555
+ /* ignore those objects. we need to deal with them
556
+ * another way */
557
+ continue;
558
+ }
559
+ if (fe->object == FC_FAMILY_OBJECT ||
560
+ fe->object == FC_STYLE_OBJECT ||
561
+ fe->object == FC_FULLNAME_OBJECT)
562
+ {
563
+ FcPatternElt *fel, *pel;
564
+
565
+ FC_ASSERT_STATIC ((FC_FAMILY_OBJECT + 1) == FC_FAMILYLANG_OBJECT);
566
+ FC_ASSERT_STATIC ((FC_STYLE_OBJECT + 1) == FC_STYLELANG_OBJECT);
567
+ FC_ASSERT_STATIC ((FC_FULLNAME_OBJECT + 1) == FC_FULLNAMELANG_OBJECT);
568
+
569
+ fel = FcPatternObjectFindElt (font, fe->object + 1);
570
+ pel = FcPatternObjectFindElt (pat, fe->object + 1);
571
+
572
+ if (fel && pel)
573
+ {
574
+ /* The font has name languages, and pattern asks for specific language(s).
575
+ * Match on language and and prefer that result.
576
+ * Note: Currently the code only give priority to first matching language.
577
+ */
578
+ int n = 1, j;
579
+ FcValueListPtr l1, l2, ln = NULL, ll = NULL;
580
+ const FcMatcher *match = FcObjectToMatcher (pel->object, FcTrue);
581
+
582
+ if (!FcCompareValueList (pel->object, match,
583
+ FcPatternEltValues (pel),
584
+ FcPatternEltValues (fel), NULL, NULL, &n, &result))
585
+ {
586
+ FcPatternDestroy (new);
587
+ return NULL;
588
+ }
589
+
590
+ for (j = 0, l1 = FcPatternEltValues (fe), l2 = FcPatternEltValues (fel);
591
+ l1 != NULL || l2 != NULL;
592
+ j++, l1 = l1 ? FcValueListNext (l1) : NULL, l2 = l2 ? FcValueListNext (l2) : NULL)
593
+ {
594
+ if (j == n)
595
+ {
596
+ if (l1)
597
+ ln = FcValueListPrepend (ln,
598
+ FcValueCanonicalize (&l1->value),
599
+ FcValueBindingStrong);
600
+ if (l2)
601
+ ll = FcValueListPrepend (ll,
602
+ FcValueCanonicalize (&l2->value),
603
+ FcValueBindingStrong);
604
+ }
605
+ else
606
+ {
607
+ if (l1)
608
+ ln = FcValueListAppend (ln,
609
+ FcValueCanonicalize (&l1->value),
610
+ FcValueBindingStrong);
611
+ if (l2)
612
+ ll = FcValueListAppend (ll,
613
+ FcValueCanonicalize (&l2->value),
614
+ FcValueBindingStrong);
615
+ }
616
+ }
617
+ FcPatternObjectListAdd (new, fe->object, ln, FcFalse);
618
+ FcPatternObjectListAdd (new, fel->object, ll, FcFalse);
619
+
620
+ continue;
621
+ }
622
+ else if (fel)
623
+ {
624
+ /* Pattern doesn't ask for specific language. Copy all for name and
625
+ * lang. */
626
+ FcValueListPtr l1, l2;
627
+
628
+ l1 = FcValueListDuplicate (FcPatternEltValues (fe));
629
+ l2 = FcValueListDuplicate (FcPatternEltValues (fel));
630
+ FcPatternObjectListAdd (new, fe->object, l1, FcFalse);
631
+ FcPatternObjectListAdd (new, fel->object, l2, FcFalse);
632
+
633
+ continue;
634
+ }
635
+ }
636
+
637
+ pe = FcPatternObjectFindElt (pat, fe->object);
638
+ if (pe)
639
+ {
640
+ const FcMatcher *match = FcObjectToMatcher (pe->object, FcFalse);
641
+ if (!FcCompareValueList (pe->object, match,
642
+ FcPatternEltValues(pe),
643
+ FcPatternEltValues(fe), &v, NULL, NULL, &result))
644
+ {
645
+ FcPatternDestroy (new);
646
+ return NULL;
647
+ }
648
+ FcPatternObjectAdd (new, fe->object, v, FcFalse);
649
+
650
+ /* Set font-variations settings for standard axes in variable fonts. */
651
+ if (variable &&
652
+ FcPatternEltValues(fe)->value.type == FcTypeRange &&
653
+ (fe->object == FC_WEIGHT_OBJECT ||
654
+ fe->object == FC_WIDTH_OBJECT ||
655
+ fe->object == FC_SIZE_OBJECT))
656
+ {
657
+ double num;
658
+ FcChar8 temp[128];
659
+ const char *tag = " ";
660
+ assert (v.type == FcTypeDouble);
661
+ num = v.u.d;
662
+ if (variations.len)
663
+ FcStrBufChar (&variations, ',');
664
+ switch (fe->object)
665
+ {
666
+ case FC_WEIGHT_OBJECT:
667
+ tag = "wght";
668
+ num = FcWeightToOpenType (num);
669
+ break;
670
+
671
+ case FC_WIDTH_OBJECT:
672
+ tag = "wdth";
673
+ break;
674
+
675
+ case FC_SIZE_OBJECT:
676
+ tag = "opsz";
677
+ break;
678
+ }
679
+ sprintf ((char *) temp, "%4s=%g", tag, num);
680
+ FcStrBufString (&variations, temp);
681
+ }
682
+ }
683
+ else
684
+ {
685
+ if (FcRefIsConst (&font->ref) && fe->object == FC_FILE_OBJECT)
686
+ {
687
+ FcValueListPtr l = FcPatternEltValues (fe);
688
+ FcChar8 *dir, *alias;
689
+
690
+ while (l->value.type != FcTypeString)
691
+ l = FcValueListNext (l);
692
+ if (!l)
693
+ goto bail0;
694
+ dir = FcStrDirname (FcValueString (&l->value));
695
+ if (!config)
696
+ config = FcConfigGetCurrent ();
697
+ if (config && FcHashTableFind (config->alias_table, dir, (void **) &alias))
698
+ {
699
+ FcChar8 *base = FcStrBasename (FcValueString (&l->value));
700
+ FcChar8 *s = FcStrBuildFilename (alias, base, NULL);
701
+ FcValue v;
702
+
703
+ FcStrFree (alias);
704
+ FcStrFree (base);
705
+ v.type = FcTypeString;
706
+ v.u.s = s;
707
+ FcPatternObjectAddWithBinding (new, fe->object,
708
+ FcValueCanonicalize (&v),
709
+ l->binding,
710
+ FcTrue);
711
+ FcStrFree (s);
712
+ FcStrFree (dir);
713
+ goto bail0;
714
+ }
715
+ else
716
+ FcStrFree (dir);
717
+ }
718
+ FcPatternObjectListAdd (new, fe->object,
719
+ FcValueListDuplicate (FcPatternEltValues (fe)),
720
+ FcTrue);
721
+ bail0:;
722
+ }
723
+ }
724
+ for (i = 0; i < pat->num; i++)
725
+ {
726
+ pe = &FcPatternElts(pat)[i];
727
+ fe = FcPatternObjectFindElt (font, pe->object);
728
+ if (!fe &&
729
+ pe->object != FC_FAMILYLANG_OBJECT &&
730
+ pe->object != FC_STYLELANG_OBJECT &&
731
+ pe->object != FC_FULLNAMELANG_OBJECT)
732
+ {
733
+ FcPatternObjectListAdd (new, pe->object,
734
+ FcValueListDuplicate (FcPatternEltValues(pe)),
735
+ FcFalse);
736
+ }
737
+ }
738
+
739
+ if (variable && variations.len)
740
+ {
741
+ FcChar8 *vars = NULL;
742
+ if (FcPatternObjectGetString (new, FC_FONT_VARIATIONS_OBJECT, 0, &vars) == FcResultMatch)
743
+ {
744
+ FcStrBufChar (&variations, ',');
745
+ FcStrBufString (&variations, vars);
746
+ FcPatternObjectDel (new, FC_FONT_VARIATIONS_OBJECT);
747
+ }
748
+
749
+ FcPatternObjectAddString (new, FC_FONT_VARIATIONS_OBJECT, FcStrBufDoneStatic (&variations));
750
+ FcStrBufDestroy (&variations);
751
+ }
752
+
753
+ FcConfigSubstituteWithPat (config, new, pat, FcMatchFont);
754
+ return new;
755
+ }
756
+
757
+ static FcPattern *
758
+ FcFontSetMatchInternal (FcFontSet **sets,
759
+ int nsets,
760
+ FcPattern *p,
761
+ FcResult *result)
762
+ {
763
+ double score[PRI_END], bestscore[PRI_END];
764
+ int f;
765
+ FcFontSet *s;
766
+ FcPattern *best;
767
+ int i;
768
+ int set;
769
+
770
+ for (i = 0; i < PRI_END; i++)
771
+ bestscore[i] = 0;
772
+ best = 0;
773
+ if (FcDebug () & FC_DBG_MATCH)
774
+ {
775
+ printf ("Match ");
776
+ FcPatternPrint (p);
777
+ }
778
+ for (set = 0; set < nsets; set++)
779
+ {
780
+ s = sets[set];
781
+ if (!s)
782
+ continue;
783
+ for (f = 0; f < s->nfont; f++)
784
+ {
785
+ if (FcDebug () & FC_DBG_MATCHV)
786
+ {
787
+ printf ("Font %d ", f);
788
+ FcPatternPrint (s->fonts[f]);
789
+ }
790
+ if (!FcCompare (p, s->fonts[f], score, result))
791
+ return 0;
792
+ if (FcDebug () & FC_DBG_MATCHV)
793
+ {
794
+ printf ("Score");
795
+ for (i = 0; i < PRI_END; i++)
796
+ {
797
+ printf (" %g", score[i]);
798
+ }
799
+ printf ("\n");
800
+ }
801
+ for (i = 0; i < PRI_END; i++)
802
+ {
803
+ if (best && bestscore[i] < score[i])
804
+ break;
805
+ if (!best || score[i] < bestscore[i])
806
+ {
807
+ for (i = 0; i < PRI_END; i++)
808
+ bestscore[i] = score[i];
809
+ best = s->fonts[f];
810
+ break;
811
+ }
812
+ }
813
+ }
814
+ }
815
+ if (FcDebug () & FC_DBG_MATCH)
816
+ {
817
+ printf ("Best score");
818
+ for (i = 0; i < PRI_END; i++)
819
+ printf (" %g", bestscore[i]);
820
+ printf ("\n");
821
+ FcPatternPrint (best);
822
+ }
823
+ if (FcDebug () & FC_DBG_MATCH2)
824
+ {
825
+ char *env = getenv ("FC_DBG_MATCH_FILTER");
826
+ FcObjectSet *os = NULL;
827
+
828
+ if (env)
829
+ {
830
+ char *ss, *s;
831
+ char *p;
832
+ FcBool f = FcTrue;
833
+
834
+ ss = s = strdup (env);
835
+ os = FcObjectSetCreate ();
836
+ while (f)
837
+ {
838
+ size_t len;
839
+ char *x;
840
+
841
+ if (!(p = strchr (s, ',')))
842
+ {
843
+ f = FcFalse;
844
+ len = strlen (s) + 1;
845
+ }
846
+ else
847
+ {
848
+ len = (p - s) + 1;
849
+ }
850
+ x = malloc (sizeof (char) * len);
851
+ strncpy (x, s, len - 1);
852
+ x[len - 1] = 0;
853
+ if (FcObjectFromName (x) > 0)
854
+ FcObjectSetAdd (os, x);
855
+ s = p + 1;
856
+ free (x);
857
+ }
858
+ free (ss);
859
+ }
860
+ FcPatternPrint2 (p, best, os);
861
+ if (os)
862
+ FcObjectSetDestroy (os);
863
+ }
864
+ /* assuming that 'result' is initialized with FcResultNoMatch
865
+ * outside this function */
866
+ if (best)
867
+ *result = FcResultMatch;
868
+
869
+ return best;
870
+ }
871
+
872
+ FcPattern *
873
+ FcFontSetMatch (FcConfig *config,
874
+ FcFontSet **sets,
875
+ int nsets,
876
+ FcPattern *p,
877
+ FcResult *result)
878
+ {
879
+ FcPattern *best;
880
+
881
+ assert (sets != NULL);
882
+ assert (p != NULL);
883
+ assert (result != NULL);
884
+
885
+ *result = FcResultNoMatch;
886
+
887
+ if (!config)
888
+ {
889
+ config = FcConfigGetCurrent ();
890
+ if (!config)
891
+ return 0;
892
+ }
893
+ best = FcFontSetMatchInternal (sets, nsets, p, result);
894
+ if (best)
895
+ return FcFontRenderPrepare (config, p, best);
896
+ else
897
+ return NULL;
898
+ }
899
+
900
+ FcPattern *
901
+ FcFontMatch (FcConfig *config,
902
+ FcPattern *p,
903
+ FcResult *result)
904
+ {
905
+ FcFontSet *sets[2];
906
+ int nsets;
907
+ FcPattern *best;
908
+
909
+ assert (p != NULL);
910
+ assert (result != NULL);
911
+
912
+ *result = FcResultNoMatch;
913
+
914
+ if (!config)
915
+ {
916
+ config = FcConfigGetCurrent ();
917
+ if (!config)
918
+ return 0;
919
+ }
920
+ nsets = 0;
921
+ if (config->fonts[FcSetSystem])
922
+ sets[nsets++] = config->fonts[FcSetSystem];
923
+ if (config->fonts[FcSetApplication])
924
+ sets[nsets++] = config->fonts[FcSetApplication];
925
+
926
+ best = FcFontSetMatchInternal (sets, nsets, p, result);
927
+ if (best)
928
+ return FcFontRenderPrepare (config, p, best);
929
+ else
930
+ return NULL;
931
+ }
932
+
933
+ typedef struct _FcSortNode {
934
+ FcPattern *pattern;
935
+ double score[PRI_END];
936
+ } FcSortNode;
937
+
938
+ static int
939
+ FcSortCompare (const void *aa, const void *ab)
940
+ {
941
+ FcSortNode *a = *(FcSortNode **) aa;
942
+ FcSortNode *b = *(FcSortNode **) ab;
943
+ double *as = &a->score[0];
944
+ double *bs = &b->score[0];
945
+ double ad = 0, bd = 0;
946
+ int i;
947
+
948
+ i = PRI_END;
949
+ while (i-- && (ad = *as++) == (bd = *bs++))
950
+ ;
951
+ return ad < bd ? -1 : ad > bd ? 1 : 0;
952
+ }
953
+
954
+ static FcBool
955
+ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool trim)
956
+ {
957
+ FcBool ret = FcFalse;
958
+ FcCharSet *cs;
959
+ int i;
960
+
961
+ cs = 0;
962
+ if (trim || csp)
963
+ {
964
+ cs = FcCharSetCreate ();
965
+ if (cs == NULL)
966
+ goto bail;
967
+ }
968
+
969
+ for (i = 0; i < nnode; i++)
970
+ {
971
+ FcSortNode *node = *n++;
972
+ FcBool adds_chars = FcFalse;
973
+
974
+ /*
975
+ * Only fetch node charset if we'd need it
976
+ */
977
+ if (cs)
978
+ {
979
+ FcCharSet *ncs;
980
+
981
+ if (FcPatternGetCharSet (node->pattern, FC_CHARSET, 0, &ncs) !=
982
+ FcResultMatch)
983
+ continue;
984
+
985
+ if (!FcCharSetMerge (cs, ncs, &adds_chars))
986
+ goto bail;
987
+ }
988
+
989
+ /*
990
+ * If this font isn't a subset of the previous fonts,
991
+ * add it to the list
992
+ */
993
+ if (!i || !trim || adds_chars)
994
+ {
995
+ FcPatternReference (node->pattern);
996
+ if (FcDebug () & FC_DBG_MATCHV)
997
+ {
998
+ printf ("Add ");
999
+ FcPatternPrint (node->pattern);
1000
+ }
1001
+ if (!FcFontSetAdd (fs, node->pattern))
1002
+ {
1003
+ FcPatternDestroy (node->pattern);
1004
+ goto bail;
1005
+ }
1006
+ }
1007
+ }
1008
+ if (csp)
1009
+ {
1010
+ *csp = cs;
1011
+ cs = 0;
1012
+ }
1013
+
1014
+ ret = FcTrue;
1015
+
1016
+ bail:
1017
+ if (cs)
1018
+ FcCharSetDestroy (cs);
1019
+
1020
+ return ret;
1021
+ }
1022
+
1023
+ void
1024
+ FcFontSetSortDestroy (FcFontSet *fs)
1025
+ {
1026
+ FcFontSetDestroy (fs);
1027
+ }
1028
+
1029
+ FcFontSet *
1030
+ FcFontSetSort (FcConfig *config FC_UNUSED,
1031
+ FcFontSet **sets,
1032
+ int nsets,
1033
+ FcPattern *p,
1034
+ FcBool trim,
1035
+ FcCharSet **csp,
1036
+ FcResult *result)
1037
+ {
1038
+ FcFontSet *ret;
1039
+ FcFontSet *s;
1040
+ FcSortNode *nodes;
1041
+ FcSortNode **nodeps, **nodep;
1042
+ int nnodes;
1043
+ FcSortNode *new;
1044
+ int set;
1045
+ int f;
1046
+ int i;
1047
+ int nPatternLang;
1048
+ FcBool *patternLangSat;
1049
+ FcValue patternLang;
1050
+
1051
+ assert (sets != NULL);
1052
+ assert (p != NULL);
1053
+ assert (result != NULL);
1054
+
1055
+ /* There are some implementation that relying on the result of
1056
+ * "result" to check if the return value of FcFontSetSort
1057
+ * is valid or not.
1058
+ * So we should initialize it to the conservative way since
1059
+ * this function doesn't return NULL anymore.
1060
+ */
1061
+ if (result)
1062
+ *result = FcResultNoMatch;
1063
+
1064
+ if (FcDebug () & FC_DBG_MATCH)
1065
+ {
1066
+ printf ("Sort ");
1067
+ FcPatternPrint (p);
1068
+ }
1069
+ nnodes = 0;
1070
+ for (set = 0; set < nsets; set++)
1071
+ {
1072
+ s = sets[set];
1073
+ if (!s)
1074
+ continue;
1075
+ nnodes += s->nfont;
1076
+ }
1077
+ if (!nnodes)
1078
+ return FcFontSetCreate ();
1079
+
1080
+ for (nPatternLang = 0;
1081
+ FcPatternGet (p, FC_LANG, nPatternLang, &patternLang) == FcResultMatch;
1082
+ nPatternLang++)
1083
+ ;
1084
+
1085
+ /* freed below */
1086
+ nodes = malloc (nnodes * sizeof (FcSortNode) +
1087
+ nnodes * sizeof (FcSortNode *) +
1088
+ nPatternLang * sizeof (FcBool));
1089
+ if (!nodes)
1090
+ goto bail0;
1091
+ nodeps = (FcSortNode **) (nodes + nnodes);
1092
+ patternLangSat = (FcBool *) (nodeps + nnodes);
1093
+
1094
+ new = nodes;
1095
+ nodep = nodeps;
1096
+ for (set = 0; set < nsets; set++)
1097
+ {
1098
+ s = sets[set];
1099
+ if (!s)
1100
+ continue;
1101
+ for (f = 0; f < s->nfont; f++)
1102
+ {
1103
+ if (FcDebug () & FC_DBG_MATCHV)
1104
+ {
1105
+ printf ("Font %d ", f);
1106
+ FcPatternPrint (s->fonts[f]);
1107
+ }
1108
+ new->pattern = s->fonts[f];
1109
+ if (!FcCompare (p, new->pattern, new->score, result))
1110
+ goto bail1;
1111
+ if (FcDebug () & FC_DBG_MATCHV)
1112
+ {
1113
+ printf ("Score");
1114
+ for (i = 0; i < PRI_END; i++)
1115
+ {
1116
+ printf (" %g", new->score[i]);
1117
+ }
1118
+ printf ("\n");
1119
+ }
1120
+ *nodep = new;
1121
+ new++;
1122
+ nodep++;
1123
+ }
1124
+ }
1125
+
1126
+ nnodes = new - nodes;
1127
+
1128
+ qsort (nodeps, nnodes, sizeof (FcSortNode *),
1129
+ FcSortCompare);
1130
+
1131
+ for (i = 0; i < nPatternLang; i++)
1132
+ patternLangSat[i] = FcFalse;
1133
+
1134
+ for (f = 0; f < nnodes; f++)
1135
+ {
1136
+ FcBool satisfies = FcFalse;
1137
+ /*
1138
+ * If this node matches any language, go check
1139
+ * which ones and satisfy those entries
1140
+ */
1141
+ if (nodeps[f]->score[PRI_LANG] < 2000)
1142
+ {
1143
+ for (i = 0; i < nPatternLang; i++)
1144
+ {
1145
+ FcValue nodeLang;
1146
+
1147
+ if (!patternLangSat[i] &&
1148
+ FcPatternGet (p, FC_LANG, i, &patternLang) == FcResultMatch &&
1149
+ FcPatternGet (nodeps[f]->pattern, FC_LANG, 0, &nodeLang) == FcResultMatch)
1150
+ {
1151
+ FcValue matchValue;
1152
+ double compare = FcCompareLang (&patternLang, &nodeLang, &matchValue);
1153
+ if (compare >= 0 && compare < 2)
1154
+ {
1155
+ if (FcDebug () & FC_DBG_MATCHV)
1156
+ {
1157
+ FcChar8 *family;
1158
+ FcChar8 *style;
1159
+
1160
+ if (FcPatternGetString (nodeps[f]->pattern, FC_FAMILY, 0, &family) == FcResultMatch &&
1161
+ FcPatternGetString (nodeps[f]->pattern, FC_STYLE, 0, &style) == FcResultMatch)
1162
+ printf ("Font %s:%s matches language %d\n", family, style, i);
1163
+ }
1164
+ patternLangSat[i] = FcTrue;
1165
+ satisfies = FcTrue;
1166
+ break;
1167
+ }
1168
+ }
1169
+ }
1170
+ }
1171
+ if (!satisfies)
1172
+ {
1173
+ nodeps[f]->score[PRI_LANG] = 10000.0;
1174
+ }
1175
+ }
1176
+
1177
+ /*
1178
+ * Re-sort once the language issues have been settled
1179
+ */
1180
+ qsort (nodeps, nnodes, sizeof (FcSortNode *),
1181
+ FcSortCompare);
1182
+
1183
+ ret = FcFontSetCreate ();
1184
+ if (!ret)
1185
+ goto bail1;
1186
+
1187
+ if (!FcSortWalk (nodeps, nnodes, ret, csp, trim))
1188
+ goto bail2;
1189
+
1190
+ free (nodes);
1191
+
1192
+ if (FcDebug() & FC_DBG_MATCH)
1193
+ {
1194
+ printf ("First font ");
1195
+ FcPatternPrint (ret->fonts[0]);
1196
+ }
1197
+ if (ret->nfont > 0)
1198
+ *result = FcResultMatch;
1199
+
1200
+ return ret;
1201
+
1202
+ bail2:
1203
+ FcFontSetDestroy (ret);
1204
+ bail1:
1205
+ free (nodes);
1206
+ bail0:
1207
+ return 0;
1208
+ }
1209
+
1210
+ FcFontSet *
1211
+ FcFontSort (FcConfig *config,
1212
+ FcPattern *p,
1213
+ FcBool trim,
1214
+ FcCharSet **csp,
1215
+ FcResult *result)
1216
+ {
1217
+ FcFontSet *sets[2];
1218
+ int nsets;
1219
+
1220
+ assert (p != NULL);
1221
+ assert (result != NULL);
1222
+
1223
+ *result = FcResultNoMatch;
1224
+
1225
+ if (!config)
1226
+ {
1227
+ config = FcConfigGetCurrent ();
1228
+ if (!config)
1229
+ return 0;
1230
+ }
1231
+ nsets = 0;
1232
+ if (config->fonts[FcSetSystem])
1233
+ sets[nsets++] = config->fonts[FcSetSystem];
1234
+ if (config->fonts[FcSetApplication])
1235
+ sets[nsets++] = config->fonts[FcSetApplication];
1236
+ return FcFontSetSort (config, sets, nsets, p, trim, csp, result);
1237
+ }
1238
+ #define __fcmatch__
1239
+ #include "fcaliastail.h"
1240
+ #undef __fcmatch__