////////////////////////////////////////////////////////////////////////////////
//
//  Licensed to the Apache Software Foundation (ASF) under one or more
//  contributor license agreements.  See the NOTICE file distributed with
//  this work for additional information regarding copyright ownership.
//  The ASF licenses this file to You under the Apache License, Version 2.0
//  (the "License"); you may not use this file except in compliance with
//  the License.  You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//
// This file contains content from Alice in Wonderland, by Lewis Carroll,
// now in the public domain.
//
////////////////////////////////////////////////////////////////////////////////

package UnitTest.Tests
{
	import UnitTest.ExtendedClasses.TestConfigurationLoader;
	import UnitTest.ExtendedClasses.VellumTestCase;
	import UnitTest.Fixtures.TestCaseVo;
	import UnitTest.Fixtures.TestConfig;

	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.geom.Rectangle;
	import flash.text.engine.TextLine;

	import flashx.textLayout.compose.TextFlowLine;
	import flashx.textLayout.container.ContainerController;
	import flashx.textLayout.conversion.TextConverter;
	import flashx.textLayout.edit.*;
	import flashx.textLayout.elements.*;
	import flashx.textLayout.formats.BlockProgression;
	import flashx.textLayout.formats.Direction;
	import flashx.textLayout.formats.LineBreak;
	import flashx.textLayout.formats.TextLayoutFormat;
	import flashx.textLayout.utils.GeometryUtil;

	import mx.containers.Canvas;

	import org.flexunit.asserts.assertTrue;
	import org.flexunit.asserts.fail;

	[TestCase(order=43)]
	[RunWith("org.flexunit.runners.Parameterized")]
    public class ScrollToRangeTest extends VellumTestCase
	{
		[DataPoints(loader=multiLineTestLoader)]
		[ArrayElementType("UnitTest.Fixtures.TestCaseVo")]
		public static var multiLineTestDp:Array;

		public static var multiLineTestLoader:TestConfigurationLoader = new TestConfigurationLoader("../../test/testCases/ScrollToRangeTest.xml", "multiLineTest");

		[DataPoints(loader=singleLineTestLoader)]
		[ArrayElementType("UnitTest.Fixtures.TestCaseVo")]
		public static var singleLineTestDp:Array;

		public static var singleLineTestLoader:TestConfigurationLoader = new TestConfigurationLoader("../../test/testCases/ScrollToRangeTest.xml", "singleLineTest");

		private var testCanvas:Canvas;
		private var testCaseXML:XML;

		public function ScrollToRangeTest()
		{
			super("", "ScrollToRangeTest", TestConfig.getInstance());
			metaData = {};
			//reset containerType and ID
			containerType = "custom";
		/*	TestID = containerType + ":" + writingDirection + ":";
			if (TestData.id)
			{
				TestID = TestID + TestData.id
			}
			else
			{
				TestID = TestID + methodName;
			} */
			
			// Note: These must correspond to a Watson product area (case-sensitive)
			metaData.productArea = "Text Container";
			this.testCaseXML = testCaseXML;
		}

		[Before]
		override public function setUpTest() : void
		{
			cleanUpTestApp();
			TestDisplayObject = testApp.getDisplayObject();
			if (TestDisplayObject)
			{
				testCanvas = Canvas(TestDisplayObject);
			}
			else
			{
				fail("Did not get a blank canvas to work with");
			}
		}

		[After]
		override public function tearDownTest():void
		{
			super.tearDownTest();
		}

		private function addChild(s:Sprite):void
		{
			testCanvas.rawChildren.addChild(s);
		}
		
		private static var englishText:String = '<p>Lorem ipsum dolor sit amet, consectetur <span styleName="scrollToThis">visible word</span>elit.</p>';
		private static var arabicText:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis">التطبيقات</span> المعتمدة حاليا:</p>';
		private static var arabicAndEnglishText:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis">visible word</span> المعتمدة حاليا:</p>';
		private static var arabicAndEnglishInScrollText1:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis"> English العربية</span> المعتمدة حاليا:</p>';
		private static var arabicAndEnglishInScrollText2:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis"> العربية English</span> المعتمدة حاليا:</p>';
		private static var japaneseText:String = '<p>ApacheのFlex SDKには、人気のAdobeのFlex SDK<span styleName="scrollToThis">の進</span>化である。</p>';
		private static var japaneseTCYText:String = '<p>ApacheのFlex SDKには、人気のAdobeのFlex SDK<tcy><span styleName="scrollToThis">の進</span><tcy>化である。</p>';
		
		private static var englishTextLong:String = '<p>Lorem ipsum dolor sit amet, consectetur  <span styleName="scrollToThis">visible word</span>elit ipsum dolor sit amet, consectetur.</p>';
		private static var englishArabicSpanTextLong:String = '<p>Lorem ipsum dolor sit amet, consectetur <span styleName="scrollToThis">الحرية</span>elit ipsum dolor sit amet, consectetur.</p>';
		private static var englishArabicAndEnglishSpanTextLong:String = '<p>Lorem ipsum dolor sit amet, consectetur <span styleName="scrollToThis">الحرية eng</span>elit ipsum dolor sit amet, consectetur.</p>';
		private static var englishEnglishAndArabicSpanTextLong:String = '<p>Lorem ipsum dolor sit amet, consectetur <span styleName="scrollToThis">eng الحرية</span>elit ipsum dolor sit amet, consectetur.</p>';
		private static var englishArabicAndEnglishSpanNoSpaceTextLong:String = '<p>Lorem ipsum dolor sit amet, consectetur <span styleName="scrollToThis">الحريةeng</span>elit ipsum dolor sit amet, consectetur.</p>';
		private static var englishEnglishAndArabicSpanNoSpaceTextLong:String = '<p>Lorem ipsum dolor sit amet, consectetur <span styleName="scrollToThis">engالحرية</span>elit ipsum dolor sit amet, consectetur.</p>';
		private static var arabicTextLong:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis">التطبيقات</span> المعتمدة حاليا:</p>';
		private static var arabicAndEnglishTextLong:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis">visible word</span> المعتمدة حاليا:</p>';
		private static var arabicAndEnglishInScrollText1Long:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis"> English العربية</span> المعتمدة حاليا:</p>';
		private static var arabicAndEnglishInScrollText2Long:String = '<p>وأدوبي فليكس SDK هو تطور SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار تطوير التطبيقات لبناء فلاش بسهولة التطبيقات المستندة للهواتف النقالة، ومتصفحات الويب، ومنصات سطح المكتب. وتشمل الأنظمة <span styleName="scrollToThis"> العربية English</span> المعتمدة حاليا:</p>';
		private static var japaneseTextLong:String = '<p>ApacheのFlex SDKには、人気のAdobeのFlex SDKの進化である。アパッチ Flex SDKには、簡単にフラッシュを構築するためのアプリケーション開発フレームワークである <span styleName="scrollToThis">モバイルデバイス</span>、Webブラウザ、およびデスクトップ·プラットフォームのためのベースのアプリケーション。 現在サポートされているプラットフォームは、次のとおりです。</:p>';
		private static var japaneseTCYTextLong:String = '<p>ApacheのFlex SDKには、人気のAdobeのFlex SDKの進化である。アパッチ Flex SDKには、簡単にフラッシュを構築するためのアプリケーション開発フレームワークである <tcy><span styleName="scrollToThis">モバイルデバイス</span></tcy>、Webブラウザ、およびデスクトップ·プラットフォームのためのベースのアプリケーション。 現在サポートされているプラットフォームは、次のとおりです。</:p>';
		
		// The following tests all test scrolling to a range that is on a single line. The basic philosphy is to read in a TextFow markup which has text in red, 
		// with styleName "scrollToThis", find the range, and call scrollToThis to force the red text to be in view. We pass an initial scroll position, and
		// note whether scrolling to the "scrollToThis" range should have changed the scroll position, or not (if the text was already in view, then there
		// should have been no scroll). If a scroll was done, then the red text should appear on one of the edges of the container (left, right, top, or bottom). 
		// We check to make sure it aligns, and that all the text is visible.
		static private var singleLineTestData:Array = 
		[
			// English - scroll forward to the right, red text should appear on right
			[ "singleLineEnglishForward", englishText, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			// Arabic - scroll forward to the left, red text should appear on left
			[ "singleLineArabicForward", arabicText, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic text with English range - scroll forward to the left, red text should appear on left
			[ "singleLineArabicAndEnglishForward", arabicAndEnglishText, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic text with English & Arabic range - scroll forward to the left, red text should appear on left
			[ "singleLineArabicAndEnglishInScrollForward", arabicAndEnglishInScrollText1, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic text with Arabic & English range - scroll forward to the left, red text should appear on left
			[ "singleLineArabicAndEnglishInScrollForward", arabicAndEnglishInScrollText2, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Japanese text, vertical - scroll forwardd (down), red text should appear on bottom
			[ "singleLineJapaneseForward", japaneseText, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottom ],
			// Japanese text, vertical, tcy range - scroll forward (down), red text should appear on bottom
			[ "singleLineJapaneseTCYForward", japaneseTCYText, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottom ],


			// English - scroll backward to the left, red text should appear in container
			[ "singleLineEnglishBackward", englishText, BlockProgression.TB, Direction.LTR, 16000, 0, false /* should already have been visible & no scroll */, checkHorizontalInView ],
			// Arabic - scroll backward to the right, red text should appear in container
			[ "singleLineArabicBackward", arabicText, BlockProgression.TB, Direction.RTL, -16000, 0, false /* should already have been visible & no scroll */, checkHorizontalInView ],
			// Arabic text with English range - scroll backward to the right, red text should appear in container
			[ "singleLineArabicAndEnglishBackward", arabicAndEnglishText, BlockProgression.TB, Direction.RTL, -16000, 0, false /* should already have been visible & no scroll */, checkHorizontalInView ],
			// Arabic text with English & Arabic range - scroll backward to the right, red text should appear in container
			[ "singleLineArabicAndEnglishInScrollBackward", arabicAndEnglishInScrollText1, BlockProgression.TB, Direction.RTL, -16000, 0, false /* should already have been visible & no scroll */, checkHorizontalInView ],
			// Arabic text with Arabic & English range  - scroll backward to the right, red text should appear in container
			[ "singleLineEnglishAndArabicInScrollBackward", arabicAndEnglishInScrollText2, BlockProgression.TB, Direction.RTL, -16000, 0, false /* should already have been visible & no scroll */, checkHorizontalInView ],
			// Japanese text, vertical  - scroll backward to the right, red text should appear in container
			[ "singleLineJapaneseBackward", japaneseText, BlockProgression.RL, Direction.LTR, 0, 16000, false /* should already have been visible & no scroll */, checkHorizontalInView ],
			// Japanese text, vertical  - scroll backward to the right, red text should appear in container
			[ "singleLineTCYJapaneseBackward", japaneseTCYText, BlockProgression.RL, Direction.LTR, 0, 16000, false /* should already have been visible & no scroll */, checkTop ],

			// English - scroll forward to the right, red text should appear on right
			[ "singleLineEnglishForwardLong", englishTextLong, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			// Arabic - scroll forward to the left, red text should appear on left
			[ "singleLineArabicForwardLong", arabicTextLong, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic text with English range - scroll forward to the left, red text should appear on left
			[ "singleLineArabicAndEnglishForwardLong", arabicAndEnglishTextLong, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic text with English & Arabic range - scroll forward to the left, red text should appear on left
			[ "singleLineArabicAndEnglishInScrollForwardLong", arabicAndEnglishInScrollText1Long, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic text with Arabic & English range - scroll forward to the left, red text should appear on left
			[ "singleLineArabicAndEnglishInScrollForwardLong", arabicAndEnglishInScrollText2Long, BlockProgression.TB, Direction.RTL, 0, 0, true /* expect it to need to scroll */, checkLeft ],
			// Japanese text, vertical - scroll forwardd (down), red text should appear on bottom
			[ "singleLineJapaneseForwardLong", japaneseTextLong, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottom ],
			// Japanese text, vertical, tcy range - scroll forward (down), red text should appear on bottom
			[ "singleLineJapaneseTCYForwardLong", japaneseTCYTextLong, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottom ],
			
			// English with Arabic span - scroll back to the right, red text should appear on right
			[ "englishArabicSpanForwardLong", englishArabicSpanTextLong, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			// English with Arabic & English span - scroll forward to the right, red text should appear on right
			[ "englishArabicAndEnglishSpanForwardLong", englishArabicAndEnglishSpanTextLong, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			// English with English & Arabic span - scroll forward to the right, red text should appear on right
			[ "englishEnglishAndArabicSpanForwardLong", englishEnglishAndArabicSpanTextLong, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			// English with English & Arabic span, no space dividing Arabic from English - scroll forward to the right, red text should appear on right
			[ "englishEnglishAndArabicSpanNoSpaceForwardLong", englishEnglishAndArabicSpanNoSpaceTextLong, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			// English with Arabic & English span, no space dividing Arabic from English - scroll forward to the right, red text should appear on right
			[ "englishArabicAndEnglishSpanNoSpaceForwardLong", englishArabicAndEnglishSpanNoSpaceTextLong, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkRight ],
			
			// English - scroll backward to the left, red text should appear on the left edge
			[ "singleLineEnglishBackwardLong", englishTextLong, BlockProgression.TB, Direction.LTR, 16000, 0, true /* expect it to need to scroll */, checkLeft ],
			// English with Arabic span - scroll backward to the left, red text should appear on left
			[ "englishArabicSpanBackwardLong", englishArabicSpanTextLong, BlockProgression.TB, Direction.LTR, 16000, 0, true /* expect it to need to scroll */, checkLeft ],
			// English with Arabic & English span - scroll backward to the left, red text should appear on left
			[ "englishArabicAndEnglishSpanBackwardLong", englishArabicAndEnglishSpanTextLong, BlockProgression.TB, Direction.LTR, 16000, 0, true /* expect it to need to scroll */, checkLeft ],
			// English with English & Arabic span - scroll backward to the left, red text should appear on left
			[ "englishEnglishAndArabicSpanBackwardLong", englishEnglishAndArabicSpanTextLong, BlockProgression.TB, Direction.LTR, 16000, 0, true /* expect it to need to scroll */, checkLeft ],
			// English with English & Arabic span, no space dividing Arabic from English - scroll backward to the left, red text should appear on left
			[ "englishEnglishAndArabicSpanNoSpaceBackwardLong", englishEnglishAndArabicSpanNoSpaceTextLong, BlockProgression.TB, Direction.LTR, 16000, 0, true /* expect it to need to scroll */, checkLeft ],
			// English with Arabic & English span, no space dividing Arabic from English - scroll backward to the left, red text should appear on left
			[ "englishArabicAndEnglishSpanNoSpaceBackwardLong", englishArabicAndEnglishSpanNoSpaceTextLong, BlockProgression.TB, Direction.LTR, 16000, 0, true /* expect it to need to scroll */, checkLeft ],
			// Arabic - scroll backward to the right, red text should appear on right
			[ "singleLineArabicBackwardLong", arabicTextLong, BlockProgression.TB, Direction.RTL, -16000, 0, true /* expect it to need to scroll */, checkRight ],
			// Arabic text with English range - scroll backward to the right, red text should appear on right
			[ "singleLineArabicAndEnglishBackwardLong", arabicAndEnglishTextLong, BlockProgression.TB, Direction.RTL, -16000, 0, true /* expect it to need to scroll */, checkRight ],
			// Arabic text with English & Arabic range - scroll backward to the right, red text should appear on right
			[ "singleLineArabicAndEnglishInScrollBackwardLong", arabicAndEnglishInScrollText1Long, BlockProgression.TB, Direction.RTL, -16000, 0, true /* expect it to need to scroll */, checkRight ],
			// Arabic text with Arabic & English range  - scroll backward to the right, red text should appear on right
			[ "singleLineEnglishAndArabicInScrollBackwardLong", arabicAndEnglishInScrollText2Long, BlockProgression.TB, Direction.RTL, -16000, 0, true /* expect it to need to scroll */, checkRight ],
			// Japanese text, vertical  - scroll backward to the right, red text should appear on top
			[ "singleLineJapaneseBackwardLong", japaneseTextLong, BlockProgression.RL, Direction.LTR, 0, 16000, true /* expect it to need to scroll */, checkTop ],
			// Japanese text, vertical  - scroll backward to the right, red text should appear on top
			[ "singleLineTCYJapaneseBackwardLong", japaneseTCYTextLong, BlockProgression.RL, Direction.LTR, 0, 16000, true /* expect it to need to scroll */, checkTop ]
		];
		
		private static var aliceExcerptText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008" styleName="scrollToThis" textAlign="start" fontFamily="Minion Pro" fontSize="16">I. Down the Rabbit-Hole<p textAlign="center" fontSize="24">Chapter I</p>
<p textAlign="center" fontSize="24">Down the Rabbit-Hole</p>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversation?”</p>
<p>So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.</p>
<p>There was nothing so <span fontStyle="italic">very</span> remarkable in that; nor did Alice think it so <span fontStyle="italic">very</span> much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually <span fontStyle="italic">took a watch out of its waistcoat-pocket</span> , and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.</p>
<p>In another moment down went Alice after it, never once considering how in the world she was to get out again.</p>
<p>The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</p>
<p>Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and bookshelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled “Orange Marmalade”, but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.</p>
<p>“Well!” thought Alice to herself, “after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!” (Which was very likely true.)</p>
<p>Down, down, down. Would the fall <span fontStyle="italic">never</span> come to an end! “I wonder how many miles I've fallen by this time?” she said aloud. “I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—” (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a <span fontStyle="italic">very</span> good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) “—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?” (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)</p>
<p>Presently she began again. “I wonder if I shall fall right <span fontStyle="italic">through</span> the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think—” (she was rather glad there Was no one listening, this time, as it didn't sound at all the right word) “—but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?” (and she tried to curtsey as she spoke—fancy <span fontStyle="italic">curtseying</span> as you're falling through the air! Do you think you could manage it?) “And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.”</p>
<p>Down, down, down. There was nothing else to do, so Alice soon began talking again. “Dinah'll miss me very much to-night, I should think!” (Dinah was the cat.) “I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?” And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, “Do cats eat bats? Do cats eat bats?” and sometimes, “Do bats eat cats?” for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, “Now, Dinah, tell me the truth: did you ever eat a bat?” when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over.</p>
<p>Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, “Oh my ears and whiskers, how late it's getting!” She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof.</p>
<p>There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again.</p>
<p>Suddenly she came upon a little three-legged table, all made of solid glass; there was nothing on it except a tiny golden key, and Alice's first thought was that it might belong to one of the doors of the hall; but, alas! either the locks were too large, or the key was too small, but at any rate it would not open any of them. However, on the second time round, she came upon a low curtain she had not noticed before, and behind it was a little door about fifteen inches high: she tried the little golden key in the lock, and to her great delight it fitted!</p>
<p>Alice opened the door and found that it led into a small passage, not much larger than a rat-hole: she knelt down and looked along the passage into the loveliest garden you ever saw. How she longed to get out of that dark hall, and wander about among those beds of bright flowers and those cool fountains, but she could not even get her head though the doorway; “and even if my head <span fontStyle="italic">would</span> go through,” thought poor Alice, “it would be of very little use without my shoulders. Oh, how I wish I could shut up like a telescope! I think I could, if I only know how to begin.” For, you see, so many out-of-the-way things had happened lately, that Alice had begun to think that very few things indeed were really impossible.</p>
<p>There seemed to be no use in waiting by the little door, so she went back to the table, half hoping she might find another key on it, or at any rate a book of rules for shutting people up like telescopes: this time she found a little bottle on it, (“which certainly was not here before,” said Alice,) and round the neck of the bottle was a paper label, with the words “DRINK ME” beautifully printed on it in large letters.</p>
<p>It was all very well to say “Drink me,” but the wise little Alice was not going to do <span fontStyle="italic">that</span> in a hurry. “No, I'll look first,” she said, “and see whether it's marked <span fontStyle="italic">‘poison’</span> or not”; for she had read several nice little histories about children who had got burnt, and eaten up by wild beasts and other unpleasant things, all because they <span fontStyle="italic">would</span> not remember the simple rules their friends had taught them: such as, that a red-hot poker will burn you if you hold it too long; and that if you cut your finger <span fontStyle="italic">very</span> deeply with a knife, it usually bleeds; and she had never forgotten that, if you drink much from a bottle marked “poison,” it is almost certain to disagree with you, sooner or later.</p>
<p>However, this bottle was <span fontStyle="italic">not</span> marked “poison”, so Alice ventured to taste it, and finding it very nice, (it had, in fact, a sort of mixed flavour of cherry-tart, custard, pine-apple, roast turkey, toffee, and hot buttered toast,) she very soon finished it off.</p>
<p>“What a curious feeling!” said Alice; “I must be shutting up like a telescope.”</p>
<p>And so it was indeed: she was now only ten inches high, and her face brightened up at the thought that she was now the right size for going through the little door into that lovely garden. First, however, she waited for a few minutes to see if she was going to shrink any further: she felt a little nervous about this; “for it might end, you know,” said Alice to herself, “in my going out altogether, like a candle. I wonder what I should be like then?” And she tried to fancy what the flame of a candle is like after the candle is blown out, for she could not remember ever having seen such a thing.</p>
<p>After a while, finding that nothing more happened, she decided on going into the garden at once; but, alas for poor Alice! when she got to the door, she found she had forgotten the little golden key, and when she went back to the table for it, she found she could not possibly reach it: she could see it quite plainly through the glass, and she tried her best to climb up one of the legs of the table, but it was too slippery; and when she had tired herself out with trying, the poor little thing sat down and cried.</p>
<p>“Come, there's no use in crying like that!” said Alice to herself, rather sharply; “I advise you to leave off this minute!” She generally gave herself very good advice, (though she very seldom followed it), and sometimes she scolded herself so severely as to bring tears into her eyes; and once she remembered trying to box her own ears for having cheated herself in a game of croquet she was playing against herself, for this curious child was very fond of pretending to be two people. “But it's no use now,” thought poor Alice, “to pretend to be two people! Why, there's hardly enough of me left to make <span fontStyle="italic">one</span> respectable person!”</p>
<p>Soon her eye fell on a little glass box that was lying under the table: she opened it, and found in it a very small cake, on which the words “EAT ME” were beautifully marked in currants. “Well, I'll eat it,” said Alice, “and if it makes me grow larger, I can reach the key; and if it makes me grow smaller, I can creep under the door; so either way I'll get into the garden, and I don't care which happens!”</p>
<p>She ate a little bit, and said anxiously to herself, “Which way? Which way?”, holding her hand on the top of her head to feel which way it was growing, and she was quite surprised to find that she remained the same size: to be sure, this generally happens when one eats cake, but Alice had got so much into the way of expecting nothing but out-of-the-way things to happen, that it seemed quite dull and stupid for life to go on in the common way.</p>
<p>So she set to work, and very soon finished off the cake.</p>II. The Pool of Tears<p textAlign="center" fontSize="24">Chapter II</p>
<p textAlign="center" fontSize="24">The Pool of Tears</p>
<p>“Curiouser and curiouser!” cried Alice (she was so much surprised, that for the moment she quite forgot how to speak good English); “now I'm opening out like the largest telescope that ever was! Good-bye, feet!” (for when she looked down at her feet, they seemed to be almost out of sight, they were getting so far off). “Oh, my poor little feet, I wonder who will put on your shoes and stockings for you now, dears? I'm sure <span fontStyle="italic">I</span> shan't be able! I shall be a great deal too far off to trouble myself about you: you must manage the best way you can; —but I must be kind to them,” thought Alice, “or perhaps they won't walk the way I want to go! Let me see: I'll give them a new pair of boots every Christmas.”</p>
<p>And she went on planning to herself how she would manage it. “They must go by the carrier,” she thought; “and how funny it'll seem, sending presents to one's own feet! And how odd the directions will look!</p>
<p>Oh dear, what nonsense I'm talking!”</p>
<p>Just then her head struck against the roof of the hall: in fact she was now more than nine feet high, and she at once took up the little golden key and hurried off to the garden door.</p>
<p>Poor Alice! It was as much as she could do, lying down on one side, to look through into the garden with one eye; but to get through was more hopeless than ever: she sat down and began to cry again.</p>
<p>“You ought to be ashamed of yourself,” said Alice, “a great girl like you,” (she might well say this), “to go on crying in this way! Stop this moment, I tell you!” But she went on all the same, shedding gallons of tears, until there was a large pool all round her, about four inches deep and reaching half down the hall.</p>
<p>After a time she heard a little pattering of feet in the distance, and she hastily dried her eyes to see what was coming. It was the White Rabbit returning, splendidly dressed, with a pair of white kid gloves in one hand and a large fan in the other: he came trotting along in a great hurry, muttering to himself as he came, “Oh! the Duchess, the Duchess! Oh! won't she be savage if I've kept her waiting!” Alice felt so desperate that she was ready to ask help of any one; so, when the Rabbit came near her, she began, in a low, timid voice, “If you please, sir—” The Rabbit started violently, dropped the white kid gloves and the fan, and skurried away into the darkness as hard as he could go.</p>
<p>Alice took up the fan and gloves, and, as the hall was very hot, she kept fanning herself all the time she went on talking: “Dear, dear! How queer everything is to-day! And yesterday things went on just as usual. I wonder if I've been changed in the night? Let me think: was I the same when I got up this morning? I almost think I can remember feeling a little different. But if I'm not the same, the next question is, Who in the world am I? Ah, That's the great puzzle!” And she began thinking over all the children she knew that were of the same age as herself, to see if she could have been changed for any of them.</p>
<p>“I'm sure I'm not Ada,” she said, “for her hair goes in such long ringlets, and mine doesn't go in ringlets at all; and I'm sure I can't be Mabel, for I know all sorts of things, and she, oh! she knows such a very little! Besides, SHE'S she, and I'm I, and—oh dear, how puzzling it all is! I'll try if I know all the things I used to know. Let me see: four times five is twelve, and four times six is thirteen, and four times seven is—oh dear! I shall never get to twenty at that rate! However, the Multiplication Table doesn't signify: let's try Geography. London is the capital of Paris, and Paris is the capital of Rome, and Rome—no, That's all wrong, I'm certain! I must have been changed for Mabel! I'll try and say ‘How doth the little—’” and she crossed her hands on her lap as if she were saying lessons, and began to repeat it, but her voice sounded hoarse and strange, and the words did not come the same as they used to do:—</p>
<p>“I'm sure those are not the right words,” said poor Alice, and her eyes filled with tears again as she went on, “I must be Mabel after all, and I shall have to go and live in that poky little house, and have next to no toys to play with, and oh! ever so many lessons to learn! No, I've made up my mind about it; if I'm Mabel, I'll stay down here! It'll be no use their putting their heads down and saying ‘Come up again, dear!’ I shall only look up and say ‘Who am I then? Tell me that first, and then, if I like being that person, I'll come up: if not, I'll stay down here till I'm somebody else’—but, oh dear!” cried Alice, with a sudden burst of tears, “I do wish they <span fontStyle="italic">would</span> put their heads down! I am so Very tired of being all alone here!”</p>
<p>As she said this she looked down at her hands, and was surprised to see that she had put on one of the Rabbit's little white kid gloves while she was talking. “How Can I have done that?” she thought. “I must be growing small again.” She got up and went to the table to measure herself by it, and found that, as nearly as she could guess, she was now about two feet high, and was going on shrinking rapidly: she soon found out that the cause of this was the fan she was holding, and she dropped it hastily, just in time to avoid shrinking away altogether.</p>
<p>“That Was a narrow escape!” said Alice, a good deal frightened at the sudden change, but very glad to find herself still in existence; “and now for the garden!” and she ran with all speed back to the little door: but, alas! the little door was shut again, and the little golden key was lying on the glass table as before, “and things are worse than ever,” thought the poor child, “for I never was so small as this before, never! And I declare it's too bad, that it is!”</p>
<p>As she said these words her foot slipped, and in another moment, splash! she was up to her chin in salt water. Her first idea was that she had somehow fallen into the sea, “and in that case I can go back by railway,” she said to herself. (Alice had been to the seaside once in her life, and had come to the general conclusion, that wherever you go to on the English coast you find a number of bathing machines in the sea, some children digging in the sand with wooden spades, then a row of lodging houses, and behind them a railway station.) However, she soon made out that she was in the pool of tears which she had wept when she was nine feet high.</p>
<p>“I wish I hadn't cried so much!” said Alice, as she swam about, trying to find her way out. “I shall be punished for it now, I suppose, by being drowned in my own tears! That Will be a queer thing, to be sure! However, everything is queer to-day.”</p>
<p>Just then she heard something splashing about in the pool a little way off, and she swam nearer to make out what it was: at first she thought it must be a walrus or hippopotamus, but then she remembered how small she was now, and she soon made out that it was only a mouse that had slipped in like herself.</p>
<p>“Would it be of any use, now,” thought Alice, “to speak to this mouse? Everything is so out-of-the-way down here, that I should think very likely it can talk: at any rate, there's no harm in trying.” So she began: “O Mouse, do you know the way out of this pool? I am very tired of swimming about here, O Mouse!” (Alice thought this must be the right way of speaking to a mouse: she had never done such a thing before, but she remembered having seen in her brother's Latin Grammar, “A mouse—of a mouse—to a mouse—a mouse—O mouse!” The Mouse looked at her rather inquisitively, and seemed to her to wink with one of its little eyes, but it said nothing.</p>
<p>“Perhaps it doesn't understand English,” thought Alice; “I daresay it's a French mouse, come over with William the Conqueror.” (For, with all her knowledge of history, Alice had no very clear notion how long ago anything had happened.) So she began again: “Où est ma chatte?” which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. “Oh, I beg your pardon!” cried Alice hastily, afraid that she had hurt the poor animal's feelings. “I quite forgot you didn't like cats.”</p>
<p>“Not like cats!” cried the Mouse, in a shrill, passionate voice. “Would You like cats if you were me?”</p>
<p>“Well, perhaps not,” said Alice in a soothing tone: “don't be angry about it. And yet I wish I could show you our cat Dinah: I think you'd take a fancy to cats if you could only see her. She is such a dear quiet thing,” Alice went on, half to herself, as she swam lazily about in the pool, “and she sits purring so nicely by the fire, licking her paws and washing her face—and she is such a nice soft thing to nurse—and she's such a capital one for catching mice—oh, I beg your pardon!” cried Alice again, for this time the Mouse was bristling all over, and she felt certain it must be really offended. “We won't talk about her any more if you'd rather not.”</p>
<p>“We indeed!” cried the Mouse, who was trembling down to the end of his tail. “As if I would talk on such a subject! Our family always Hated cats: nasty, low, vulgar things! Don't let me hear the name again!”</p>
<p>“I won't indeed!” said Alice, in a great hurry to change the subject of conversation. “Are you—are you fond—of—of dogs?” The Mouse did not answer, so Alice went on eagerly: “There is such a nice little dog near our house I should like to show you! A little bright-eyed terrier, you know, with oh, such long curly brown hair! And it'll fetch things when you throw them, and it'll sit up and beg for its dinner, and all sorts of things—I can't remember half of them—and it belongs to a farmer, you know, and he says it's so useful, it's worth a hundred pounds! He says it kills all the rats and—oh dear!” cried Alice in a sorrowful tone, “I'm afraid I've offended it again!” For the Mouse was swimming away from her as hard as it could go, and making quite a commotion in the pool as it went.</p>
<p>So she called softly after it, “Mouse dear! Do come back again, and we won't talk about cats or dogs either, if you don't like them!” When the Mouse heard this, it turned round and swam slowly back to her: its face was quite pale (with passion, Alice thought), and it said in a low trembling voice, “Let us get to the shore, and then I'll tell you my history, and you'll understand why it is I hate cats and dogs.”</p>
<p>It was high time to go, for the pool was getting quite crowded with the birds and animals that had fallen into it: there were a Duck and a Dodo, a Lory and an Eaglet, and several other curious creatures. Alice led the way, and the whole party swam to the shore.</p>
</TextFlow>;
private static var aliceScrollToParagraphText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008" textAlign="start" fontFamily="Minion Pro" fontSize="16">I. Down the Rabbit-Hole<p textAlign="center" fontSize="24">Chapter I</p>
	<p textAlign="center" fontSize="24">Down the Rabbit-Hole</p>
	<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversation?”</p>
	<p>So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.</p>
	<p>There was nothing so <span fontStyle="italic">very</span> remarkable in that; nor did Alice think it so <span fontStyle="italic">very</span> much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually <span fontStyle="italic">took a watch out of its waistcoat-pocket</span> , and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.</p>
	<p>In another moment down went Alice after it, never once considering how in the world she was to get out again.</p>
	<p styleName="scrollToThis">The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</p>
	<p>Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and bookshelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled “Orange Marmalade”, but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.</p>
	<p>“Well!” thought Alice to herself, “after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!” (Which was very likely true.)</p>
	<p>Down, down, down. Would the fall <span fontStyle="italic">never</span> come to an end! “I wonder how many miles I've fallen by this time?” she said aloud. “I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—” (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a <span fontStyle="italic">very</span> good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) “—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?” (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)</p>
	</TextFlow>;
private static var aliceScrollToSpanText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008" textAlign="start" fontFamily="Minion Pro" fontSize="16">I. Down the Rabbit-Hole<p textAlign="center" fontSize="24">Chapter I</p>
	<p textAlign="center" fontSize="24">Down the Rabbit-Hole</p>
	<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversation?”</p>
	<p>So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.</p>
	<p>There was nothing so very remarkable in that; nor did Alice think it so <span fontStyle="italic">very</span> much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually <span fontStyle="italic">took a watch out of its waistcoat-pocket</span> , and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.</p>
	<p>In another moment down went Alice after it, never once considering how in the world she was to get out again.</p>
	<p>The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</p>
	<p>Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look <span styleName="scrollToThis">down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and bookshelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; </span>it was labelled “Orange Marmalade”, but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.</p>
	<p>“Well!” thought Alice to herself, “after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!” (Which was very likely true.)</p>
	<p>Down, down, down. Would the fall <span fontStyle="italic">never</span> come to an end! “I wonder how many miles I've fallen by this time?” she said aloud. “I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—” (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a <span fontStyle="italic">very</span> good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) “—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?” (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)</p>
	<p>Presently she began again. “I wonder if I shall fall right <span fontStyle="italic">through</span> the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think—” (she was rather glad there Was no one listening, this time, as it didn't sound at all the right word) “—but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?” (and she tried to curtsey as she spoke—fancy <span fontStyle="italic">curtseying</span> as you're falling through the air! Do you think you could manage it?) “And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.”</p>
	<p>Down, down, down. There was nothing else to do, so Alice soon began talking again. “Dinah'll miss me very much to-night, I should think!” (Dinah was the cat.) “I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?” And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, “Do cats eat bats? Do cats eat bats?” and sometimes, “Do bats eat cats?” for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, “Now, Dinah, tell me the truth: did you ever eat a bat?” when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over.</p>
	<p>Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, “Oh my ears and whiskers, how late it's getting!” She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof.</p>
	<p>There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again.</p>
	</TextFlow>;
// FIXME needs to be replaced
private static var japaneseParagraphText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008">
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p styleName="scrollToThis">文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	</TextFlow>;
// FIXME needs to be replaced
private static var japaneseSpanText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008">
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、<span styleName="scrollToThis">このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コ</span>ードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	</TextFlow>;
	//this listElement is similar to aliceScrollToParagraphText
private static var aliceScrollToListElementText:XML =  <TextFlow xmlns="http://ns.adobe.com/textLayout/2008" textAlign="start" fontFamily="Minion Pro" fontSize="16">
	<list listStylePosition="inside" listStyleType="upperRoman"><li>Down the Rabbit-Hole</li></list>
	<p textAlign="center" fontSize="24">Chapter I</p>
	<p textAlign="center" fontSize="24">Down the Rabbit-Hole</p>
	<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversation?”</p>
	<p>So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.</p>
	<p>There was nothing so very remarkable in that; nor did Alice think it so <span fontStyle="italic">very</span> much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually <span fontStyle="italic">took a watch out of its waistcoat-pocket</span> , and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.</p>
	<p>In another moment down went Alice after it, never once considering how in the world she was to get out again.</p>
	<p>The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</p>
	<p>Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look </p>
	
	<list styleName="scrollToThis" paddingRight="24" paddingLeft="24" listStyleType="decimal"><li>down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and bookshelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; </li></list>
	
	<p>it was labelled “Orange Marmalade”, but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.</p>
	<p>“Well!” thought Alice to herself, “after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!” (Which was very likely true.)</p>
	<p>Down, down, down. Would the fall <span fontStyle="italic">never</span> come to an end! “I wonder how many miles I've fallen by this time?” she said aloud. “I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—” (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a <span fontStyle="italic">very</span> good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) “—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?” (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)</p>
	<p>Presently she began again. “I wonder if I shall fall right <span fontStyle="italic">through</span> the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think—” (she was rather glad there Was no one listening, this time, as it didn't sound at all the right word) “—but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?” (and she tried to curtsey as she spoke—fancy <span fontStyle="italic">curtseying</span> as you're falling through the air! Do you think you could manage it?) “And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.”</p>
	<p>Down, down, down. There was nothing else to do, so Alice soon began talking again. “Dinah'll miss me very much to-night, I should think!” (Dinah was the cat.) “I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?” And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, “Do cats eat bats? Do cats eat bats?” and sometimes, “Do bats eat cats?” for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, “Now, Dinah, tell me the truth: did you ever eat a bat?” when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over.</p>
	<p>Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, “Oh my ears and whiskers, how late it's getting!” She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof.</p>
	<p>There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again.</p>
	</TextFlow>;
	//this listItemElement is similar to aliceScrollToSpanText
private static var aliceScrollToListItemElementText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008" textAlign="start" fontFamily="Minion Pro" fontSize="16">
	<list listStylePosition="inside" listStyleType="upperRoman"><li>Down the Rabbit-Hole</li></list>
	<p textAlign="center" fontSize="24">Chapter I</p>
	<p textAlign="center" fontSize="24">Down the Rabbit-Hole</p>
	<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversation?”</p>
	<p>So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.</p>
	<p>There was nothing so very remarkable in that; nor did Alice think it so <span fontStyle="italic">very</span> much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually <span fontStyle="italic">took a watch out of its waistcoat-pocket</span> , and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.</p>
	<p>In another moment down went Alice after it, never once considering how in the world she was to get out again.</p>
	<p>The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</p>
	
	<list paddingRight="24" paddingLeft="24" listStyleType="decimal"><li styleName="scrollToThis">Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and bookshelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed;it was labelled “Orange Marmalade”, but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it. </li></list>
	
	<p>“Well!” thought Alice to herself, “after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!” (Which was very likely true.)</p>
	<p>Down, down, down. Would the fall <span fontStyle="italic">never</span> come to an end! “I wonder how many miles I've fallen by this time?” she said aloud. “I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—” (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a <span fontStyle="italic">very</span> good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) “—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?” (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)</p>
	<p>Presently she began again. “I wonder if I shall fall right <span fontStyle="italic">through</span> the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think—” (she was rather glad there Was no one listening, this time, as it didn't sound at all the right word) “—but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?” (and she tried to curtsey as she spoke—fancy <span fontStyle="italic">curtseying</span> as you're falling through the air! Do you think you could manage it?) “And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.”</p>
	<p>Down, down, down. There was nothing else to do, so Alice soon began talking again. “Dinah'll miss me very much to-night, I should think!” (Dinah was the cat.) “I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?” And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, “Do cats eat bats? Do cats eat bats?” and sometimes, “Do bats eat cats?” for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, “Now, Dinah, tell me the truth: did you ever eat a bat?” when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over.</p>
	<p>Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, “Oh my ears and whiskers, how late it's getting!” She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof.</p>
	<p>There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again.</p>
	</TextFlow>;
	//this listElement is similar to japaneseParagraphText
	// FIXME needs to be replaced
private static var japaneseListElementText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008">
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	
	<list paddingTop="24" listStyleType="decimal" styleName="scrollToThis"><li>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</li></list>
	
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	</TextFlow>;
	//this listItemElement is similar to japaneseSpanText
	// FIXME needs to be replaced
private static var japaneseListItemElementText:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008">
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	
	<list paddingTop="24" listStyleType="decimal"><li styleName="scrollToThis">文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</li></list>
	
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	<p>文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。文字コードが割り当てられていないグリフの大半は既に文字コードが割り当てられているグリフの異体字です。次のセクションでは、このようなグリフにアクセスする方法について解説します。</p>
	</TextFlow>;

		// The following tests all test scrolling to a range that is on multiple lines. The basic philosphy is to read in a TextFow markup which has text in red, 
		// with styleName "scrollToThis", find the range, and call scrollToThis to force the red text to be in view. We pass an initial scroll position, and
		// note whether scrolling to the "scrollToThis" range should have changed the scroll position, or not (if the text was already in view, then there
		// should have been no scroll). If a scroll was done, then the red text should appear on one of the edges of the container (left, right, top, or bottom). 
		// We check to make sure it aligns, and that all the text is visible.
		static private var multiLineTestData:Array = 
			[
				// Scroll to entire text
				[ "aliceTest", aliceExcerptText, BlockProgression.TB, Direction.LTR, 0, 0, false /* expect it to need to scroll */, checkBottomOrBelow ],
				[ "englishParagraphForwardTest", aliceScrollToParagraphText, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottomOrBelow ],
				[ "englishMultiLineSpanForwardTest", aliceScrollToSpanText, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottomOrBelow ],
				[ "englishParagraphBackwardTest", aliceScrollToParagraphText, BlockProgression.TB, Direction.LTR, 0, 16000, true /* expect it to need to scroll */, checkTop ],
				[ "englishMultiLineSpanBackwardTest", aliceScrollToSpanText, BlockProgression.TB, Direction.LTR, 0, 16000, true /* expect it to need to scroll */, checkTop ],
				[ "japaneseParagraphForwardTest", japaneseParagraphText, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkLeft ],
				[ "japaneseParagraphBackwardTest", japaneseParagraphText, BlockProgression.RL, Direction.LTR, -16000, 0, true /* expect it to need to scroll */, checkRight ],
				[ "japaneseSpanForwardTest", japaneseSpanText, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkLeft ],
				[ "japaneseSpanBackwardTest", japaneseSpanText, BlockProgression.RL, Direction.LTR, -16000, 0, true /* expect it to need to scroll */, checkRight ],
				[ "englishMultiLineListElementForwardTest", aliceScrollToListElementText, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottomOrBelow ],
				[ "englishMultiLineListElementBackwardTest", aliceScrollToListElementText, BlockProgression.TB, Direction.LTR, 0, 16000, true /* expect it to need to scroll */, checkTop ],
				[ "englishMultiLineListItemElementForwardTest", aliceScrollToListItemElementText, BlockProgression.TB, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkBottomOrBelow ],
				[ "englishMultiLineListItemElementBackwardTest", aliceScrollToListItemElementText, BlockProgression.TB, Direction.LTR, 0, 16000, true /* expect it to need to scroll */, checkTop ],
				[ "japaneseListElementForwardTest", japaneseListElementText, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkLeft ],
				[ "japaneseListElementBackwardTest", japaneseListElementText, BlockProgression.RL, Direction.LTR, -16000, 0, true /* expect it to need to scroll */, checkRight ],
				[ "japaneseListItemElementForwardTest", japaneseListItemElementText, BlockProgression.RL, Direction.LTR, 0, 0, true /* expect it to need to scroll */, checkLeft ],
				[ "japaneseListItemElementBackwardTest", japaneseListItemElementText, BlockProgression.RL, Direction.LTR, -16000, 0, true /* expect it to need to scroll */, checkRight ]
				
			];

		[Test(dataProvider=multiLineTestDp)]
		public function singleLineTest(testCaseVo:TestCaseVo):void
		{
			// get id and run the right test
			for each (var testData:Array in singleLineTestData)
			{
				if (testData[0] == testCaseVo.id)
				{
					scrollSingleLine(testData[1], testData[2], testData[3], testData[4], testData[5], testData[6], testData[7]);
				}
			}
		}

		/**
		 * Check that we don't force composition to end of range
		 */
		[Test(dataProvider=multiLineTestDp)]
		[Ignore]
		public function aliceTest(testCaseVo:TestCaseVo):void
		{
			var r:TextRange = multiLineTest(testCaseVo);
			assertTrue("Scroll to range shouldn't force composition to end of range", r.textFlow.flowComposer.damageAbsoluteStart < r.textFlow.textLength - 100);
		}

		[Test]
		public function aboveAndBelow():void
		{
			var markup:String = '<TextFlow fontSize ="60" whiteSpaceCollapse="preserve" version="2.0.0" xmlns="http://ns.adobe.com/textLayout/2008"><p><span>one two three four</span></p><p><span>five six</span></p><p><span>seven eight</span></p><p><span>nine ten </span></p><p><span>eleven twelve</span></p><p><span>thirteen fourteen</span></p><p><span>fifteen sixteen</span></p><p><span>seventeen eighteen</span></p><p><span>nineteen twenty</span></p><p><span>twenty-one twenty-two</span></p><p><span>twenty-three twenty-four twenty-five twenty-six twenty-seven</span></p></TextFlow>';
			
			// Test scroll to range when the range extends both above and below the visible area
			var textFlow:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT);
			VellumTestCase.testApp.contentChange (textFlow);
			VellumTestCase.testApp.changeContainerSetup("arrangeSideBySide", 0, 2);
			var secondController:ContainerController = textFlow.flowComposer.getControllerAt(1);
			secondController.verticalScrollPosition = 50;		// scroll to arbitrary location, not at 0.
			var oldScrollPos:Number = secondController.verticalScrollPosition;
			secondController.scrollToRange(0, textFlow.textLength - 1);
			assertTrue("Should be no scroll when range is above *and* below", oldScrollPos == secondController.verticalScrollPosition);
			VellumTestCase.testApp.changeContainerSetup("arrangeSideBySide", 0, 1);
		}
			
		private function scrollMultiLine(text:XML, blockProgression:String, direction:String, initialHorizontalScroll:Number, initialVerticalScroll:Number, expectScroll:Boolean, checkWhere:Function):TextRange
		{
			var width:Number = 300;
			var height:Number = 400;
			
			if (blockProgression == BlockProgression.RL)// swap width & height
			{
				var tmp:Number = width;
				width = height;
				height = tmp;
			}
			var r:TextRange = setUpForTest(text, LineBreak.TO_FIT, blockProgression, direction, initialHorizontalScroll, initialVerticalScroll, width, height);	
			var controller:ContainerController = r.textFlow.flowComposer.getControllerAt(0);
			var oldScrollPosition:Number = controller.verticalScrollPosition;
			controller.scrollToRange(r.absoluteStart, r.absoluteEnd);
			if (!expectScroll)
				assertTrue("Expected no scrolling", oldScrollPosition == controller.verticalScrollPosition);
			checkWhere(r);
			return r;
		}
		
		private function scrollSingleLine(text:String, blockProgression:String, direction:String, initialHorizontalScroll:Number, initialVerticalScroll:Number, expectScroll:Boolean, checkWhere:Function):TextRange
		{
			var width:Number = 186;
			var height:Number = 149;
			
			if (blockProgression == BlockProgression.RL)// swap width & height
			{
				var tmp:Number = width;
				width = height;
				height = tmp;
			}
			var r:TextRange = setUpForTest(text, LineBreak.EXPLICIT, blockProgression, direction, initialHorizontalScroll, initialVerticalScroll, width, height);	
			var controller:ContainerController = r.textFlow.flowComposer.getControllerAt(0);
			var oldScrollPosition:Number = controller.horizontalScrollPosition;
			controller.scrollToRange(r.absoluteStart, r.absoluteEnd);
			if (!expectScroll)
				assertTrue("Expected no scrolling", oldScrollPosition == controller.horizontalScrollPosition);
			checkWhere(r);
			return r;
		}
		
		static private function getBBox(r:TextRange, controller:ContainerController):Rectangle
		{
			var container:Sprite = controller.container;
			
			r.absoluteEnd = Math.min(r.absoluteEnd, r.textFlow.flowComposer.damageAbsoluteStart - 1);
			
			// if we can't get the bounding box it might not be visible		
			var result:Array = GeometryUtil.getHighlightBounds(r);
			assertTrue("Expecting at least one line in range", result.length > 0);
			if (result.length > 0)
				assertTrue("Expected to see red text - is it not visible?", result[0].rect != null);
			
			// collect the bounding box in global coords
			var bbox:Rectangle = null;
			for (var i:int = 0; i < result.length; ++i)
			{
				var textLine:TextLine = result[i].textLine;
				if (!textLine.parent)
				{
					var textFlowLine:TextFlowLine = textLine.userData as TextFlowLine;
					textLine = textFlowLine.getTextLine();
				}
				if (textLine.parent)
				{
					var tmpBox:Rectangle = result[i].rect.clone();
					tmpBox.topLeft = textLine.localToGlobal(tmpBox.topLeft);
					tmpBox.bottomRight = textLine.localToGlobal(tmpBox.bottomRight);
					bbox = bbox ? bbox.union(tmpBox) : tmpBox;
				}
			}
			if (bbox)	// translate to container coords
			{
				bbox.topLeft = container.globalToLocal(bbox.topLeft);
				bbox.bottomRight = container.globalToLocal(bbox.bottomRight);
			}
			return bbox;
		}
		
		// Expecting range to appear in the container
		static private function checkHorizontalInView(r:TextRange):void
		{
			var controller:ContainerController = r.textFlow.flowComposer.getControllerAt(0);
			var bbox:Rectangle = getBBox(r, controller);
			
			// bounding box should be within 10% of the container right edge
			assertTrue(bbox.left > controller.horizontalScrollPosition - 2 &&
				bbox.right < (controller.compositionWidth - controller.horizontalScrollPosition) + 2, "Expected bounding box to be in view");
		}
		
		static private function getController(r:TextRange):ContainerController
		{
			var controllerIndex:int = r.textFlow.flowComposer.findControllerIndexAtPosition(r.absoluteStart);
			if (controllerIndex >= 0)
				return r.textFlow.flowComposer.getControllerAt(controllerIndex);
			return null;
		}

		static private function checkOnScreen(bbox:Rectangle, controller:ContainerController):void
		{
			var screenBBox:Rectangle;
			var screenLeft:Number = controller.horizontalScrollPosition;
			
			if (controller.rootElement.blockProgression == BlockProgression.RL)
				screenLeft -= controller.compositionWidth;
			
			screenBBox = new Rectangle(screenLeft, controller.verticalScrollPosition, controller.compositionWidth, controller.compositionHeight);
			assertTrue("Range should appear somewhere on screen", bbox.intersects(screenBBox));
		}
		
		// Expecting range to appear on the left edge, assert if not
		static private function checkLeft(r:TextRange):void
		{
			var controller:ContainerController = getController(r);
			var bbox:Rectangle = getBBox(r, controller);
			checkOnScreen(bbox, controller);
			
			// bounding box should be within 10% of the container right edge
			var distanceFromLeftEdge:Number;
			if (r.textFlow.blockProgression == BlockProgression.RL)
				distanceFromLeftEdge = bbox.left - (controller.horizontalScrollPosition - controller.compositionWidth);
			else   // don't check logical horizontal position
				distanceFromLeftEdge = 0; //bbox.left - controller.horizontalScrollPosition;
			assertTrue("Expected to see red text on left edge of container", Math.abs(distanceFromLeftEdge) < 10);
		}
		
		// Expecting range to appear on the right edge, assert if not
		static private function checkRight(r:TextRange):void
		{
			var controller:ContainerController = getController(r);
			var bbox:Rectangle = getBBox(r, controller);
			checkOnScreen(bbox, controller);
			
			// bounding box should be within 10% of the container right edge
			var distanceFromRightEdge:Number;
			if (r.textFlow.blockProgression == BlockProgression.RL)
				distanceFromRightEdge = bbox.right - controller.horizontalScrollPosition;
			else   //don't check logical horizontal position
				distanceFromRightEdge = 0; // bbox.right - controller.compositionWidth - controller.horizontalScrollPosition;
			assertTrue("Expected to see red text on right edge of container", Math.abs(distanceFromRightEdge) < 10);
		}
		
		// Expecting range to appear on the top edge, assert if not
		static private function checkTop(r:TextRange):void
		{
			var controller:ContainerController = getController(r);
			var bbox:Rectangle = getBBox(r, controller);
			checkOnScreen(bbox, controller);
			
			// bounding box should be within 10% of the container right edge
			var distanceFromTopEdge:Number = bbox.top - controller.verticalScrollPosition;
			assertTrue("Expected to see red text on top edge of container", Math.abs(distanceFromTopEdge) < 10);
		}

		// Expecting range to appear on the top edge, assert if not
		static private function checkTopOrAbove(r:TextRange):void
		{
			var controller:ContainerController = getController(r);
			var bbox:Rectangle = getBBox(r, controller);
			checkOnScreen(bbox, controller);
			
			// bounding box should straddle the top edge
			var containerTop:Number = controller.verticalScrollPosition;
			assertTrue("Expected to see red text on top edge of container", bbox.top < containerTop && bbox.bottom >= containerTop);
		}
		
		// Expecting range to appear intersecting the bottom edge, assert if not
		static private function checkBottomOrBelow(r:TextRange):void
		{
			var controller:ContainerController = getController(r);
			var bbox:Rectangle = getBBox(r, controller);
			checkOnScreen(bbox, controller);
			
			// bounding box should straddle the bottom edge
			var containerBottom:Number = controller.compositionHeight + controller.verticalScrollPosition;
			assertTrue("Expected to see red text on bottom edge of container", bbox.top < containerBottom+1 && bbox.bottom >= containerBottom-1);
		}
		
		// Expecting range to appear on the bottom edge, assert if not
		static private function checkBottom(r:TextRange):void
		{
			var controller:ContainerController = getController(r);
			var bbox:Rectangle = getBBox(r, controller);
			checkOnScreen(bbox, controller);
			
			// bounding box should be within 10% of the container right edge
			
			var distanceFromBottomEdge:Number = bbox.bottom - (controller.verticalScrollPosition + controller.compositionHeight);
			assertTrue("Expected to see red text on bottom edge of container", Math.abs(distanceFromBottomEdge) < 10);
		}
		
		private function setUpForTest(content:Object, lineBreak:String, blockProgression:String, direction:String, 
									  initialHorizontalScrollPosition:int, initialVerticalScrollPosition:int,
									  width:Number, height:Number):TextRange
		{
			var bg:Sprite = new Sprite();
			bg.x = 100;
			bg.y = 100;
			var container:Sprite = new Sprite();
			addChild(container);
			var g:Graphics = bg.graphics;
			g.beginFill(0x777777);
			g.drawRect(0, 0, width, height);
			g.endFill();
			
			if (content is String)
				content = '<TextFlow xmlns="http://ns.adobe.com/textLayout/2008">' + content + '</TextFlow>';
			
			var textFlow:TextFlow = TextConverter.importToFlow(content, TextConverter.TEXT_LAYOUT_FORMAT);
			var controller:ContainerController = new ContainerController(container, width, height);
			textFlow.flowComposer.addController(controller);
			
			var format:TextLayoutFormat = new TextLayoutFormat(TextLayoutFormat.defaultFormat);
			format.fontFamily = "Arial";
			format.blockProgression = blockProgression;
			format.direction = direction;
			format.fontSize = 12;
			format.lineBreak = lineBreak;
			format.styleName = textFlow.styleName;
			textFlow.format = format;
			textFlow.interactionManager = new EditManager();
			
			// Find the scroll to this span, mark it in red to make it easy to see
			var scrollToElement:FlowElement = findScrollToElement(textFlow);
			assertTrue("Test missing scrollToThis span", scrollToElement != null);
			var scrollStart:int = scrollToElement.getAbsoluteStart();
			setFormatOfRange(textFlow, scrollStart, scrollStart + scrollToElement.textLength);
			
			textFlow.interactionManager.selectRange(0, 0);
			controller.horizontalScrollPosition = initialHorizontalScrollPosition;
			controller.verticalScrollPosition = initialVerticalScrollPosition;
			textFlow.flowComposer.updateAllControllers();
			return new TextRange(textFlow, scrollStart, scrollStart + scrollToElement.textLength);
		}
		
		static private function findScrollToElement(element:FlowElement):FlowElement
		{
			if (element.styleName == "scrollToThis")
				return element;
			var scrollToElement:FlowElement = null;
			if (element is FlowGroupElement)
			{
				var group:FlowGroupElement = FlowGroupElement(element);
				for (var i:int = group.numChildren - 1; i >= 0 && !scrollToElement; --i)
					scrollToElement = findScrollToElement(group.getChildAt(i));
			}
			return scrollToElement;
		}
				
		static private function setFormatOfRange(textFlow:TextFlow, anchorPosition:int,
										 activePosition:int):void
		{
			var characterFormat:TextLayoutFormat;
			
			characterFormat =  new TextLayoutFormat();
			characterFormat["color"] = "0xFF0000";
			
			var selectionState:SelectionState =
				new SelectionState(textFlow, anchorPosition, activePosition);
			
			(textFlow.interactionManager as EditManager).applyFormat(characterFormat, null, null, selectionState);
		}

		private function multiLineTest(testCaseVo:TestCaseVo):TextRange
		{
			// get id and run the right test
			for each (var testData:Array in multiLineTestData)
			{
				if (testData[0] == testCaseVo.id)
				{
					return scrollMultiLine(testData[1], testData[2], testData[3], testData[4], testData[5], testData[6], testData[7]);
				}
			}
			assertTrue("XML test case didn't match XML test data", false);
			return null;
		}

	}
}
	
// Test the ability to scroll ahead in logical order, to the right
// Cases:
//	- scroll * ^ # tb-ltr
// 	- scroll * ^ # tb-rtl (arabic text)
//	- scroll * ^ # rl-ltr (J text)
//	- scroll * ^ # rl-ltr (J text with tcy)
//	- scroll * ^ # rl-ltr (J text selection in tcy)
//	- scroll * ^ # rl-ltr (J text selection in two different tcy's)
//	- scroll * ^ # tb-ltr
// 	- scroll * ^ # tb-rtl (arabic text)
//
// * = ahead or back in logical order
// ^ = 	select in same line; 
//		selection in different lines, same column, same container;
//		selection in different lines, different column, same container
//		selection in different lines, different column, different containers, all visible (have containers & attached to stage)
//		selection in different lines, different column, different containers, some visible
//		selection in different lines, different column, different containers, none visible
// # 	lineBreak = toFit or explicit
//
//	test when its already there: assert that it didn't scroll
// 	test when it had to scroll that part of selection is now visible
//
// Test:
// 		iterate lines in range
//			at least one should have:
//				parent = container
//				bbox intersects container
//		if one line in range
//			get bbox of span
//			bbox intersects container
//		


