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,1220 @@
1
+ /*
2
+ * Copyright © 2008,2009 Red Hat, Inc.
3
+ *
4
+ * Red Hat Author(s): Behdad Esfahbod
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
+ #include <stdlib.h>
27
+ #include <string.h>
28
+ #include <stdarg.h>
29
+
30
+
31
+ /* The language is documented in doc/fcformat.fncs
32
+ * These are the features implemented:
33
+ *
34
+ * simple %{elt}
35
+ * width %width{elt}
36
+ * index %{elt[idx]}
37
+ * name= %{elt=}
38
+ * :name= %{:elt}
39
+ * default %{elt:-word}
40
+ * count %{#elt}
41
+ * subexpr %{{expr}}
42
+ * filter-out %{-elt1,elt2,elt3{expr}}
43
+ * filter-in %{+elt1,elt2,elt3{expr}}
44
+ * conditional %{?elt1,elt2,!elt3{}{}}
45
+ * enumerate %{[]elt1,elt2{expr}}
46
+ * langset langset enumeration using the same syntax
47
+ * builtin %{=blt}
48
+ * convert %{elt|conv1|conv2|conv3}
49
+ *
50
+ * converters:
51
+ * basename FcStrBasename
52
+ * dirname FcStrDirname
53
+ * downcase FcStrDowncase
54
+ * shescape
55
+ * cescape
56
+ * xmlescape
57
+ * delete delete chars
58
+ * escape escape chars
59
+ * translate translate chars
60
+ *
61
+ * builtins:
62
+ * unparse FcNameUnparse
63
+ * fcmatch fc-match default
64
+ * fclist fc-list default
65
+ * fccat fc-cat default
66
+ * pkgkit PackageKit package tag format
67
+ *
68
+ *
69
+ * Some ideas for future syntax extensions:
70
+ *
71
+ * - verbose builtin that is like FcPatternPrint
72
+ * - allow indexing subexprs using '%{[idx]elt1,elt2{subexpr}}'
73
+ * - allow indexing in +, -, ? filtering?
74
+ * - conditional/filtering/deletion on binding (using '(w)'/'(s)'/'(=)' notation)
75
+ */
76
+
77
+
78
+ #define FCCAT_FORMAT "\"%{file|basename|cescape}\" %{index} \"%{-file{%{=unparse|cescape}}}\""
79
+ #define FCMATCH_FORMAT "%{file:-<unknown filename>|basename}: \"%{family[0]:-<unknown family>}\" \"%{style[0]:-<unknown style>}\""
80
+ #define FCLIST_FORMAT "%{?file{%{file}: }}%{-file{%{=unparse}}}"
81
+ #define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}"
82
+
83
+
84
+ static void
85
+ message (const char *fmt, ...)
86
+ {
87
+ va_list args;
88
+ va_start (args, fmt);
89
+ fprintf (stderr, "Fontconfig: Pattern format error: ");
90
+ vfprintf (stderr, fmt, args);
91
+ fprintf (stderr, ".\n");
92
+ va_end (args);
93
+ }
94
+
95
+
96
+ typedef struct _FcFormatContext
97
+ {
98
+ const FcChar8 *format_orig;
99
+ const FcChar8 *format;
100
+ int format_len;
101
+ FcChar8 *word;
102
+ FcBool word_allocated;
103
+ } FcFormatContext;
104
+
105
+ static FcBool
106
+ FcFormatContextInit (FcFormatContext *c,
107
+ const FcChar8 *format,
108
+ FcChar8 *scratch,
109
+ int scratch_len)
110
+ {
111
+ c->format_orig = c->format = format;
112
+ c->format_len = strlen ((const char *) format);
113
+
114
+ if (c->format_len < scratch_len)
115
+ {
116
+ c->word = scratch;
117
+ c->word_allocated = FcFalse;
118
+ }
119
+ else
120
+ {
121
+ c->word = malloc (c->format_len + 1);
122
+ c->word_allocated = FcTrue;
123
+ }
124
+
125
+ return c->word != NULL;
126
+ }
127
+
128
+ static void
129
+ FcFormatContextDone (FcFormatContext *c)
130
+ {
131
+ if (c && c->word_allocated)
132
+ {
133
+ free (c->word);
134
+ }
135
+ }
136
+
137
+ static FcBool
138
+ consume_char (FcFormatContext *c,
139
+ FcChar8 term)
140
+ {
141
+ if (*c->format != term)
142
+ return FcFalse;
143
+
144
+ c->format++;
145
+ return FcTrue;
146
+ }
147
+
148
+ static FcBool
149
+ expect_char (FcFormatContext *c,
150
+ FcChar8 term)
151
+ {
152
+ FcBool res = consume_char (c, term);
153
+ if (!res)
154
+ {
155
+ if (c->format == c->format_orig + c->format_len)
156
+ message ("format ended while expecting '%c'",
157
+ term);
158
+ else
159
+ message ("expected '%c' at %d",
160
+ term, c->format - c->format_orig + 1);
161
+ }
162
+ return res;
163
+ }
164
+
165
+ static FcBool
166
+ FcCharIsPunct (const FcChar8 c)
167
+ {
168
+ if (c < '0')
169
+ return FcTrue;
170
+ if (c <= '9')
171
+ return FcFalse;
172
+ if (c < 'A')
173
+ return FcTrue;
174
+ if (c <= 'Z')
175
+ return FcFalse;
176
+ if (c < 'a')
177
+ return FcTrue;
178
+ if (c <= 'z')
179
+ return FcFalse;
180
+ if (c <= '~')
181
+ return FcTrue;
182
+ return FcFalse;
183
+ }
184
+
185
+ static char escaped_char(const char ch)
186
+ {
187
+ switch (ch) {
188
+ case 'a': return '\a';
189
+ case 'b': return '\b';
190
+ case 'f': return '\f';
191
+ case 'n': return '\n';
192
+ case 'r': return '\r';
193
+ case 't': return '\t';
194
+ case 'v': return '\v';
195
+ default: return ch;
196
+ }
197
+ }
198
+
199
+ static FcBool
200
+ read_word (FcFormatContext *c)
201
+ {
202
+ FcChar8 *p;
203
+
204
+ p = c->word;
205
+
206
+ while (*c->format)
207
+ {
208
+ if (*c->format == '\\')
209
+ {
210
+ c->format++;
211
+ if (*c->format)
212
+ *p++ = escaped_char (*c->format++);
213
+ continue;
214
+ }
215
+ else if (FcCharIsPunct (*c->format))
216
+ break;
217
+
218
+ *p++ = *c->format++;
219
+ }
220
+ *p = '\0';
221
+
222
+ if (p == c->word)
223
+ {
224
+ message ("expected identifier at %d",
225
+ c->format - c->format_orig + 1);
226
+ return FcFalse;
227
+ }
228
+
229
+ return FcTrue;
230
+ }
231
+
232
+ static FcBool
233
+ read_chars (FcFormatContext *c,
234
+ FcChar8 term)
235
+ {
236
+ FcChar8 *p;
237
+
238
+ p = c->word;
239
+
240
+ while (*c->format && *c->format != '}' && *c->format != term)
241
+ {
242
+ if (*c->format == '\\')
243
+ {
244
+ c->format++;
245
+ if (*c->format)
246
+ *p++ = escaped_char (*c->format++);
247
+ continue;
248
+ }
249
+
250
+ *p++ = *c->format++;
251
+ }
252
+ *p = '\0';
253
+
254
+ if (p == c->word)
255
+ {
256
+ message ("expected character data at %d",
257
+ c->format - c->format_orig + 1);
258
+ return FcFalse;
259
+ }
260
+
261
+ return FcTrue;
262
+ }
263
+
264
+ static FcBool
265
+ FcPatternFormatToBuf (FcPattern *pat,
266
+ const FcChar8 *format,
267
+ FcStrBuf *buf);
268
+
269
+ static FcBool
270
+ interpret_builtin (FcFormatContext *c,
271
+ FcPattern *pat,
272
+ FcStrBuf *buf)
273
+ {
274
+ FcChar8 *new_str;
275
+ FcBool ret;
276
+
277
+ if (!expect_char (c, '=') ||
278
+ !read_word (c))
279
+ return FcFalse;
280
+
281
+ /* try simple builtins first */
282
+ if (0) { }
283
+ #define BUILTIN(name, func) \
284
+ else if (0 == strcmp ((const char *) c->word, name))\
285
+ do { new_str = func (pat); ret = FcTrue; } while (0)
286
+ BUILTIN ("unparse", FcNameUnparse);
287
+ /* BUILTIN ("verbose", FcPatternPrint); XXX */
288
+ #undef BUILTIN
289
+ else
290
+ ret = FcFalse;
291
+
292
+ if (ret)
293
+ {
294
+ if (new_str)
295
+ {
296
+ FcStrBufString (buf, new_str);
297
+ FcStrFree (new_str);
298
+ return FcTrue;
299
+ }
300
+ else
301
+ return FcFalse;
302
+ }
303
+
304
+ /* now try our custom formats */
305
+ if (0) { }
306
+ #define BUILTIN(name, format) \
307
+ else if (0 == strcmp ((const char *) c->word, name))\
308
+ ret = FcPatternFormatToBuf (pat, (const FcChar8 *) format, buf)
309
+ BUILTIN ("fccat", FCCAT_FORMAT);
310
+ BUILTIN ("fcmatch", FCMATCH_FORMAT);
311
+ BUILTIN ("fclist", FCLIST_FORMAT);
312
+ BUILTIN ("pkgkit", PKGKIT_FORMAT);
313
+ #undef BUILTIN
314
+ else
315
+ ret = FcFalse;
316
+
317
+ if (!ret)
318
+ message ("unknown builtin \"%s\"",
319
+ c->word);
320
+
321
+ return ret;
322
+ }
323
+
324
+ static FcBool
325
+ interpret_expr (FcFormatContext *c,
326
+ FcPattern *pat,
327
+ FcStrBuf *buf,
328
+ FcChar8 term);
329
+
330
+ static FcBool
331
+ interpret_subexpr (FcFormatContext *c,
332
+ FcPattern *pat,
333
+ FcStrBuf *buf)
334
+ {
335
+ return expect_char (c, '{') &&
336
+ interpret_expr (c, pat, buf, '}') &&
337
+ expect_char (c, '}');
338
+ }
339
+
340
+ static FcBool
341
+ maybe_interpret_subexpr (FcFormatContext *c,
342
+ FcPattern *pat,
343
+ FcStrBuf *buf)
344
+ {
345
+ return (*c->format == '{') ?
346
+ interpret_subexpr (c, pat, buf) :
347
+ FcTrue;
348
+ }
349
+
350
+ static FcBool
351
+ skip_subexpr (FcFormatContext *c);
352
+
353
+ static FcBool
354
+ skip_percent (FcFormatContext *c)
355
+ {
356
+ if (!expect_char (c, '%'))
357
+ return FcFalse;
358
+
359
+ /* skip an optional width specifier */
360
+ if (strtol ((const char *) c->format, (char **) &c->format, 10))
361
+ {/* don't care */}
362
+
363
+ if (!expect_char (c, '{'))
364
+ return FcFalse;
365
+
366
+ while(*c->format && *c->format != '}')
367
+ {
368
+ switch (*c->format)
369
+ {
370
+ case '\\':
371
+ c->format++; /* skip over '\\' */
372
+ if (*c->format)
373
+ c->format++;
374
+ continue;
375
+ case '{':
376
+ if (!skip_subexpr (c))
377
+ return FcFalse;
378
+ continue;
379
+ }
380
+ c->format++;
381
+ }
382
+
383
+ return expect_char (c, '}');
384
+ }
385
+
386
+ static FcBool
387
+ skip_expr (FcFormatContext *c)
388
+ {
389
+ while(*c->format && *c->format != '}')
390
+ {
391
+ switch (*c->format)
392
+ {
393
+ case '\\':
394
+ c->format++; /* skip over '\\' */
395
+ if (*c->format)
396
+ c->format++;
397
+ continue;
398
+ case '%':
399
+ if (!skip_percent (c))
400
+ return FcFalse;
401
+ continue;
402
+ }
403
+ c->format++;
404
+ }
405
+
406
+ return FcTrue;
407
+ }
408
+
409
+ static FcBool
410
+ skip_subexpr (FcFormatContext *c)
411
+ {
412
+ return expect_char (c, '{') &&
413
+ skip_expr (c) &&
414
+ expect_char (c, '}');
415
+ }
416
+
417
+ static FcBool
418
+ maybe_skip_subexpr (FcFormatContext *c)
419
+ {
420
+ return (*c->format == '{') ?
421
+ skip_subexpr (c) :
422
+ FcTrue;
423
+ }
424
+
425
+ static FcBool
426
+ interpret_filter_in (FcFormatContext *c,
427
+ FcPattern *pat,
428
+ FcStrBuf *buf)
429
+ {
430
+ FcObjectSet *os;
431
+ FcPattern *subpat;
432
+
433
+ if (!expect_char (c, '+'))
434
+ return FcFalse;
435
+
436
+ os = FcObjectSetCreate ();
437
+ if (!os)
438
+ return FcFalse;
439
+
440
+ do
441
+ {
442
+ /* XXX binding */
443
+ if (!read_word (c) ||
444
+ !FcObjectSetAdd (os, (const char *) c->word))
445
+ {
446
+ FcObjectSetDestroy (os);
447
+ return FcFalse;
448
+ }
449
+ }
450
+ while (consume_char (c, ','));
451
+
452
+ subpat = FcPatternFilter (pat, os);
453
+ FcObjectSetDestroy (os);
454
+
455
+ if (!subpat ||
456
+ !interpret_subexpr (c, subpat, buf))
457
+ return FcFalse;
458
+
459
+ FcPatternDestroy (subpat);
460
+ return FcTrue;
461
+ }
462
+
463
+ static FcBool
464
+ interpret_filter_out (FcFormatContext *c,
465
+ FcPattern *pat,
466
+ FcStrBuf *buf)
467
+ {
468
+ FcPattern *subpat;
469
+
470
+ if (!expect_char (c, '-'))
471
+ return FcFalse;
472
+
473
+ subpat = FcPatternDuplicate (pat);
474
+ if (!subpat)
475
+ return FcFalse;
476
+
477
+ do
478
+ {
479
+ if (!read_word (c))
480
+ {
481
+ FcPatternDestroy (subpat);
482
+ return FcFalse;
483
+ }
484
+
485
+ FcPatternDel (subpat, (const char *) c->word);
486
+ }
487
+ while (consume_char (c, ','));
488
+
489
+ if (!interpret_subexpr (c, subpat, buf))
490
+ return FcFalse;
491
+
492
+ FcPatternDestroy (subpat);
493
+ return FcTrue;
494
+ }
495
+
496
+ static FcBool
497
+ interpret_cond (FcFormatContext *c,
498
+ FcPattern *pat,
499
+ FcStrBuf *buf)
500
+ {
501
+ FcBool pass;
502
+
503
+ if (!expect_char (c, '?'))
504
+ return FcFalse;
505
+
506
+ pass = FcTrue;
507
+
508
+ do
509
+ {
510
+ FcBool negate;
511
+ FcValue v;
512
+
513
+ negate = consume_char (c, '!');
514
+
515
+ if (!read_word (c))
516
+ return FcFalse;
517
+
518
+ pass = pass &&
519
+ (negate ^
520
+ (FcResultMatch ==
521
+ FcPatternGet (pat, (const char *) c->word, 0, &v)));
522
+ }
523
+ while (consume_char (c, ','));
524
+
525
+ if (pass)
526
+ {
527
+ if (!interpret_subexpr (c, pat, buf) ||
528
+ !maybe_skip_subexpr (c))
529
+ return FcFalse;
530
+ }
531
+ else
532
+ {
533
+ if (!skip_subexpr (c) ||
534
+ !maybe_interpret_subexpr (c, pat, buf))
535
+ return FcFalse;
536
+ }
537
+
538
+ return FcTrue;
539
+ }
540
+
541
+ static FcBool
542
+ interpret_count (FcFormatContext *c,
543
+ FcPattern *pat,
544
+ FcStrBuf *buf)
545
+ {
546
+ int count;
547
+ FcPatternElt *e;
548
+ FcChar8 buf_static[64];
549
+
550
+ if (!expect_char (c, '#'))
551
+ return FcFalse;
552
+
553
+ if (!read_word (c))
554
+ return FcFalse;
555
+
556
+ count = 0;
557
+ e = FcPatternObjectFindElt (pat,
558
+ FcObjectFromName ((const char *) c->word));
559
+ if (e)
560
+ {
561
+ FcValueListPtr l;
562
+ count++;
563
+ for (l = FcPatternEltValues(e);
564
+ l->next;
565
+ l = l->next)
566
+ count++;
567
+ }
568
+
569
+ snprintf ((char *) buf_static, sizeof (buf_static), "%d", count);
570
+ FcStrBufString (buf, buf_static);
571
+
572
+ return FcTrue;
573
+ }
574
+
575
+ static FcBool
576
+ interpret_enumerate (FcFormatContext *c,
577
+ FcPattern *pat,
578
+ FcStrBuf *buf)
579
+ {
580
+ FcObjectSet *os;
581
+ FcPattern *subpat;
582
+ const FcChar8 *format_save;
583
+ int idx;
584
+ FcBool ret, done;
585
+ FcStrList *lang_strs;
586
+
587
+ if (!expect_char (c, '[') ||
588
+ !expect_char (c, ']'))
589
+ return FcFalse;
590
+
591
+ os = FcObjectSetCreate ();
592
+ if (!os)
593
+ return FcFalse;
594
+
595
+ ret = FcTrue;
596
+
597
+ do
598
+ {
599
+ if (!read_word (c) ||
600
+ !FcObjectSetAdd (os, (const char *) c->word))
601
+ {
602
+ FcObjectSetDestroy (os);
603
+ return FcFalse;
604
+ }
605
+ }
606
+ while (consume_char (c, ','));
607
+
608
+ /* If we have one element and it's of type FcLangSet, we want
609
+ * to enumerate the languages in it. */
610
+ lang_strs = NULL;
611
+ if (os->nobject == 1)
612
+ {
613
+ FcLangSet *langset;
614
+ if (FcResultMatch ==
615
+ FcPatternGetLangSet (pat, os->objects[0], 0, &langset))
616
+ {
617
+ FcStrSet *ss;
618
+ if (!(ss = FcLangSetGetLangs (langset)) ||
619
+ !(lang_strs = FcStrListCreate (ss)))
620
+ goto bail0;
621
+ }
622
+ }
623
+
624
+ subpat = FcPatternDuplicate (pat);
625
+ if (!subpat)
626
+ goto bail0;
627
+
628
+ format_save = c->format;
629
+ idx = 0;
630
+ do
631
+ {
632
+ int i;
633
+
634
+ done = FcTrue;
635
+
636
+ if (lang_strs)
637
+ {
638
+ FcChar8 *lang;
639
+
640
+ FcPatternDel (subpat, os->objects[0]);
641
+ if ((lang = FcStrListNext (lang_strs)))
642
+ {
643
+ /* XXX binding? */
644
+ FcPatternAddString (subpat, os->objects[0], lang);
645
+ done = FcFalse;
646
+ }
647
+ }
648
+ else
649
+ {
650
+ for (i = 0; i < os->nobject; i++)
651
+ {
652
+ FcValue v;
653
+
654
+ /* XXX this can be optimized by accessing valuelist linked lists
655
+ * directly and remembering where we were. Most (all) value lists
656
+ * in normal uses are pretty short though (language tags are
657
+ * stored as a LangSet, not separate values.). */
658
+ FcPatternDel (subpat, os->objects[i]);
659
+ if (FcResultMatch ==
660
+ FcPatternGet (pat, os->objects[i], idx, &v))
661
+ {
662
+ /* XXX binding */
663
+ FcPatternAdd (subpat, os->objects[i], v, FcFalse);
664
+ done = FcFalse;
665
+ }
666
+ }
667
+ }
668
+
669
+ if (!done)
670
+ {
671
+ c->format = format_save;
672
+ ret = interpret_subexpr (c, subpat, buf);
673
+ if (!ret)
674
+ goto bail;
675
+ }
676
+
677
+ idx++;
678
+ } while (!done);
679
+
680
+ if (c->format == format_save)
681
+ skip_subexpr (c);
682
+
683
+ bail:
684
+ FcPatternDestroy (subpat);
685
+ bail0:
686
+ if (lang_strs)
687
+ FcStrListDone (lang_strs);
688
+ FcObjectSetDestroy (os);
689
+
690
+ return ret;
691
+ }
692
+
693
+ static FcBool
694
+ interpret_simple (FcFormatContext *c,
695
+ FcPattern *pat,
696
+ FcStrBuf *buf)
697
+ {
698
+ FcPatternElt *e;
699
+ FcBool add_colon = FcFalse;
700
+ FcBool add_elt_name = FcFalse;
701
+ int idx;
702
+ FcChar8 *else_string;
703
+
704
+ if (consume_char (c, ':'))
705
+ add_colon = FcTrue;
706
+
707
+ if (!read_word (c))
708
+ return FcFalse;
709
+
710
+ idx = -1;
711
+ if (consume_char (c, '['))
712
+ {
713
+ idx = strtol ((const char *) c->format, (char **) &c->format, 10);
714
+ if (idx < 0)
715
+ {
716
+ message ("expected non-negative number at %d",
717
+ c->format-1 - c->format_orig + 1);
718
+ return FcFalse;
719
+ }
720
+ if (!expect_char (c, ']'))
721
+ return FcFalse;
722
+ }
723
+
724
+ if (consume_char (c, '='))
725
+ add_elt_name = FcTrue;
726
+
727
+ /* modifiers */
728
+ else_string = NULL;
729
+ if (consume_char (c, ':'))
730
+ {
731
+ FcChar8 *orig;
732
+ /* divert the c->word for now */
733
+ orig = c->word;
734
+ c->word = c->word + strlen ((const char *) c->word) + 1;
735
+ /* for now we just support 'default value' */
736
+ if (!expect_char (c, '-') ||
737
+ !read_chars (c, '|'))
738
+ {
739
+ c->word = orig;
740
+ return FcFalse;
741
+ }
742
+ else_string = c->word;
743
+ c->word = orig;
744
+ }
745
+
746
+ e = FcPatternObjectFindElt (pat,
747
+ FcObjectFromName ((const char *) c->word));
748
+ if (e || else_string)
749
+ {
750
+ FcValueListPtr l = NULL;
751
+
752
+ if (add_colon)
753
+ FcStrBufChar (buf, ':');
754
+ if (add_elt_name)
755
+ {
756
+ FcStrBufString (buf, c->word);
757
+ FcStrBufChar (buf, '=');
758
+ }
759
+
760
+ if (e)
761
+ l = FcPatternEltValues(e);
762
+
763
+ if (idx != -1)
764
+ {
765
+ while (l && idx > 0)
766
+ {
767
+ l = FcValueListNext(l);
768
+ idx--;
769
+ }
770
+ if (l && idx == 0)
771
+ {
772
+ if (!FcNameUnparseValue (buf, &l->value, '\0'))
773
+ return FcFalse;
774
+ }
775
+ else goto notfound;
776
+ }
777
+ else if (l)
778
+ {
779
+ FcNameUnparseValueList (buf, l, '\0');
780
+ }
781
+ else
782
+ {
783
+ notfound:
784
+ if (else_string)
785
+ FcStrBufString (buf, else_string);
786
+ }
787
+ }
788
+
789
+ return FcTrue;
790
+ }
791
+
792
+ static FcBool
793
+ cescape (FcFormatContext *c FC_UNUSED,
794
+ const FcChar8 *str,
795
+ FcStrBuf *buf)
796
+ {
797
+ /* XXX escape \n etc? */
798
+
799
+ while(*str)
800
+ {
801
+ switch (*str)
802
+ {
803
+ case '\\':
804
+ case '"':
805
+ FcStrBufChar (buf, '\\');
806
+ break;
807
+ }
808
+ FcStrBufChar (buf, *str++);
809
+ }
810
+ return FcTrue;
811
+ }
812
+
813
+ static FcBool
814
+ shescape (FcFormatContext *c FC_UNUSED,
815
+ const FcChar8 *str,
816
+ FcStrBuf *buf)
817
+ {
818
+ FcStrBufChar (buf, '\'');
819
+ while(*str)
820
+ {
821
+ if (*str == '\'')
822
+ FcStrBufString (buf, (const FcChar8 *) "'\\''");
823
+ else
824
+ FcStrBufChar (buf, *str);
825
+ str++;
826
+ }
827
+ FcStrBufChar (buf, '\'');
828
+ return FcTrue;
829
+ }
830
+
831
+ static FcBool
832
+ xmlescape (FcFormatContext *c FC_UNUSED,
833
+ const FcChar8 *str,
834
+ FcStrBuf *buf)
835
+ {
836
+ /* XXX escape \n etc? */
837
+
838
+ while(*str)
839
+ {
840
+ switch (*str)
841
+ {
842
+ case '&': FcStrBufString (buf, (const FcChar8 *) "&amp;"); break;
843
+ case '<': FcStrBufString (buf, (const FcChar8 *) "&lt;"); break;
844
+ case '>': FcStrBufString (buf, (const FcChar8 *) "&gt;"); break;
845
+ default: FcStrBufChar (buf, *str); break;
846
+ }
847
+ str++;
848
+ }
849
+ return FcTrue;
850
+ }
851
+
852
+ static FcBool
853
+ delete_chars (FcFormatContext *c,
854
+ const FcChar8 *str,
855
+ FcStrBuf *buf)
856
+ {
857
+ /* XXX not UTF-8 aware */
858
+
859
+ if (!expect_char (c, '(') ||
860
+ !read_chars (c, ')') ||
861
+ !expect_char (c, ')'))
862
+ return FcFalse;
863
+
864
+ while(*str)
865
+ {
866
+ FcChar8 *p;
867
+
868
+ p = (FcChar8 *) strpbrk ((const char *) str, (const char *) c->word);
869
+ if (p)
870
+ {
871
+ FcStrBufData (buf, str, p - str);
872
+ str = p + 1;
873
+ }
874
+ else
875
+ {
876
+ FcStrBufString (buf, str);
877
+ break;
878
+ }
879
+
880
+ }
881
+
882
+ return FcTrue;
883
+ }
884
+
885
+ static FcBool
886
+ escape_chars (FcFormatContext *c,
887
+ const FcChar8 *str,
888
+ FcStrBuf *buf)
889
+ {
890
+ /* XXX not UTF-8 aware */
891
+
892
+ if (!expect_char (c, '(') ||
893
+ !read_chars (c, ')') ||
894
+ !expect_char (c, ')'))
895
+ return FcFalse;
896
+
897
+ while(*str)
898
+ {
899
+ FcChar8 *p;
900
+
901
+ p = (FcChar8 *) strpbrk ((const char *) str, (const char *) c->word);
902
+ if (p)
903
+ {
904
+ FcStrBufData (buf, str, p - str);
905
+ FcStrBufChar (buf, c->word[0]);
906
+ FcStrBufChar (buf, *p);
907
+ str = p + 1;
908
+ }
909
+ else
910
+ {
911
+ FcStrBufString (buf, str);
912
+ break;
913
+ }
914
+
915
+ }
916
+
917
+ return FcTrue;
918
+ }
919
+
920
+ static FcBool
921
+ translate_chars (FcFormatContext *c,
922
+ const FcChar8 *str,
923
+ FcStrBuf *buf)
924
+ {
925
+ char *from, *to, repeat;
926
+ int from_len, to_len;
927
+
928
+ /* XXX not UTF-8 aware */
929
+
930
+ if (!expect_char (c, '(') ||
931
+ !read_chars (c, ',') ||
932
+ !expect_char (c, ','))
933
+ return FcFalse;
934
+
935
+ from = (char *) c->word;
936
+ from_len = strlen (from);
937
+ to = from + from_len + 1;
938
+
939
+ /* hack: we temporarily divert c->word */
940
+ c->word = (FcChar8 *) to;
941
+ if (!read_chars (c, ')'))
942
+ {
943
+ c->word = (FcChar8 *) from;
944
+ return FcFalse;
945
+ }
946
+ c->word = (FcChar8 *) from;
947
+
948
+ to_len = strlen (to);
949
+ repeat = to[to_len - 1];
950
+
951
+ if (!expect_char (c, ')'))
952
+ return FcFalse;
953
+
954
+ while(*str)
955
+ {
956
+ FcChar8 *p;
957
+
958
+ p = (FcChar8 *) strpbrk ((const char *) str, (const char *) from);
959
+ if (p)
960
+ {
961
+ int i;
962
+ FcStrBufData (buf, str, p - str);
963
+ i = strchr (from, *p) - from;
964
+ FcStrBufChar (buf, i < to_len ? to[i] : repeat);
965
+ str = p + 1;
966
+ }
967
+ else
968
+ {
969
+ FcStrBufString (buf, str);
970
+ break;
971
+ }
972
+
973
+ }
974
+
975
+ return FcTrue;
976
+ }
977
+
978
+ static FcBool
979
+ interpret_convert (FcFormatContext *c,
980
+ FcStrBuf *buf,
981
+ int start)
982
+ {
983
+ const FcChar8 *str;
984
+ FcChar8 *new_str;
985
+ FcStrBuf new_buf;
986
+ FcChar8 buf_static[8192];
987
+ FcBool ret;
988
+
989
+ if (!expect_char (c, '|') ||
990
+ !read_word (c))
991
+ return FcFalse;
992
+
993
+ /* prepare the buffer */
994
+ FcStrBufChar (buf, '\0');
995
+ if (buf->failed)
996
+ return FcFalse;
997
+ str = buf->buf + start;
998
+ buf->len = start;
999
+
1000
+ /* try simple converters first */
1001
+ if (0) { }
1002
+ #define CONVERTER(name, func) \
1003
+ else if (0 == strcmp ((const char *) c->word, name))\
1004
+ do { new_str = func (str); ret = FcTrue; } while (0)
1005
+ CONVERTER ("downcase", FcStrDowncase);
1006
+ CONVERTER ("basename", FcStrBasename);
1007
+ CONVERTER ("dirname", FcStrDirname);
1008
+ #undef CONVERTER
1009
+ else
1010
+ ret = FcFalse;
1011
+
1012
+ if (ret)
1013
+ {
1014
+ if (new_str)
1015
+ {
1016
+ FcStrBufString (buf, new_str);
1017
+ FcStrFree (new_str);
1018
+ return FcTrue;
1019
+ }
1020
+ else
1021
+ return FcFalse;
1022
+ }
1023
+
1024
+ FcStrBufInit (&new_buf, buf_static, sizeof (buf_static));
1025
+
1026
+ /* now try our custom converters */
1027
+ if (0) { }
1028
+ #define CONVERTER(name, func) \
1029
+ else if (0 == strcmp ((const char *) c->word, name))\
1030
+ ret = func (c, str, &new_buf)
1031
+ CONVERTER ("cescape", cescape);
1032
+ CONVERTER ("shescape", shescape);
1033
+ CONVERTER ("xmlescape", xmlescape);
1034
+ CONVERTER ("delete", delete_chars);
1035
+ CONVERTER ("escape", escape_chars);
1036
+ CONVERTER ("translate", translate_chars);
1037
+ #undef CONVERTER
1038
+ else
1039
+ ret = FcFalse;
1040
+
1041
+ if (ret)
1042
+ {
1043
+ FcStrBufChar (&new_buf, '\0');
1044
+ FcStrBufString (buf, new_buf.buf);
1045
+ }
1046
+ else
1047
+ message ("unknown converter \"%s\"",
1048
+ c->word);
1049
+
1050
+ FcStrBufDestroy (&new_buf);
1051
+
1052
+ return ret;
1053
+ }
1054
+
1055
+ static FcBool
1056
+ maybe_interpret_converts (FcFormatContext *c,
1057
+ FcStrBuf *buf,
1058
+ int start)
1059
+ {
1060
+ while (*c->format == '|')
1061
+ if (!interpret_convert (c, buf, start))
1062
+ return FcFalse;
1063
+
1064
+ return FcTrue;
1065
+ }
1066
+
1067
+ static FcBool
1068
+ align_to_width (FcStrBuf *buf,
1069
+ int start,
1070
+ int width)
1071
+ {
1072
+ int len;
1073
+
1074
+ if (buf->failed)
1075
+ return FcFalse;
1076
+
1077
+ len = buf->len - start;
1078
+ if (len < -width)
1079
+ {
1080
+ /* left align */
1081
+ while (len++ < -width)
1082
+ FcStrBufChar (buf, ' ');
1083
+ }
1084
+ else if (len < width)
1085
+ {
1086
+ int old_len;
1087
+ old_len = len;
1088
+ /* right align */
1089
+ while (len++ < width)
1090
+ FcStrBufChar (buf, ' ');
1091
+ if (buf->failed)
1092
+ return FcFalse;
1093
+ len = old_len;
1094
+ memmove (buf->buf + buf->len - len,
1095
+ buf->buf + buf->len - width,
1096
+ len);
1097
+ memset (buf->buf + buf->len - width,
1098
+ ' ',
1099
+ width - len);
1100
+ }
1101
+
1102
+ return !buf->failed;
1103
+ }
1104
+ static FcBool
1105
+ interpret_percent (FcFormatContext *c,
1106
+ FcPattern *pat,
1107
+ FcStrBuf *buf)
1108
+ {
1109
+ int width, start;
1110
+ FcBool ret;
1111
+
1112
+ if (!expect_char (c, '%'))
1113
+ return FcFalse;
1114
+
1115
+ if (consume_char (c, '%')) /* "%%" */
1116
+ {
1117
+ FcStrBufChar (buf, '%');
1118
+ return FcTrue;
1119
+ }
1120
+
1121
+ /* parse an optional width specifier */
1122
+ width = strtol ((const char *) c->format, (char **) &c->format, 10);
1123
+
1124
+ if (!expect_char (c, '{'))
1125
+ return FcFalse;
1126
+
1127
+ start = buf->len;
1128
+
1129
+ switch (*c->format) {
1130
+ case '=': ret = interpret_builtin (c, pat, buf); break;
1131
+ case '{': ret = interpret_subexpr (c, pat, buf); break;
1132
+ case '+': ret = interpret_filter_in (c, pat, buf); break;
1133
+ case '-': ret = interpret_filter_out (c, pat, buf); break;
1134
+ case '?': ret = interpret_cond (c, pat, buf); break;
1135
+ case '#': ret = interpret_count (c, pat, buf); break;
1136
+ case '[': ret = interpret_enumerate (c, pat, buf); break;
1137
+ default: ret = interpret_simple (c, pat, buf); break;
1138
+ }
1139
+
1140
+ return ret &&
1141
+ maybe_interpret_converts (c, buf, start) &&
1142
+ align_to_width (buf, start, width) &&
1143
+ expect_char (c, '}');
1144
+ }
1145
+
1146
+ static FcBool
1147
+ interpret_expr (FcFormatContext *c,
1148
+ FcPattern *pat,
1149
+ FcStrBuf *buf,
1150
+ FcChar8 term)
1151
+ {
1152
+ while (*c->format && *c->format != term)
1153
+ {
1154
+ switch (*c->format)
1155
+ {
1156
+ case '\\':
1157
+ c->format++; /* skip over '\\' */
1158
+ if (*c->format)
1159
+ FcStrBufChar (buf, escaped_char (*c->format++));
1160
+ continue;
1161
+ case '%':
1162
+ if (!interpret_percent (c, pat, buf))
1163
+ return FcFalse;
1164
+ continue;
1165
+ }
1166
+ FcStrBufChar (buf, *c->format++);
1167
+ }
1168
+ return FcTrue;
1169
+ }
1170
+
1171
+ static FcBool
1172
+ FcPatternFormatToBuf (FcPattern *pat,
1173
+ const FcChar8 *format,
1174
+ FcStrBuf *buf)
1175
+ {
1176
+ FcFormatContext c;
1177
+ FcChar8 word_static[1024];
1178
+ FcBool ret;
1179
+
1180
+ if (!FcFormatContextInit (&c, format, word_static, sizeof (word_static)))
1181
+ return FcFalse;
1182
+
1183
+ ret = interpret_expr (&c, pat, buf, '\0');
1184
+
1185
+ FcFormatContextDone (&c);
1186
+
1187
+ return ret;
1188
+ }
1189
+
1190
+ FcChar8 *
1191
+ FcPatternFormat (FcPattern *pat,
1192
+ const FcChar8 *format)
1193
+ {
1194
+ FcStrBuf buf;
1195
+ FcChar8 buf_static[8192 - 1024];
1196
+ FcPattern *alloced = NULL;
1197
+ FcBool ret;
1198
+
1199
+ if (!pat)
1200
+ alloced = pat = FcPatternCreate ();
1201
+
1202
+ FcStrBufInit (&buf, buf_static, sizeof (buf_static));
1203
+
1204
+ ret = FcPatternFormatToBuf (pat, format, &buf);
1205
+
1206
+ if (alloced)
1207
+ FcPatternDestroy (alloced);
1208
+
1209
+ if (ret)
1210
+ return FcStrBufDone (&buf);
1211
+ else
1212
+ {
1213
+ FcStrBufDestroy (&buf);
1214
+ return NULL;
1215
+ }
1216
+ }
1217
+
1218
+ #define __fcformat__
1219
+ #include "fcaliastail.h"
1220
+ #undef __fcformat__