Warn if config is wrong
Submitted by Behdad Esfahbod
Assigned to fon..@..op.org
Description
I know we don't do full xml validation against the DTD, but at least, we should be able to catch many nonsensical configs, for example, someone trying this:
<match target="font">
<or>
<test name="family" compare="contains">
<string>
MYingHeiB5HK</string>
</test>
<test name="family" compare="contains">
<string>
MYingHeiGB18030</string>
</test>
<test name="family" compare="contains">
<string>
MSung GB18030</string>
</test>
<test name="family" compare="contains">
<string>
MSung B5HK</string>
</test>
</or>
<edit name="hinting" mode="assign">``<bool>
true</bool>``</edit>
<edit name="autohint" mode="assign">``<bool>
true</bool>``</edit>
<edit name="hintstyle" mode="assign">``<const>
hintslight</const>``</edit>
<edit name="antialias" mode="assign">``<bool>
true</bool>``</edit>
<edit name="rgba" mode="assign">``<const>
none</const>``</edit>
</match>
The problem is, <or>
doesn't go in <match>
, and <test>
doesn't go in <or>
. It just edits the pattern unconditionally!
I think the correct way to write it is:
<match target="font">
<test name="family" compare="contains">
<or>
<string>
MYingHeiB5HK</string>
<string>
MYingHeiGB18030</string>
<string>
MSung GB18030</string>
<string>
MSung B5HK</string>
</or>
</test>
I hear in the past (with 2.7.x), this used to work:
<match target="font">
<test name="family" compare="contains">
<string>
MYingHeiB5HK</string>
<string>
MYingHeiGB18030</string>
<string>
MSung GB18030</string>
<string>
MSung B5HK</string>
</test>
<edit name="hinting" mode="assign">``<bool>
true</bool>``</edit>
<edit name="autohint" mode="assign">``<bool>
true</bool>``</edit>
<edit name="hintstyle" mode="assign">``<const>
hintslight</const>``</edit>
<edit name="antialias" mode="assign">``<bool>
true</bool>``</edit>
<edit name="rgba" mode="assign">``<const>
none</const>``</edit>
</match>
but with 2.11.x started warning about multiple strings in <test>
...