<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');
            unicode-range: U+004F-0051;
        }

        @font-face {
            font-family: 'test5';
            src: local('Times');
        }
        @font-face {
            font-family: 'test5';
            src: url('resources/Ahem.ttf');
            unicode-range: U+0050-0058;
        }
        @font-face {
            font-family: 'test5';
            src: local('Courier');
            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.layoutTestController)
                layoutTestController.notifyDone();
        }

        document.body.offsetTop;

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