# Tests for opentype font feature control (bug 511339)
#
# These rely on the Linux Libertine font (loaded via @font-face)
# to ensure that features are present.

# check that Turkish language causes a change in rendering (no fi ligature)
# (also works via Pango)
skip-if(B2G||Mulet) HTTP(..) != font-features-turkish.html font-features-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop

# check that disabling ligatures causes a change
HTTP(..) != font-features-noliga.html font-features-ref.html

# check that enabling optional ligatures causes a change
HTTP(..) != font-features-hlig.html font-features-ref.html

# compare Turkish rendering with reference using ZWNJ to break the ligature
HTTP(..) == font-features-turkish.html font-features-turkish-ref.html

# compare Turkish rendering with explicitly disabled ligatures
HTTP(..) == font-features-turkish.html font-features-noliga.html

# The following should pass even if feature support isn't available,
# because both testcase and reference will have the default rendering,
# though they're not really meaningful unless the tests above passed already.

# compare feature specified within @font-face to same feature in style rule
HTTP(..) == font-features-hlig-2.html font-features-hlig.html
HTTP(..) == font-features-hlig-4.html font-features-hlig.html
HTTP(..) != font-features-hlig-5.html font-features-hlig.html
HTTP(..) == font-features-ligatures-none.html font-features-noliga.html

# check that feature in style rule overrides @font-face
skip-if(B2G||Mulet) HTTP(..) == font-features-hlig-3.html font-features-noliga.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop

# compare font-language-override rendering to lang-tagged rendering
skip-if(B2G||Mulet) HTTP(..) == font-features-turkish-override-1.html font-features-turkish.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
HTTP(..) == font-features-turkish-override-2.html font-features-turkish.html

# check use of font-language-override to override explicit lang tag
HTTP(..) == font-features-turkish-override-3.html font-features-ref.html
HTTP(..) == font-features-turkish-override-4.html font-features-ref.html
skip-if(B2G||Mulet) HTTP(..) == font-features-turkish-override-5.html font-features-turkish.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop

# check that last value wins if a feature is repeated
HTTP(..) == font-features-order-1.html font-features-ref.html
HTTP(..) == font-features-order-2.html font-features-noliga.html

# check priority of feature settings vs. font-variant subproperty
HTTP(..) == font-features-order-3.html font-features-noliga.html
HTTP(..) == font-features-order-4.html font-features-noliga.html
HTTP(..) == font-features-order-5.html font-features-hlig.html

# check priority involving feature settings and font-variant-alternates
HTTP(..) == alternates-order.html alternates-order-ref.html

# check that font-specific values line up with @font-face feature settings
HTTP(..) == annotations.html annotations-ref.html

# font-variant subproperties
# test for specific features being on and others off, based on prop values
# (debug problems with font-variant-debug.html which displays all props)
skip-if(Mulet) HTTP(..) == font-variant-alternates.html font-variant-alternates-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
skip-if(Mulet) HTTP(..) == font-variant-caps.html font-variant-caps-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
skip-if(Mulet) HTTP(..) == font-variant-east-asian.html font-variant-east-asian-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
skip-if(Mulet) HTTP(..) == font-variant-ligatures.html font-variant-ligatures-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
skip-if(Mulet) HTTP(..) == font-variant-numeric.html font-variant-numeric-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
skip-if(Mulet) HTTP(..) == font-variant-position.html font-variant-position-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables

# font-kerning
HTTP(..) != font-kerning-normal.html font-kerning-none.html
HTTP(..) != font-kerning-auto.html font-kerning-none.html
HTTP(..) == font-kerning-auto.html font-kerning-normal.html
HTTP(..) == font-kerning-normal.html font-kerning-kern.html
HTTP(..) == font-kerning-none.html font-kerning-nokern.html
HTTP(..) == font-kerning-1.html font-kerning-none.html
HTTP(..) == font-kerning-2.html font-kerning-normal.html
HTTP(..) == font-kerning-3.html font-kerning-none.html
HTTP(..) != font-kerning-table-none.html font-kerning-table-normal.html

# sanity check for kerning - with no spaces, kerning should occur
HTTP(..) == kerning-sanity-check-kern.html kerning-sanity-check-default.html
HTTP(..) != kerning-sanity-check-nokern.html kerning-sanity-check-default.html

# OpenType features should work across inter-word spaces
HTTP(..) == font-features-across-space-1.html font-features-across-space-1-ref.html
HTTP(..) == spacelookups.html spacelookups-ref.html
# tests whether word cache is in use by testing for ignored space kerns
HTTP(..) == spacelookups-wordcache.html spacelookups-wordcache-ref.html
# requires Japanese font with feature support, WinXP lacks one
random-if(!winWidget&&!cocoaWidget) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) == fwid-spaces.html fwid-spaces-ref.html
# Arial/Times New Roman on Win7+/OSX 10.6+ have kerning pairs that include spaces
random-if(!winWidget&&!cocoaWidget) fails-if(winWidget||cocoaWidget) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) != kerning-spaces-arial-nokern.html kerning-spaces-arial-default.html
random-if(!winWidget&&!cocoaWidget) fails-if(winWidget||cocoaWidget) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) == kerning-spaces-arial-kern.html kerning-spaces-arial-default.html
random-if(!winWidget&&!cocoaWidget) fails-if(winWidget||cocoaWidget) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) != kerning-spaces-tnr-nokern.html kerning-spaces-tnr-default.html
random-if(!winWidget&&!cocoaWidget) fails-if(winWidget||cocoaWidget) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) == kerning-spaces-tnr-kern.html kerning-spaces-tnr-default.html

# font-variant-caps fallback
# -- sanity check - none of these should look like the default rendering
HTTP(..) != caps-fallback-smallcaps1.html caps-fallback-default.html
HTTP(..) != caps-fallback-smallcaps2.html caps-fallback-default.html
HTTP(..) != caps-fallback-petitecaps.html caps-fallback-default.html
HTTP(..) != caps-fallback-allsmallcaps.html caps-fallback-default.html
HTTP(..) != caps-fallback-allpetitecaps.html caps-fallback-default.html
# -- normal or fallback rendering
HTTP(..) == caps-fallback-smallcaps1.html caps-fallback-smcp.html
HTTP(..) == caps-fallback-smallcaps2.html caps-fallback-smcp.html
HTTP(..) == caps-fallback-petitecaps.html caps-fallback-smcp.html
HTTP(..) == caps-fallback-allsmallcaps.html caps-fallback-smcpc2sc.html
HTTP(..) == caps-fallback-allpetitecaps.html caps-fallback-smcpc2sc.html

# font-variant-position fallback
random-if(cocoaWidget||Android) HTTP(..) == subsuper-fallback.html subsuper-fallback-ref.html # bug 1139269
HTTP(..) != subsuper-fallback.html subsuper-fallback-notref1.html
HTTP(..) != subsuper-fallback.html subsuper-fallback-notref2.html
HTTP(..) != subsuper-fallback.html subsuper-fallback-notref3.html
HTTP(..) != subsuper-fallback-omega.html subsuper-fallback-omega-notref.html
HTTP(..) == subsuper-nofallback.html subsuper-nofallback-ref1.html
random-if(cocoaWidget) HTTP(..) == subsuper-nofallback.html subsuper-nofallback-ref2.html # bug 1139269
HTTP(..) != subsuper-nofallback.html subsuper-nofallback-notref.html
HTTP(..) == subsuper-fallback-size.html subsuper-fallback-size-ref.html
