<head>
    <style>
        div { border: 1px solid; padding: 0 8px; margin: 8px 0; }
        span.ahem { font-family: 'Ahem'; }
        span.courier { font-family: 'Courier'; }

        @font-face {
            font-family: 'test1';
            src: local('Times');
        }
        @font-face {
            font-family: 'test1';
            src: url('../../resources/Ahem.ttf');
            unicode-range: U+0041;
        }

        @font-face {
            font-family: 'test2';
            src: local('Times');
        }
        @font-face {
            font-family: 'test2';
            src: url('../../resources/Ahem.ttf');
            unicode-range: U+004?;
        }

        @font-face {
            font-family: 'test3';
            src: local('Times');
        }
        @font-face {
            font-family: 'test3';
            src: url('../../resources/Ahem.ttf');
            unicode-range: U+0042-0044;
        }

        @font-face {
            font-family: 'test4';
            src: local('Times');
        }
        @font-face {
            font-family: 'test4';
            src: url('../../resources/Ahem.ttf');
            unicode-range: U+0050-0058;
        }
        @font-face {
            font-family: 'test4';
            src: local('Courier'), local('Courier New');
            unicode-range: U+004F-0051;
        }

        @font-face {
            font-family: 'test5';
            src: local('Times'), local('Times New Roman');
        }
        @font-face {
            font-family: 'test5';
            src: url('../../resources/Ahem.ttf');
            unicode-range: U+0050-0058;
        }
        @font-face {
            font-family: 'test5';
            src: local('Courier'), local('Courier New');
            unicode-range: U+0052-0055;
        }
    </style>
</head>
<body onload="finished()">
    <p>
        Each box should contain two identical lines
    </p>

    <div>
        <p style="font-family: 'test1';">
            ABCDEFGHIJKLMNOPQRSTUVWXYZ
        </p>
        <p>
            <span class="ahem">A</span>BCDEFGHIJKLMNOPQRSTUVWXYZ
        </p>
    </div>

    <div>
        <p style="font-family: 'test2';">
            ABCDEFGHIJKLMNOPQRSTUVWXYZ
        </p>
        <p>
            <span class="ahem">ABCDEFGHIJKLMNO</span>PQRSTUVWXYZ
        </p>
    </div>

    <div>
        <p style="font-family: 'test3';">
            ABCDEFGHIJKLMNOPQRSTUVWXYZ
        </p>
        <p>
            A<span class="ahem">BCD</span>EFGHIJKLMNOPQRSTUVWXYZ
        </p>
    </div>

    <div>
        <p style="font-family: 'test4';">
            ABCDEFGHIJKLMNOPQRSTUVWXYZ
        </p>
        <p>
            ABCDEFGHIJKLMN<span class="courier">OPQ</span><span class="ahem">RSTUVWX</span>YZ
        </p>
    </div>

    <div>
        <p style="font-family: 'test5';">
            ABCDEFGHIJKLMNOPQRSTUVWXYZ
        </p>
        <p>
            ABCDEFGHIJKLMNO<span class="ahem">PQ<span class="courier">RSTU</span>VWX</span>YZ
        </p>
    </div>
    <script>
        function finished()
        {
            if (window.testRunner)
                testRunner.notifyDone();
        }

        document.body.offsetTop;

        if (window.testRunner)
            testRunner.waitUntilDone();
    </script>
</body>
