////////////////////////////////////////////////////////////////////////////////
//
//  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.TestSuiteExtended;
	import UnitTest.ExtendedClasses.VellumTestCase;
	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;

    public class ScrollToRangeTest extends VellumTestCase
	{
		private var testCanvas:Canvas;
		private var testCaseXML:XML;
		
		public function ScrollToRangeTest(methodName:String, testID:String, testConfig:TestConfig, testCaseXML:XML=null)
		{
			super(methodName, testID, testConfig, testCaseXML);
			//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;
		}
		
		public static function suiteFromXML(testListXML:XML, testConfig:TestConfig, ts:TestSuiteExtended):void
		{
			var testCaseClass:Class = ScrollToRangeTest;
			VellumTestCase.suiteFromXML(testCaseClass, testListXML, testConfig, ts);
		}
		
		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");
			}
		}
		
		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 ],
				
			];
		
		public function multiLineTest():TextRange
		{
			// get id and run the right test
			for each (var testData:Array in multiLineTestData)
			{
				if (testData[0] == TestData.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;
		}
		
		public function singleLineTest():TextRange
		{
		
			var r:TextRange;
			
			// get id and run the right test
			for each (var testData:Array in singleLineTestData)
			{
				if (testData[0] == TestData.id)
				{
					return scrollSingleLine(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;
		}
		
		// Check that we don't force composition to end of range
		public function aliceTest():void
		{
			var r:TextRange = multiLineTest();
			assertTrue("Scroll to range shouldn't force composition to end of range", r.textFlow.flowComposer.damageAbsoluteStart < r.textFlow.textLength - 100);
		}
		
		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");
			var distanceFromLeftEdge:Number = bbox.left - controller.horizontalScrollPosition;
		}
		
		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);
		}
		
	}
}
	
// 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
//		


