Merge branch 'upstream' into tizen
[platform/upstream/fontconfig.git] / fonts.dtd
1 <!-- This is the Document Type Definition for font configuration files -->
2 <!ELEMENT fontconfig (alias |
3                       cache | 
4                       cachedir |
5                       config |
6                       description |
7                       dir |
8                       include |
9                       match |
10                       remap-dir |
11                       reset-dirs |
12                       selectfont)* >
13
14 <!-- 
15     Add a directory that provides fonts
16 -->
17 <!ELEMENT dir (#PCDATA)>
18 <!ATTLIST dir
19           prefix    (default|xdg|relative|cwd)    "default"
20           xml:space (default|preserve)            'preserve'>
21
22 <!--
23     Define the per-user file that holds cache font information.
24
25     If the filename begins with '~', it is replaced with the users
26     home directory path.
27
28     If 'prefix' is 'default' or 'cwd', then the current working directory will be added prior to the value.
29     If 'prefix' is 'xdg', then the value in the $XDG_DATA_HOME will be added prior to the value.
30     If 'prefix' is 'relative', then the path of current file will be added prior to the value.
31 -->
32 <!ELEMENT cache (#PCDATA)>
33 <!ATTLIST cache xml:space (default|preserve) 'preserve'>
34
35 <!--
36     Add a directory that is searched for font cache files.
37     These hold per-directory cache data and are searched in
38     order for each directory. When writing cache files, the first
39     directory which allows the cache file to be created is used.
40
41     A leading '~' in a directory name is replaced with the users
42     home directory path.
43 -->
44 <!ELEMENT cachedir (#PCDATA)>
45 <!ATTLIST cachedir
46           prefix    CDATA      "default"
47           xml:space (default|preserve) 'preserve'>
48
49 <!--
50     Set a string as a description for the targeted config file
51
52     Set 'domain' to change where to pull translations from.
53     This will be done through gettext.
54 -->
55 <!ELEMENT description (#PCDATA)>
56 <!ATTLIST description
57           domain        CDATA   "fontconfig-conf">
58
59 <!--
60     Reference another configuration file; note that this
61     is another complete font configuration file and not
62     just a file included by the XML parser.
63
64     Set 'ignore_missing' to 'yes' if errors are to be ignored.
65
66     If the filename begins with '~', it is replaced with the users
67     home directory path.
68 -->
69 <!ELEMENT include (#PCDATA)>
70 <!ATTLIST include
71           ignore_missing    (no|yes)            "no"
72           prefix            CDATA               "default"
73           deprecated        (yes|no)            "no"
74           xml:space         (default|preserve)  "preserve">
75
76 <!--
77     Global library configuration data
78  -->
79 <!ELEMENT config (blank|rescan)*>
80
81 <!--
82     Specify the set of Unicode encoding values which
83     represent glyphs that are allowed to contain no
84     data.  With this list, fontconfig can examine
85     fonts for broken glyphs and eliminate them from
86     the set of valid Unicode chars.  This idea
87     was borrowed from Mozilla
88  -->
89 <!ELEMENT blank (int|range)*>
90
91 <!--
92     Aliases are just a special case for multiple match elements
93
94     They are syntactically equivalent to:
95
96     <match>
97         <test name="family">
98             <string value=[family]/>
99         </test>
100         <edit name="family" mode="prepend">
101             <string value=[prefer]/>
102             ...
103         </edit>
104         <edit name="family" mode="append">
105             <string value=[accept]/>
106             ...
107         </edit>
108         <edit name="family" mode="append_last">
109             <string value=[default]/>
110             ...
111         </edit>
112     </match>
113 -->
114
115 <!--
116     Map a font path as the path "as-path"
117 -->
118 <!ELEMENT remap-dir (#PCDATA)>
119 <!ATTLIST remap-dir
120           as-path   CDATA                       #REQUIRED
121           prefix    (default|xdg|relative|cwd)  "default"
122           xml:space (default|preserve)          "preserve">
123
124 <!--
125     Reset the list of fonts directories
126 -->
127 <!ELEMENT reset-dirs EMPTY>
128
129 <!--
130     Periodically rescan the font configuration and
131     directories to synch internal state with filesystem
132  -->
133 <!ELEMENT rescan (int)>
134
135 <!--
136     Edit list of available fonts at startup/reload time
137  -->
138 <!ELEMENT selectfont (rejectfont | acceptfont)* >
139
140 <!ELEMENT rejectfont (glob | pattern)*>
141
142 <!ELEMENT acceptfont (glob | pattern)*>
143
144 <!ELEMENT glob (#PCDATA)>
145
146 <!ELEMENT pattern (patelt)*>
147
148 <!ENTITY % constant 'int|double|string|matrix|bool|charset|langset|const'>
149
150 <!ELEMENT patelt (%constant;)*>
151 <!ATTLIST patelt
152           name CDATA    #REQUIRED>
153
154 <!ELEMENT alias (test?, family*, prefer?, accept?, default?)>
155 <!ATTLIST alias
156           binding (weak|strong|same) "weak">
157 <!ELEMENT prefer (family)*>
158 <!ELEMENT accept (family)*>
159 <!ELEMENT default (family)*>
160 <!ELEMENT family (#PCDATA)>
161 <!ATTLIST family xml:space (default|preserve) 'preserve'>
162
163 <!ENTITY % expr 'int|double|string|matrix|bool|charset|langset
164                 |name|const
165                 |or|and|eq|not_eq|less|less_eq|more|more_eq|contains|not_contains
166                 |plus|minus|times|divide|not|if|floor|ceil|round|trunc'>
167
168 <!--
169     Match and edit patterns.
170
171     If 'target' is 'pattern', execute the match before selecting a font.
172     if 'target' is 'font', execute the match on the result of a font
173     selection.
174 -->
175 <!ELEMENT match (test|edit)+>
176 <!ATTLIST match
177           target (pattern|font|scan) "pattern">
178
179 <!--
180     Match a field in a pattern
181
182     if 'qual' is 'any', then the match succeeds if any value in the field matches.
183     if 'qual' is 'all', then the match succeeds only if all values match.
184     if 'qual' is 'first', then the match succeeds only if the first value matches.
185     if 'qual' is 'not_first', then the match succeeds only if any value other than
186         the first matches.
187     For match elements with target=font, if test 'target' is 'pattern',
188     then the test is applied to the pattern used in matching rather than
189     to the resulting font.
190
191     Match elements with target=scan are applied as fonts are scanned.
192     They edit the pattern generated from the scanned font and affect
193     what the fontconfig database contains.
194 -->
195 <!ELEMENT test (%expr;)*>
196 <!ATTLIST test 
197           qual (any|all|first|not_first)    "any"
198           name CDATA        #REQUIRED
199           target (pattern|font|default)         "default"
200           ignore-blanks (true|false)    "false"
201           compare (eq|not_eq|less|less_eq|more|more_eq|contains|not_contains)   "eq">
202
203 <!--
204     Edit a field in a pattern
205
206     The enclosed values are used together to edit the list of values
207     associated with 'name'.
208
209     If 'name' matches one of those used in a test element for this match element:
210         if 'mode' is 'assign', replace the matched value.
211         if 'mode' is 'assign_replace', replace all of the values
212         if 'mode' is 'prepend', insert before the matched value
213         if 'mode' is 'append', insert after the matched value
214         if 'mode' is 'prepend_first', insert before all of the values
215         if 'mode' is 'append_last', insert after all of the values
216     If 'name' doesn't match any of those used in a test element:
217         if 'mode' is 'assign' or 'assign_replace, replace all of the values
218         if 'mode' is 'prepend' or 'prepend_first', insert before all of the values
219         if 'mode' is 'append' or 'append_last', insert after all of the values
220 -->
221 <!ELEMENT edit (%expr;)*>
222 <!ATTLIST edit
223           name CDATA        #REQUIRED
224           mode (assign|assign_replace|prepend|append|prepend_first|append_last|delete|delete_all) "assign"
225           binding (weak|strong|same) "weak">
226
227 <!--
228     Elements of expressions follow
229 -->
230 <!ELEMENT int (#PCDATA)>
231 <!ATTLIST int xml:space (default|preserve) 'preserve'>
232 <!ELEMENT double (#PCDATA)>
233 <!ATTLIST double xml:space (default|preserve) 'preserve'>
234 <!ELEMENT string (#PCDATA)>
235 <!ATTLIST string xml:space (default|preserve) 'preserve'>
236 <!ELEMENT matrix ((%expr;), (%expr;), (%expr;), (%expr;))>
237 <!ELEMENT bool (#PCDATA)>
238 <!ELEMENT charset (int|range)*>
239 <!ELEMENT range (int,int)>
240 <!ELEMENT langset (string)*>
241 <!ELEMENT name (#PCDATA)>
242 <!ATTLIST name xml:space (default|preserve) 'preserve'
243           target (default|font|pattern) 'default'>
244 <!ELEMENT const (#PCDATA)>
245 <!ATTLIST const xml:space (default|preserve) 'preserve'>
246 <!ELEMENT or (%expr;)*>
247 <!ELEMENT and (%expr;)*>
248 <!ELEMENT eq ((%expr;), (%expr;))>
249 <!ELEMENT not_eq ((%expr;), (%expr;))>
250 <!ELEMENT less ((%expr;), (%expr;))>
251 <!ELEMENT less_eq ((%expr;), (%expr;))>
252 <!ELEMENT more ((%expr;), (%expr;))>
253 <!ELEMENT more_eq ((%expr;), (%expr;))>
254 <!ELEMENT contains ((%expr;), (%expr;))>
255 <!ELEMENT not_contains ((%expr;), (%expr;))>
256 <!ELEMENT plus (%expr;)*>
257 <!ELEMENT minus (%expr;)*>
258 <!ELEMENT times (%expr;)*>
259 <!ELEMENT divide (%expr;)*>
260 <!ELEMENT not (%expr;)>
261 <!ELEMENT if ((%expr;), (%expr;), (%expr;))>
262 <!ELEMENT floor (%expr;)>
263 <!ELEMENT ceil (%expr;)>
264 <!ELEMENT round (%expr;)>
265 <!ELEMENT trunc (%expr;)>