fonts.dtd revision ca08ab68
12c393a42Smrg<!-- This is the Document Type Definition for font configuration files -->
22c393a42Smrg<!ELEMENT fontconfig (dir | 
32c393a42Smrg		      cache | 
42c393a42Smrg		      cachedir |
52c393a42Smrg		      include | 
62c393a42Smrg		      config |
72c393a42Smrg		      selectfont |
82c393a42Smrg		      match | 
92c393a42Smrg		      alias)* >
102c393a42Smrg
112c393a42Smrg<!-- 
122c393a42Smrg    Add a directory that provides fonts
132c393a42Smrg-->
142c393a42Smrg<!ELEMENT dir (#PCDATA)>
15ca08ab68Smrg<!ATTLIST dir
16ca08ab68Smrg	  prefix    CDATA       "default"
17ca08ab68Smrg	  xml:space (default|preserve) 'preserve'>
182c393a42Smrg
192c393a42Smrg<!--
202c393a42Smrg    Define the per-user file that holds cache font information.
212c393a42Smrg
222c393a42Smrg    If the filename begins with '~', it is replaced with the users
232c393a42Smrg    home directory path.
242c393a42Smrg-->
252c393a42Smrg<!ELEMENT cache (#PCDATA)>
262c393a42Smrg<!ATTLIST cache xml:space (default|preserve) 'preserve'>
272c393a42Smrg
282c393a42Smrg<!--
292c393a42Smrg    Add a directory that is searched for font cache files.
302c393a42Smrg    These hold per-directory cache data and are searched in
312c393a42Smrg    order for each directory. When writing cache files, the first
322c393a42Smrg    directory which allows the cache file to be created is used.
332c393a42Smrg
342c393a42Smrg    A leading '~' in a directory name is replaced with the users
352c393a42Smrg    home directory path.
362c393a42Smrg-->
372c393a42Smrg<!ELEMENT cachedir (#PCDATA)>
38ca08ab68Smrg<!ATTLIST cachedir
39ca08ab68Smrg	  prefix    CDATA      "default"
40ca08ab68Smrg	  xml:space (default|preserve) 'preserve'>
412c393a42Smrg
422c393a42Smrg<!--
432c393a42Smrg    Reference another configuration file; note that this
442c393a42Smrg    is another complete font configuration file and not
452c393a42Smrg    just a file included by the XML parser.
462c393a42Smrg
472c393a42Smrg    Set 'ignore_missing' to 'yes' if errors are to be ignored.
482c393a42Smrg
492c393a42Smrg    If the filename begins with '~', it is replaced with the users
502c393a42Smrg    home directory path.
512c393a42Smrg-->
522c393a42Smrg<!ELEMENT include (#PCDATA)>
532c393a42Smrg<!ATTLIST include
542c393a42Smrg	  ignore_missing    (no|yes)		"no"
55ca08ab68Smrg	  prefix	    CDATA               "default"
56ca08ab68Smrg	  deprecated	    (yes|no)		"no"
572c393a42Smrg	  xml:space	    (default|preserve)	"preserve">
582c393a42Smrg
592c393a42Smrg<!--
602c393a42Smrg    Global library configuration data
612c393a42Smrg -->
622c393a42Smrg<!ELEMENT config (blank|rescan)*>
632c393a42Smrg
642c393a42Smrg<!--
652c393a42Smrg    Specify the set of Unicode encoding values which
662c393a42Smrg    represent glyphs that are allowed to contain no
672c393a42Smrg    data.  With this list, fontconfig can examine
682c393a42Smrg    fonts for broken glyphs and eliminate them from
692c393a42Smrg    the set of valid Unicode chars.  This idea
702c393a42Smrg    was borrowed from Mozilla
712c393a42Smrg -->
72ca08ab68Smrg<!ELEMENT blank (int|range)*>
732c393a42Smrg
742c393a42Smrg<!--
752c393a42Smrg    Aliases are just a special case for multiple match elements
762c393a42Smrg
772c393a42Smrg    They are syntactically equivalent to:
782c393a42Smrg
792c393a42Smrg    <match>
802c393a42Smrg	<test name="family">
812c393a42Smrg	    <string value=[family]/>
822c393a42Smrg	</test>
832c393a42Smrg	<edit name="family" mode="prepend">
842c393a42Smrg	    <string value=[prefer]/>
852c393a42Smrg	    ...
862c393a42Smrg	</edit>
872c393a42Smrg	<edit name="family" mode="append">
882c393a42Smrg	    <string value=[accept]/>
892c393a42Smrg	    ...
902c393a42Smrg	</edit>
912c393a42Smrg	<edit name="family" mode="append_last">
922c393a42Smrg	    <string value=[default]/>
932c393a42Smrg	    ...
942c393a42Smrg	</edit>
952c393a42Smrg    </match>
962c393a42Smrg-->
972c393a42Smrg<!--
982c393a42Smrg    Periodically rescan the font configuration and
992c393a42Smrg    directories to synch internal state with filesystem
1002c393a42Smrg -->
1012c393a42Smrg<!ELEMENT rescan (int)>
1022c393a42Smrg
1032c393a42Smrg<!--
1042c393a42Smrg    Edit list of available fonts at startup/reload time
1052c393a42Smrg -->
1062c393a42Smrg<!ELEMENT selectfont (rejectfont | acceptfont)* >
1072c393a42Smrg
1082c393a42Smrg<!ELEMENT rejectfont (glob | pattern)*>
1092c393a42Smrg
1102c393a42Smrg<!ELEMENT acceptfont (glob | pattern)*>
1112c393a42Smrg
1122c393a42Smrg<!ELEMENT glob (#PCDATA)>
1132c393a42Smrg
1142c393a42Smrg<!ELEMENT pattern (patelt)*>
1152c393a42Smrg
116ca08ab68Smrg<!ENTITY % constant 'int|double|string|matrix|bool|charset|langset|const'>
1172c393a42Smrg
1182c393a42Smrg<!ELEMENT patelt (%constant;)*>
1192c393a42Smrg<!ATTLIST patelt
1202c393a42Smrg	  name CDATA	#REQUIRED>
1212c393a42Smrg
122ca08ab68Smrg<!ELEMENT alias (test?, family*, prefer?, accept?, default?)>
1232c393a42Smrg<!ATTLIST alias
1242c393a42Smrg	  binding (weak|strong|same) "weak">
1252c393a42Smrg<!ELEMENT prefer (family)*>
1262c393a42Smrg<!ELEMENT accept (family)*>
1272c393a42Smrg<!ELEMENT default (family)*>
1282c393a42Smrg<!ELEMENT family (#PCDATA)>
1292c393a42Smrg<!ATTLIST family xml:space (default|preserve) 'preserve'>
1302c393a42Smrg
131ca08ab68Smrg<!ENTITY % expr 'int|double|string|matrix|bool|charset|langset
1322c393a42Smrg		|name|const
1332c393a42Smrg		|or|and|eq|not_eq|less|less_eq|more|more_eq|contains|not_contains
1342c393a42Smrg		|plus|minus|times|divide|not|if|floor|ceil|round|trunc'>
1352c393a42Smrg
1362c393a42Smrg<!--
1372c393a42Smrg    Match and edit patterns.
1382c393a42Smrg
1392c393a42Smrg    If 'target' is 'pattern', execute the match before selecting a font.
1402c393a42Smrg    if 'target' is 'font', execute the match on the result of a font
1412c393a42Smrg    selection.
1422c393a42Smrg-->
1432c393a42Smrg<!ELEMENT match (test*, edit*)>
1442c393a42Smrg<!ATTLIST match
1452c393a42Smrg	  target (pattern|font|scan) "pattern">
1462c393a42Smrg
1472c393a42Smrg<!--
1482c393a42Smrg    Match a field in a pattern
1492c393a42Smrg
1502c393a42Smrg    if 'qual' is 'any', then the match succeeds if any value in the field matches.
1512c393a42Smrg    if 'qual' is 'all', then the match succeeds only if all values match.
1522c393a42Smrg    if 'qual' is 'first', then the match succeeds only if the first value matches.
1532c393a42Smrg    if 'qual' is 'not_first', then the match succeeds only if any value other than
1542c393a42Smrg    	the first matches.
1552c393a42Smrg    For match elements with target=font, if test 'target' is 'pattern',
1562c393a42Smrg    then the test is applied to the pattern used in matching rather than
1572c393a42Smrg    to the resulting font.
1582c393a42Smrg
1592c393a42Smrg    Match elements with target=scan are applied as fonts are scanned.
1602c393a42Smrg    They edit the pattern generated from the scanned font and affect
1612c393a42Smrg    what the fontconfig database contains.
1622c393a42Smrg-->
1632c393a42Smrg<!ELEMENT test (%expr;)*>
1642c393a42Smrg<!ATTLIST test 
1652c393a42Smrg	  qual (any|all|first|not_first)    "any"
1662c393a42Smrg	  name CDATA	    #REQUIRED
1672c393a42Smrg	  target (pattern|font|default)		"default"
168ca08ab68Smrg	  ignore-blanks (true|false)	"false"
1692c393a42Smrg	  compare (eq|not_eq|less|less_eq|more|more_eq|contains|not_contains)	"eq">
1702c393a42Smrg
1712c393a42Smrg<!--
1722c393a42Smrg    Edit a field in a pattern
1732c393a42Smrg
1742c393a42Smrg    The enclosed values are used together to edit the list of values
1752c393a42Smrg    associated with 'name'.
1762c393a42Smrg
1772c393a42Smrg    If 'name' matches one of those used in a test element for this match element:
1782c393a42Smrg	if 'mode' is 'assign', replace the matched value.
1792c393a42Smrg	if 'mode' is 'assign_replace', replace all of the values
1802c393a42Smrg	if 'mode' is 'prepend', insert before the matched value
1812c393a42Smrg	if 'mode' is 'append', insert after the matched value
1822c393a42Smrg	if 'mode' is 'prepend_first', insert before all of the values
1832c393a42Smrg	if 'mode' is 'append_last', insert after all of the values
1842c393a42Smrg    If 'name' doesn't match any of those used in a test element:
1852c393a42Smrg	if 'mode' is 'assign' or 'assign_replace, replace all of the values
1862c393a42Smrg	if 'mode' is 'prepend' or 'prepend_first', insert before all of the values
1872c393a42Smrg	if 'mode' is 'append' or 'append_last', insert after all of the values
1882c393a42Smrg-->
1892c393a42Smrg<!ELEMENT edit (%expr;)*>
1902c393a42Smrg<!ATTLIST edit
1912c393a42Smrg	  name CDATA	    #REQUIRED
1922c393a42Smrg	  mode (assign|assign_replace|prepend|append|prepend_first|append_last) "assign"
1932c393a42Smrg	  binding (weak|strong|same) "weak">
1942c393a42Smrg
1952c393a42Smrg<!--
1962c393a42Smrg    Elements of expressions follow
1972c393a42Smrg-->
1982c393a42Smrg<!ELEMENT int (#PCDATA)>
1992c393a42Smrg<!ATTLIST int xml:space (default|preserve) 'preserve'>
2002c393a42Smrg<!ELEMENT double (#PCDATA)>
2012c393a42Smrg<!ATTLIST double xml:space (default|preserve) 'preserve'>
2022c393a42Smrg<!ELEMENT string (#PCDATA)>
2032c393a42Smrg<!ATTLIST string xml:space (default|preserve) 'preserve'>
2042c393a42Smrg<!ELEMENT matrix (double,double,double,double)>
2052c393a42Smrg<!ELEMENT bool (#PCDATA)>
206ca08ab68Smrg<!ELEMENT charset (int|range)*>
207ca08ab68Smrg<!ELEMENT range (int,int)>
208ca08ab68Smrg<!ELEMENT langset (string)*>
2092c393a42Smrg<!ELEMENT name (#PCDATA)>
2102c393a42Smrg<!ATTLIST name xml:space (default|preserve) 'preserve'>
2112c393a42Smrg<!ELEMENT const (#PCDATA)>
2122c393a42Smrg<!ATTLIST const xml:space (default|preserve) 'preserve'>
2132c393a42Smrg<!ELEMENT or (%expr;)*>
2142c393a42Smrg<!ELEMENT and (%expr;)*>
2152c393a42Smrg<!ELEMENT eq ((%expr;), (%expr;))>
2162c393a42Smrg<!ELEMENT not_eq ((%expr;), (%expr;))>
2172c393a42Smrg<!ELEMENT less ((%expr;), (%expr;))>
2182c393a42Smrg<!ELEMENT less_eq ((%expr;), (%expr;))>
2192c393a42Smrg<!ELEMENT more ((%expr;), (%expr;))>
2202c393a42Smrg<!ELEMENT more_eq ((%expr;), (%expr;))>
2212c393a42Smrg<!ELEMENT contains ((%expr;), (%expr;))>
2222c393a42Smrg<!ELEMENT not_contains ((%expr;), (%expr;))>
2232c393a42Smrg<!ELEMENT plus (%expr;)*>
2242c393a42Smrg<!ELEMENT minus (%expr;)*>
2252c393a42Smrg<!ELEMENT times (%expr;)*>
2262c393a42Smrg<!ELEMENT divide (%expr;)*>
2272c393a42Smrg<!ELEMENT not (%expr;)>
2282c393a42Smrg<!ELEMENT if ((%expr;), (%expr;), (%expr;))>
2292c393a42Smrg<!ELEMENT floor (%expr;)>
2302c393a42Smrg<!ELEMENT ceil (%expr;)>
2312c393a42Smrg<!ELEMENT round (%expr;)>
2322c393a42Smrg<!ELEMENT trunc (%expr;)>
233