Revision: 201011 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 01 Apr 2010 00:28:03 +0300
branchRCL_3
changeset 4 7ff7c6e94fea
parent 3 5390220f13c1
child 5 9a2be90ac9a2
Revision: 201011 Kit: 201013
fontservices/fontstore/src/linkedfonts.cpp
fontservices/fontstore/tfs/T_Cache.CPP
fontservices/fontstore/tfs/T_Cache.H
fontservices/fontstore/tfs/T_LinkedFonts2.cpp
fontservices/fontstore/tfs/scripts/fntstoretest_T_Cache.script
localisation/localesupport/coltab/COLTAB.RTF
textrendering/textformatting/inc/InlineText_Internal.h
textrendering/textformatting/tbox/LAYEMU.CPP
--- a/fontservices/fontstore/src/linkedfonts.cpp	Fri Mar 12 15:51:09 2010 +0200
+++ b/fontservices/fontstore/src/linkedfonts.cpp	Thu Apr 01 00:28:03 2010 +0300
@@ -148,13 +148,6 @@
 	if (GroupById(aElementSpec.GroupId()) == NULL)
 		User::Leave(KErrArgument);
 	
-	TInt canIndex = CanonicalIndex();
-	if (aElementSpec.Canonical())
-		{
-		if (canIndex!=KErrNotFound)
-			User::Leave(KErrArgument);
-		}
-	
 	err = iBody->iTypefaces.Insert(&aElementSpec, aPos);
 
 	User::LeaveIfError(err);
--- a/fontservices/fontstore/tfs/T_Cache.CPP	Fri Mar 12 15:51:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-#include "T_IsolatedFontStore.h"
-#include "openfontsprivate.h"
-#include <f32file.h>
-#include <e32test.h>
-#include <fntstore.h>
-#include <f32file.h>
-#include <s32file.h>
-#include <fbs.h>
-#include <graphics/openfontconstants.h>
-#include <graphics/openfontrasterizer.h>
-#include "T_Cache.H"
-
-LOCAL_C TInt Ptr2Offset(const TAny* aAny, TUint8* aHeapBase)
-    {
-    if (aAny && aHeapBase)
-        {
-        return (TInt)aAny - (TInt)aHeapBase;
-        }
-    return 0;
-    }
-
-//LOCAL_C TAny* Offset2Ptr(const TInt aOffset, TUint8* aHeapBase)
-//    {
-//    if (aOffset && aHeapBase)
-//        {
-//        return (TAny*)(aOffset + (TInt)aHeapBase);
-//        }
-//    return NULL;
-//    }
-
-CTCache::CTCache(CTestStep* aStep):
-    CTGraphicsBase(aStep)
-    {
-    INFO_PRINTF1(_L("FontStore T_Cache test\n"));
-    iHeap=UserHeap::ChunkHeap(NULL,0x1000000,0x1000000);
-    }
-
-CTCache::~CTCache()
-    {
-    iHeap->Close();
-    }
-
-//below code is for unit test and coverage only
-
-void CTCache::TFontCache()
-    {
-#ifdef _DEBUG 
-    TFontTableGlyphOutlineCacheMemMonitor mon;
-    CFontTableCache* fontCache = new CFontTableCache(iHeap,mon);
-
-    //user array
-    TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
-    TCacheUserInfo* user2 = new TCacheUserInfo(222,1);    
-    RPointerArray<TCacheUserInfo> userArray;
-    userArray.Append(user1);
-    userArray.Append(user2);    
-   
-    //item array
-    CFontTableCacheItem* item1;
-    TInt len = 3;
-    TAny* content = (iHeap->Alloc(3));
-    TUid iUid = TUid::Uid(123456);
-    item1 = new CFontTableCacheItem(iUid, 0x68656164, Ptr2Offset(content, iHeap->Base()), len); 
-    item1->SetUser(userArray);    
-    RPointerArray<CFontTableCacheItem> itemArray;
-    itemArray.Append(item1);
-    
-    //font cache    
-    fontCache->SetFontItem(itemArray);
-    TBool has = fontCache->HasOutstandingRefCount();
-    TEST(has);
-    has = fontCache->HasOutstandingRefCountWithUid(iUid);  
-    TEST(has);
-    TUid uid = TUid::Uid(1234);
-    fontCache->HasOutstandingRefCountWithUid(uid);  //for coverage
-    
-    TAny *outline = NULL;
-    TInt length = 3;
-    TInt id = 0;
-    TUint32 tag = 0x1234;
-    TInt err = fontCache->Find(uid, tag, outline, length, &id);
-    TEST(err != KErrNone);
-    err = fontCache->Find(iUid, tag, outline, length, &id);
-    TEST(err != KErrNone);
-    __UHEAP_FAILNEXT(1);
-    fontCache->Append(uid, tag, content, length); 
-    TEST(err != KErrNone);
-    __UHEAP_RESET;
-    
-    fontCache->CleanupCacheOnFbsSessionTermination(123);
-    TEST(err != KErrNone);
-
-    userArray.Close();
-    delete fontCache;
-    itemArray.Close();
-#endif       
-    }
-
-void CTCache::TFontCacheItem()
-    {  
-#ifdef _DEBUG 
-    TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
-    TCacheUserInfo* user2 = new TCacheUserInfo(222,1);    
-    RPointerArray<TCacheUserInfo> userArray;
-    userArray.Append(user1);
-    userArray.Append(user2);
-    
-    CFontTableCacheItem* item1;
-    TAny* content = User::Alloc(4); 
-    TUid iUid = TUid::Uid(123456);
-    item1 = new CFontTableCacheItem(iUid, 0x68656164, Ptr2Offset(content, User::Heap().Base()), 3);
-    User::Free(content);
-    __UHEAP_FAILNEXT(1);
-    TInt err = item1->IncRefCount(111);
-    TEST(err == KErrNoMemory);
-    __UHEAP_RESET;      
-    
-    TBool has = item1->HasOutstandingRefCount();
-    TEST(!has);
-    
-
-    item1->SetUser(userArray);
-    has = item1->HasOutstandingRefCount();
-    TEST(has);
-    
-    TInt id = 1;
-    err = item1->FindUser(333, &id); 
-    TEST(err != KErrNone);
-    
-    err = item1->DecRefCount(333);
-    TEST(err == KErrNotFound);
-    
-
-    userArray.Close();
-    delete item1; 
-    
-#endif    
-    }
-
-void CTCache::TGlyphCacheItem()
-    {
-#ifdef _DEBUG     
- 
-    TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
-    TCacheUserInfo* user2 = new TCacheUserInfo(222,1);
-    
-    RPointerArray<TCacheUserInfo> userArray;
-    userArray.Append(user1);
-    userArray.Append(user2);
-    
-    COutlineCacheItem* item1;
-    TInt len = 3;
-    TAny* content = User::Alloc(4); 
-    item1 = new COutlineCacheItem(Ptr2Offset(content, User::Heap().Base()), len);
-    User::Free(content);
-    __UHEAP_FAILNEXT(1);
-    TInt err = item1->DecRefCount(333);
-    err = item1->IncRefCount(111);
-    TEST(err == KErrNoMemory);
-    __UHEAP_RESET;      
-    
-
-    item1->SetUser(userArray);    
-    err = item1->IncRefCount(333);
-    TEST(err == KErrNone);
-  
-    userArray.Close();
-    delete item1;   
-#endif  
-    }
-
-void CTCache::THintedGlyphCache()
-    {
-#ifdef _DEBUG 
-    TFontTableGlyphOutlineCacheMemMonitor mon;
-    CHintedOutlineCache* hintedCache = new CHintedOutlineCache(iHeap,mon);
-    TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
-    TCacheUserInfo* user2 = new TCacheUserInfo(222,1);    
-    RPointerArray<TCacheUserInfo> userArray;
-    userArray.Append(user1);
-    userArray.Append(user2);    
-    COutlineCacheItem* item1;
-    TInt len = 4;
-    //TUint content[] = {1,2,3};
-    TAny* content = User::Alloc(4); 
-    item1 = new COutlineCacheItem(Ptr2Offset(content, User::Heap().Base()), len);
-    item1->SetUser(userArray); 
-    COpenFont* openFont = NULL;
-    THintedOutlineId hintedId(openFont, 11);
-    hintedCache->SetHintedItem(hintedId, item1);
-    RHashMap<THintedOutlineId, COutlineCacheItem*> map = hintedCache->GetHintedMap();
-    //for coverage
-    THintedOutlineId hintedId1(openFont, 12);
-    TInt err = hintedCache->IncRefCount(hintedId1, 111);
-    TEST(err != KErrNone);
-    COpenFont* openFont1 = reinterpret_cast<COpenFont*>(0x123);
-    //for coverage
-    err = hintedCache->CleanupCacheOnOpenFontRemoval(openFont1);
-    TEST(err == KErrNone);
-    //following return value alway KErrNone
-    hintedCache->CleanupCacheOnFbsSessionTermination(111);
-    hintedCache->CleanupCacheOnFbsSessionTermination(333);
-    
-    TAny* ptr;
-    TInt size = 0;
-    __UHEAP_FAILNEXT(1);
-    hintedCache->CacheHintedOutline(hintedId1, &content, len, ptr, size);  
-    __UHEAP_RESET;
-    
-    __RHEAP_FAILNEXT(iHeap, 1);
-    hintedCache->CacheHintedOutline(hintedId1, &content, len, ptr, size);
-    __RHEAP_RESET(iHeap);
-    
-
-    mon.Inc(KFontTable_GlyphOutline_CacheMaxMem);
-    err = hintedCache->CacheHintedOutline(hintedId1, &content, len, ptr, len); 
-    TEST(err == KErrNoMemory);
-    User::Free(content);
-    
-    map.Close();
-    delete item1;
-    userArray.Close();
-    delete hintedCache;    
-#endif      
-    }
-
-void CTCache::TUnHintedGlyphCache()
-    {
-#ifdef _DEBUG 
-    TFontTableGlyphOutlineCacheMemMonitor mon;
-    CUnhintedOutlineCache* unhintedCache = new CUnhintedOutlineCache(iHeap,mon);
-    TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
-    TCacheUserInfo* user2 = new TCacheUserInfo(222,1);    
-    RPointerArray<TCacheUserInfo> userArray;
-    userArray.Append(user1);
-    userArray.Append(user2);    
-    COutlineCacheItem* item1;
-    TInt len = 3;
-    TAny* content = (iHeap->Alloc(3));  
-    item1 = new COutlineCacheItem(Ptr2Offset(content, iHeap->Base()), len);
-    item1->SetUser(userArray); 
-    TUid uid = TUid::Uid(123);
-    TUnhintedOutlineId unhintedId(uid, 11, 1);
-    unhintedCache->SetUnHintedItem(unhintedId, item1);
-//    RHashMap<TUnhintedOutlineId, COutlineCacheItem*> map = unhintedCache->GetHintedMap();
-    TUnhintedOutlineId unhintedId1(uid, 12, 1);
-    TInt err = unhintedCache->IncRefCount(unhintedId1, 111);
-    TEST(err != KErrNone);
-    //for coverage
-    unhintedCache->CleanupCacheOnFbsSessionTermination(111);
-    unhintedCache->CleanupCacheOnFbsSessionTermination(333);
-    
-    TAny* ptr;
-    TInt size = 0;
-    __UHEAP_FAILNEXT(1);
-    unhintedCache->CacheUnhintedOutline(unhintedId1, &content, len, ptr, size);  
-    __UHEAP_RESET;
-    
-    __RHEAP_FAILNEXT(iHeap, 1);
-    unhintedCache->CacheUnhintedOutline(unhintedId1, &content, len, ptr, size);
-    __RHEAP_RESET(iHeap);
-    
-    
-    mon.Inc(KFontTable_GlyphOutline_CacheMaxMem);
-    err = unhintedCache->CacheUnhintedOutline(unhintedId1, &content, len, ptr, len); 
-    TEST(err == KErrNoMemory);
-    
-    userArray.Close();
-    delete unhintedCache; 
-
-#endif   
-    }
-
-void CTCache::TFontCacheForCov()
-    {
-#ifdef _DEBUG 
-    TFontTableGlyphOutlineCacheMemMonitor mon;
-    CFontTableCache* fontCache = new CFontTableCache(iHeap,mon);
-
-    TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
-    RPointerArray<TCacheUserInfo> userArray;
-    userArray.Append(user1);
-    CFontTableCacheItem* item1;
-    TInt len = 3;
-    TAny* content = (iHeap->Alloc(3));   
-    TUid iUid = TUid::Uid(123456);
-    item1 = new CFontTableCacheItem(iUid, 0x68656164, Ptr2Offset(content, iHeap->Base()), len); 
-    item1->SetUser(userArray);    
-    RPointerArray<CFontTableCacheItem> itemArray;
-    itemArray.Append(item1);
-    fontCache->SetFontItem(itemArray);
-    
-    TBool has = fontCache->HasOutstandingRefCount();
-    TEST(!has);
-    has = fontCache->HasOutstandingRefCountWithUid(iUid);  
-    TEST(!has);
-    
-    TUint length = 3;
-    TUint32 tag = 0x1234;
-    TUid uid = TUid::Uid(1234);
-    mon.Inc(KFontTable_GlyphOutline_CacheMaxMem);
-    TInt err = fontCache->Append(uid, tag, content, length); 
-    TEST(err == KErrNoMemory);
-
-    userArray.Close();
-    delete fontCache;
-    itemArray.Close();
-#endif       
-    }
-
-void CTCache::RunTestCaseL(TInt aCurTestCase)
-    {
-    ((CTCacheStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
-    switch(aCurTestCase)
-        {
-    case 1:
-        ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0001"));
-        INFO_PRINTF1(_L("FontStore T_Cache test 1: TFontCacheItem\n"));
-        TFontCacheItem();
-        break;
-        
-    case 2:
-        ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0002"));
-        INFO_PRINTF1(_L("FontStore T_Cache test 2: TFontCache\n"));
-        TFontCache();
-        TFontCacheForCov();
-        break;      
-        
-    case 3:
-        ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0003"));
-        INFO_PRINTF1(_L("FontStore T_Cache test 3: THintedGlyphCacheItem\n"));
-        TGlyphCacheItem();
-        break;  
-        
-    case 4:
-        ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0004"));
-        INFO_PRINTF1(_L("FontStore T_Cache test 4: THintedGlyphCache\n"));
-        THintedGlyphCache();
-        break;  
-
-    case 5:
-        ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0005"));
-        INFO_PRINTF1(_L("FontStore T_Cache test 5: TUnHintedGlyphCache\n"));
-        TUnHintedGlyphCache();
-        break; 
-        
-    case 6:
-        ((CTCacheStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
-        ((CTCacheStep*)iStep)->CloseTMSGraphicsStep();
-        TestComplete();             
-        break;
-        }
-    ((CTCacheStep*)iStep)->RecordTestResultL();
-    }
-
-//--------------
-__CONSTRUCT_STEP__(Cache)
-
-
-
--- a/fontservices/fontstore/tfs/T_Cache.H	Fri Mar 12 15:51:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-/**
- @file
- @test
- @internalComponent Internal Symbian test code
-*/
-
-
-#ifndef __T_CACHE_H__
-#define __T_CACHE_H__
-
-#include <fntstore.h>
-#include "TGraphicsHarness.h"
-#include <gdi.h>
-#include <fbs.h> 
-
-class CTCache : public CTGraphicsBase
-	{
-public:
-	CTCache(CTestStep* aStep);
-	 ~CTCache();
-protected:
-//from 	CTGraphicsStep
-	virtual void RunTestCaseL(TInt aCurTestCase);
-private:
-	void TFontCacheItem();
-	void TFontCache();
-	void TFontCacheForCov();
-	void TGlyphCacheItem();
-	void THintedGlyphCache();
-	void TUnHintedGlyphCache();
-	
-private:
-    RHeap*               iHeap;
-    };
-
-
-class CTCacheStep : public CTGraphicsStep
-	{
-public:
-	CTCacheStep();
-protected:	
-	//from CTGraphicsStep
-	virtual CTGraphicsBase* CreateTestL();
-	};
-
-_LIT(KTCacheStep,"TCache");
-
-#endif
--- a/fontservices/fontstore/tfs/T_LinkedFonts2.cpp	Fri Mar 12 15:51:09 2010 +0200
+++ b/fontservices/fontstore/tfs/T_LinkedFonts2.cpp	Thu Apr 01 00:28:03 2010 +0300
@@ -1172,7 +1172,7 @@
 		TEST(CompareGroups(group2,groupf));
 			
 		//Check elements match 
-		TEST(fetchSpec->TypefaceCount() == fetchSpec->TypefaceCount());
+		TEST(typefaceSpec->TypefaceCount() == fetchSpec->TypefaceCount());
 		
 		CLinkedTypefaceElementSpec* elementf = fetchSpec->Typeface(0);
 		TEST(CompareElementSpecs(elementf, element1));
--- a/fontservices/fontstore/tfs/scripts/fntstoretest_T_Cache.script	Fri Mar 12 15:51:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-//
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description: 
-//
-
-
-PRINT Run TCache Font Store test 
-//
-LOAD_SUITE TFntStoreServer
-
-RUN_TEST_STEP 100 TFntStoreServer TCache
-
--- a/localisation/localesupport/coltab/COLTAB.RTF	Fri Mar 12 15:51:09 2010 +0200
+++ b/localisation/localesupport/coltab/COLTAB.RTF	Thu Apr 01 00:28:03 2010 +0300
@@ -1,30 +1,31 @@
-{\rtf1\adeflang1025\ansi\ansicpg1252\uc2\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe2052\themelang1033\themelangfe2052\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
-{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}
-{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f39\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}
-{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}
-{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}
-{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f50\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
-{\f51\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f53\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f54\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f55\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}
-{\f56\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f57\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f58\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f60\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
-{\f61\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f63\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f64\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f65\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
-{\f66\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f67\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f68\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f172\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}
-{\f420\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f421\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f423\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f424\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}
-{\f425\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f426\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f427\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f428\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}
-{\f429\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f432\fbidi \fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
-{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
-{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}
-{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
-{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
-{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
-{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
-{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31560\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}
-{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe2052\themelang1033\themelangfe2052\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt SimSun};}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f40\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt SimSun};}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt SimSun};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f42\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f43\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f45\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f47\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f49\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f52\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f53\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
+{\f55\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f56\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f57\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f58\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
+{\f59\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f60\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f62\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f63\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
+{\f65\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f66\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f67\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f68\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
+{\f69\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f70\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f174\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f382\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}
+{\f383\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f385\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f386\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f389\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}
+{\f422\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f423\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f425\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f426\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}
+{\f427\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f428\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f429\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f430\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}
+{\f431\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f444\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
+{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
+{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31560\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
+{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
 {\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
 {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
 {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
@@ -37,24 +38,23 @@
 \sbasedon0 \snext0 \slink16 \sqformat \styrsid15022011 heading 2;}{\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
 \fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 \slink17 \sqformat \styrsid15022011 heading 3;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
 \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
-\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 
-\snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af31503\afs32 \ltrch\fcs0 \b\fs32\lang2057\langfe0\kerning32\loch\f31502\hich\af31502\dbch\af31501\langnp2057 
-\sbasedon10 \slink1 \slocked \spriority9 \styrsid15022011 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af31503\afs28 \ltrch\fcs0 \b\i\fs28\lang2057\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp2057 
-\sbasedon10 \slink2 \slocked \ssemihidden \spriority9 \styrsid15022011 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af31503\afs26 \ltrch\fcs0 \b\fs26\lang2057\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp2057 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 
+\snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af31503\afs32 \ltrch\fcs0 \b\fs32\lang2057\langfe0\kerning32\loch\f31502\hich\af31502\dbch\af31501\langnp2057\langfenp0 
+\sbasedon10 \slink1 \slocked \spriority9 \styrsid15022011 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af31503\afs28 \ltrch\fcs0 \b\i\fs28\lang2057\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp2057\langfenp0 
+\sbasedon10 \slink2 \slocked \ssemihidden \spriority9 \styrsid15022011 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af31503\afs26 \ltrch\fcs0 \b\fs26\lang2057\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp2057\langfenp0 
 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 \styrsid15022011 Heading 3 Char;}{\s18\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 
 \fs16\lang2057\langfe2052\loch\f38\hich\af38\dbch\af31505\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext18 \slink19 \ssemihidden \sunhideused \styrsid7604161 Document Map;}{\*\cs19 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 
-\f38\fs16\lang2057\langfe0\langnp2057 \sbasedon10 \slink18 \slocked \ssemihidden \styrsid7604161 Document Map Char;}{\s20\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 
-\fs20\lang2057\langfe2052\loch\f0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext20 \slink21 \ssemihidden \sunhideused \styrsid7604161 header;}{\*\cs21 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 
-\f0\fs20\lang2057\langfe0\langnp2057 \sbasedon10 \slink20 \slocked \ssemihidden \styrsid7604161 Header Char;}{\s22\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 
+\f38\fs16\lang2057\langfe0\langnp2057\langfenp0 \sbasedon10 \slink18 \slocked \ssemihidden \styrsid7604161 Document Map Char;}{\s20\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 
+\ltrch\fcs0 \fs20\lang2057\langfe2052\loch\f0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext20 \slink21 \ssemihidden \sunhideused \styrsid7604161 header;}{\*\cs21 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 
+\f0\fs20\lang2057\langfe0\langnp2057\langfenp0 \sbasedon10 \slink20 \slocked \ssemihidden \styrsid7604161 Header Char;}{\s22\ql \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 
 \fs20\lang2057\langfe2052\loch\f0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext22 \slink23 \ssemihidden \sunhideused \styrsid7604161 footer;}{\*\cs23 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 
-\f0\fs20\lang2057\langfe0\langnp2057 \sbasedon10 \slink22 \slocked \ssemihidden \styrsid7604161 Footer Char;}}{\*\listtable{\list\listtemplateid-328197846\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold
-\levelspace0\levelindent283{\leveltext\'03\'00. ;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\i0\f0\fs20\fbias0\hres0\chhres0 \fi-283\li283\lin283 }{\listname ;}\listid811824388}}{\*\listoverridetable{\listoverride\listid811824388
-\listoverridecount0\ls1}}{\*\revtbl {Unknown;}{x120li;}}{\*\rsidtbl \rsid1249922\rsid1327960\rsid2316060\rsid3302996\rsid5127372\rsid6169386\rsid7604161\rsid8209133\rsid9447428\rsid11078925\rsid14561726\rsid15022011}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1
-\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Graham Asher}{\operator x120li}{\creatim\yr2009\mo5\dy20\hr13\min44}{\revtim\yr2009\mo5\dy20\hr13\min44}{\version2}{\edmins1}{\nofpages6}{\nofwords2317}{\nofchars13053}
-{\*\company Symbian}{\nofcharsws15340}{\vern32895}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw11906\paperh16838\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect 
-\widowctrl\ftnbj\aenddoc\revisions\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\hyphcaps0\formshade\horzdoc\dghspace120
-\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3
-\jcompress\viewkind1\viewscale100\splytwnine\ftnlytwnine\htmautsp\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot7604161
+\f0\fs20\lang2057\langfe0\langnp2057\langfenp0 \sbasedon10 \slink22 \slocked \ssemihidden \styrsid7604161 Footer Char;}}{\*\listtable{\list\listtemplateid-328197846\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelold\levelspace0\levelindent283{\leveltext\'03\'00. ;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\i0\f0\fs20\fbias0\hres0\chhres0 \fi-283\li283\lin283 }{\listname ;}\listid811824388}}{\*\listoverridetable{\listoverride\listid811824388
+\listoverridecount0\ls1}}{\*\rsidtbl \rsid737317\rsid1249922\rsid1327960\rsid2316060\rsid3302996\rsid4132030\rsid5127372\rsid5192092\rsid6169386\rsid7604161\rsid8209133\rsid9447428\rsid11078925\rsid14561726\rsid15022011}{\mmathPr\mmathFont34\mbrkBin0
+\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Graham Asher}{\operator yanchli}{\creatim\yr2009\mo5\dy20\hr13\min44}{\revtim\yr2010\mo3\dy15\hr16\min54}{\version4}{\edmins20}{\nofpages7}
+{\nofwords2326}{\nofchars12989}{\*\company Symbian}{\nofcharsws15285}{\vern32895}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw11906\paperh16838\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect 
+\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\hyphcaps0\formshade\horzdoc\dghspace120\dgvspace120
+\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\splytwnine\ftnlytwnine\htmautsp\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot7604161
 \newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0{\*\wgrffmtfilter 2450}
 \nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7604161 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 
 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3302996 \chftnsep 
@@ -64,78 +64,68 @@
 \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3302996 \chftnsep 
 \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7604161 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3302996 \chftnsepc 
-\par }}\ltrpar \sectd \ltrsect\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl\sectrsid15022011\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \hich .}}
-{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta \hich )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl6
-\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl9
-\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
-\b\fs28\lang2057\langfe2052\kerning28\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Using COLTAB to make collation key tables
+\par }}\ltrpar \sectd \ltrsect\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl\sectrsid15022011\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3
+\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
+{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
+\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang2057\langfe2052\kerning28\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 
+\af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Using COLTAB to make collation key tables
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 Graham Asher, 10}{\rtlch\fcs1 \af0 \ltrch\fcs0 \super\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 th}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  November 1999
 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af1\afs24\alang1025 \ltrch\fcs0 \b\i\fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Introduction
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
-\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 EPOC32 reads collation keys from tables. These tables not only map single Unicode characters to \hich\af0\dbch\af31505\loch\f0 
-single keys, but map sequences of characters to sequences of keys. This system allows almost any kind of collation behaviour to be expressed. Each key is actually a triplet, giving three weights that can be used successively to make finer discriminations.
-\hich\af0\dbch\af31505\loch\f0  \hich\af0\dbch\af31505\loch\f0 There is an implicit fourth weight that is the Unicode value of the character itself, but that is not stored in the tables.
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 
+EPOC32 reads collation keys from tables. These tables not only map single Unicode characters to single keys, but map sequences of characters to sequences of keys. This system allows almost any kind of collation behaviour to be expressed. Each key is actua
+\hich\af0\dbch\af31505\loch\f0 lly a triplet, giving three weights that can be used successively to make finer discriminations. There is an implicit fourth weight that is the Unicode value of the character itself, but that is not stored in the tables.
+
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 There can be two sets of tables. The first set provides the standard keys; the optional second set tailors them for a particular lo\hich\af0\dbch\af31505\loch\f0 cale. See the definition of TCollationMethod in \\e32\\include
+\par \hich\af0\dbch\af31505\loch\f0 There can be two sets of tables. T\hich\af0\dbch\af31505\loch\f0 he first set provides the standard keys; the optional second set tailors them for a particular locale. See the definition of TCollationMethod in \\e32\\include
 \\collate.h; iMainTable contains the standard keys and iOverrideTable the tailoring.
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 The tables used by EPOC are arrays of numbers written in the C++ source code in hexadecimal notation, and packe\hich\af0\dbch\af31505\loch\f0 
-d and encoded in various ways to make them more compact. This article explains how to use COLTAB to write this C++ code, translating from source data supplied by the Unicode Consortium, or other source data in the same format. It is followed by a case stu
-\hich\af0\dbch\af31505\loch\f0 d\hich\af0\dbch\af31505\loch\f0 y; that of creating collation tables for Swedish.
+\par \hich\af0\dbch\af31505\loch\f0 The tables use\hich\af0\dbch\af31505\loch\f0 
+d by EPOC are arrays of numbers written in the C++ source code in hexadecimal notation, and packed and encoded in various ways to make them more compact. This article explains how to use COLTAB to write this C++ code, translating from source data supplied
+\hich\af0\dbch\af31505\loch\f0  \hich\af0\dbch\af31505\loch\f0 by the Unicode Consortium, or other source data in the same format. It is followed by a case study; that of creating collation tables for Swedish.
 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af1\afs24\alang1025 \ltrch\fcs0 \b\i\fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 COLTAB reference
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 COLTAB syntax
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
-\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 COLTAB is a Windows NT console application that requires }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 a single command-line argument}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 
-\b\cf0\revised\revauth1\revdttm1188404120\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  and a single option}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404122\insrsid7604161 
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 COLTAB is a Windows NT console application that requires }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 a single command-line\hich\af0\dbch\af31505\loch\f0  argument}{
+\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  and a single option}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7604161 
+\par 
+\par \hich\af0\dbch\af31505\loch\f0 The argument }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 is the }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 locale name}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 \hich\f0 , which is used as a base for the names of the files that COLTAB reads and writes. The locale name can be one of the two special names \'93\loch\f0 \hich\f0 standard\'94\loch\f0 
+\hich\f0  and \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0 , in which case the standard da\hich\af0\dbch\af31505\loch\f0 
+ta files are read, or anything else (usually the name of a language) in which case files providing specific collation rules for that language are read.
 \par 
-\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \deleted\revauthdel1\revdttmdel1188404122\insrsid11078925\delrsid7604161 \hich\af0\dbch\af31505\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \deleted\revauthdel1\revdttmdel1188404120\insrsid11078925\delrsid7604161 
-\hich\af0\dbch\af31505\loch\f0 This }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404120\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 The argument }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 is the }{
-\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 locale name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 , which is used as a base fo\hich\af0\dbch\af31505\loch\f0 \hich\f0 
-r the names of the files that COLTAB reads and writes. The locale name can be one of the two special names \'93\loch\f0 \hich\f0 standard\'94\loch\f0 \hich\f0  and \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0 
-, in which case the standard data files are read, or anything else (usually the name of a language) in which case files providi\hich\af0\dbch\af31505\loch\f0 n\hich\af0\dbch\af31505\loch\f0 g specific collation rules for that language are read.
-\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404122\insrsid11078925 
-\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404122\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 The option is \hich\f0 \lquote \loch\f0 /a\hich\f0 \rquote \loch\f0 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404123\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 The}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404126\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  organization of}{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404127\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404126\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 the }{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404123\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 default collation keys files provided by the Unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404134\insrsid9447428 \hich\af0\dbch\af31505\loch\f0 
- Consortium}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404123\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  ha}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404124\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 ve}{
-\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404123\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404127\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 been }{\rtlch\fcs1 
-\af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404123\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 slightly changed since }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404122\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 Unicode }{
-\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404124\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 version }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404122\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 3.0}{
-\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404124\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 . }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404125\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 Before}{\rtlch\fcs1 
-\af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404127\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  and in}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404125\insrsid7604161 \hich\af0\dbch\af31505\loch\f0  Unicode 3.0, }{\rtlch\fcs1 
-\af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404122\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 three }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404123\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 keys 
-\hich\af0\dbch\af31505\loch\f0 files}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404125\insrsid7604161 \hich\af0\dbch\af31505\loch\f0 
- are provided. They are the base keys file, the composite keys file, and the string keys file. After Unicode 3.0, these three files are combined into one}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404128\insrsid7604161 
-\hich\af0\dbch\af31505\loch\f0  single file, which is the all keys file}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404125\insrsid7604161 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404128\insrsid7604161 
-\hich\af0\dbch\af31505\loch\f0  When option \hich\f0 \lquote \loch\f0 /a\hich\f0 \rquote \loch\f0  is not specified, COLTAB will try to fi\hich\af0\dbch\af31505\loch\f0 nd the three separated files, using the locale name as}{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404131\insrsid2316060 \hich\af0\dbch\af31505\loch\f0  file name base. When option \hich\f0 \lquote \loch\f0 a\hich\f0 \rquote \loch\f0  is specified, }{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404132\insrsid9447428 \hich\af0\dbch\af31505\loch\f0 COLTAB will try to find the single keys file, using the locale name as file name base.}{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404122\insrsid7604161 
-\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7604161 
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7604161 \hich\af0\dbch\af31505\loch\f0 The option is \hich\f0 \lquote \loch\f0 /a\hich\f0 \rquote \loch\f0 . \hich\af0\dbch\af31505\loch\f0 The\hich\af0\dbch\af31505\loch\f0  organization of
+\hich\af0\dbch\af31505\loch\f0  \hich\af0\dbch\af31505\loch\f0 the \hich\af0\dbch\af31505\loch\f0 default collation keys files provided by the Unicode}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9447428 \hich\af0\dbch\af31505\loch\f0  Consor
+\hich\af0\dbch\af31505\loch\f0 tium}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7604161 \hich\af0\dbch\af31505\loch\f0  ha\hich\af0\dbch\af31505\loch\f0 ve\hich\af0\dbch\af31505\loch\f0  \hich\af0\dbch\af31505\loch\f0 been \hich\af0\dbch\af31505\loch\f0 
+slightly changed since \hich\af0\dbch\af31505\loch\f0 Unicode \hich\af0\dbch\af31505\loch\f0 version \hich\af0\dbch\af31505\loch\f0 3.0\hich\af0\dbch\af31505\loch\f0 . \hich\af0\dbch\af31505\loch\f0 Before\hich\af0\dbch\af31505\loch\f0  and in
+\hich\af0\dbch\af31505\loch\f0  Unicode 3.0, \hich\af0\dbch\af31505\loch\f0 three \hich\af0\dbch\af31505\loch\f0 keys files\hich\af0\dbch\af31505\loch\f0 
+ are provided. They are the base keys file, the composite keys file, and the string keys file. After Unicode 3.0, these three files are combined into one\hich\af0\dbch\af31505\loch\f0  single file, which is the all keys file.
+\hich\af0\dbch\af31505\loch\f0  When option \hich\f0 \lquote \loch\f0 /a\hich\f0 \rquote \loch\f0  is not specified, COLTAB will try to find the three separated files, using the locale name as}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2316060 
+\hich\af0\dbch\af31505\loch\f0  file name base. When option \hich\f0 \lquote \loch\f0 a\hich\f0 \rquote \loch\f0  is specified, }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9447428 \hich\af0\dbch\af31505\loch\f0 
+COLTAB will try to find the single keys file, using the l\hich\af0\dbch\af31505\loch\f0 ocale name as file name base.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7604161 
+\par 
 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 The input and output files are:
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 1. The base keys file. If the loca\hich\af0\dbch\af31505\loch\f0 \hich\f0 le name is  \'93\loch\f0 \hich\f0 standard\'94\loch\f0 \hich\f0  or \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0  this is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
-\i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  (the standard base keys file supplied by the Unicode Consortium), otherwise it is }{\rtlch\fcs1 \ai\af0 
-\ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 <locale-name>_basekeys.txt.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
+\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 1. The base keys file. If the locale name is  \'93\loch\f0 \hich\f0 standard\'94\loch\f0 \hich\f0  or \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0  this is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 
+\hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  (the standard base keys file supplied by the Unicode Consortium), otherwise it is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 <locale-name>_basekeys\hich\af0\dbch\af31505\loch\f0 .txt.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 \hich\f0 2. The composite keys file. If the locale name is  \'93\loch\f0 \hich\f0 standard\'94\loch\f0 \hich\f0  or \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0  this is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 
-\hich\af0\dbch\af31505\loch\f0 compkeys.tx\hich\af0\dbch\af31505\loch\f0 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  (the standard base keys file supplied by the Unicode Consortium), otherwise it is }{\rtlch\fcs1 
-\ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 <locale-name>_compkeys.txt.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
+\hich\af0\dbch\af31505\loch\f0 compkeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  (the standard base keys file supplied by the Unicode Consortium), otherwise it is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 <locale-name>_compkeys.txt.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 \hich\f0 3. The file of strings; sequences of Unicode characters that map to single collation keys. If the locale name is  \'93\loch\f0 \hich\f0 standard\'94\loch\f0 \hich\f0  or \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0 
- no strin\hich\af0\dbch\af31505\loch\f0 gs file is read, otherwise it is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 <locale-name>_strings.txt.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
-\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404133\insrsid11078925 
-\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404133\insrsid9447428 \hich\af0\dbch\af31505\loch\f0 \hich\f0 3. The all keys file. If the locale name is \'93\loch\f0 \hich\f0 standard\'94\loch\f0 \hich\f0  or \'93\loch\f0 \hich\f0 wgl4
-\'94\loch\f0  this is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf0\revised\revauth1\revdttm1188404135\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 baseallkeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404133\insrsid9447428 
-\hich\af0\dbch\af31505\loch\f0  (the standard }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404134\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 all}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404133\insrsid9447428 
-\hich\af0\dbch\af31505\loch\f0  ke}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404134\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 ys file supplied by the Unicode Consortium), otherwise it is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
-\i\cf0\revised\revauth1\revdttm1188404135\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 <locale-name>_allkeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cf0\revised\revauth1\revdttm1188404135\insrsid8209133 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 
-\cf0\revised\revauth1\revdttm1188404135\insrsid9447428 
+ no strings file is read, otherwise it is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 <locale-name>_strings.txt.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
+\par 
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9447428 \hich\af0\dbch\af31505\loch\f0 \hich\f0 3. The all keys file. If the locale name is \'93\loch\f0 standar\hich\af0\dbch\af31505\loch\f0 \hich\f0 d\'94\loch\f0 \hich\f0  or \'93\loch\f0 \hich\f0 wgl4\'94
+\loch\f0  this is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 baseallkeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9447428 \hich\af0\dbch\af31505\loch\f0  (the standard }{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 all}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9447428 \hich\af0\dbch\af31505\loch\f0  ke}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8209133 \hich\af0\dbch\af31505\loch\f0 
+ys file supplied by the Unicode Consortium), otherwise it is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8209133 \hich\af0\dbch\af31505\loch\f0 <locale-name>_allkeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8209133 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid9447428 
 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6169386 
 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 4. The output C++ source file. This is }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 ls_<locale-name>.cpp}{\rtlch\fcs1 \af0 \ltrch\fcs0 
 \insrsid11078925 .
@@ -146,94 +136,93 @@
 
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 0044 ; [.0707.0020.0008.0044] % LATIN CAPITAL LETTER D
-\par \hich\af0\dbch\af31505\loch\f0 FF24 ; [.0707.0020.0009.FF24] % FULLWIDTH LATIN CAPITAL LETTER \hich\af0\dbch\af31505\loch\f0 D; COMPAT
+\par \hich\af0\dbch\af31505\loch\f0 FF24 ; [.0707.0020.0009.FF24] % FULLWIDTH LATIN CAPITAL LETTER D; COMPAT
 \par \hich\af0\dbch\af31505\loch\f0 216E ; [.0707.0020.000A.216E] % ROMAN NUMERAL FIVE HUNDRED; COMPAT
-\par \hich\af0\dbch\af31505\loch\f0 24B9 ; [.0707.0020.000C.24B9] % CIRCLED LATIN CAPITAL LETTER D; COMPAT
+\par \hich\af0\dbch\af31505\loch\f0 24B9 ; [.0707.0020.0\hich\af0\dbch\af31505\loch\f0 00C.24B9] % CIRCLED LATIN CAPITAL LETTER D; COMPAT
 \par \hich\af0\dbch\af31505\loch\f0 010F ; [.0707.0031.0002.010F] % LATIN SMALL LETTER D WITH CARON; CANONSEQ
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 The format is
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 a four-digit hex n\hich\af0\dbch\af31505\loch\f0 umber; the Unicode value of the character
-\par \hich\af0\dbch\af31505\loch\f0 a space, a semicolon, and a space (optionally, a single space can occur here rather then the three characters just mentioned; this is how the data files used to be before Unicode 3.0 was released in March 2000)
-\par \hich\af0\dbch\af31505\loch\f0 squ\hich\af0\dbch\af31505\loch\f0 
-are brackets enclosing the four collation keys, each of which is a four-digit hex number preceded either by a full stop (meaning that this value is treated in the ordinary way) or an asterisk (meaning that this value is usually ignored)
+\par \hich\af0\dbch\af31505\loch\f0 a four-digit hex number; the Unicode value of the character
+\par \hich\af0\dbch\af31505\loch\f0 a space, a semicolon, and a space (optionally, a single\hich\af0\dbch\af31505\loch\f0 
+ space can occur here rather then the three characters just mentioned; this is how the data files used to be before Unicode 3.0 was released in March 2000)
+\par \hich\af0\dbch\af31505\loch\f0 square brackets enclosing the four collation keys, each of which is a four-digit hex number preceded\hich\af0\dbch\af31505\loch\f0 
+ either by a full stop (meaning that this value is treated in the ordinary way) or an asterisk (meaning that this value is usually ignored)
 \par \hich\af0\dbch\af31505\loch\f0 a space
-\par \hich\af0\dbch\af31505\loch\f0 a percent s\hich\af0\dbch\af31505\loch\f0 ign
+\par \hich\af0\dbch\af31505\loch\f0 a percent sign
 \par \hich\af0\dbch\af31505\loch\f0 an optional comment that is usually the Unicode name of the character
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 In addition, the file can start with some comments (lines starting with a percent sign) followed by the revision number (e.g., \hich\f0 \lquote \loch\f0 2.1.9 % version\hich\f0 \rquote \loch\f0 
-) on a line of its own; this part is \hich\af0\dbch\af31505\loch\f0 optional. Blank lines are ignored.
+\par \hich\af0\dbch\af31505\loch\f0 In addition, the file \hich\af0\dbch\af31505\loch\f0 can start with some comments (lines starting with a percent sign) followed by the revision number (e.g., \hich\f0 \lquote \loch\f0 2.1.9 % version\hich\f0 \rquote 
+\loch\f0 ) on a line of its own; this part is optional. Blank lines are ignored.
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 The four key values have the following conventional meanings:
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 Level-0 key (0707 in the first example line above): basic character identity. All Ds have 0707 as their level-0 key.
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 Level-1 key (0020): diacritic or modifi\hich\af0\dbch\af31505\loch\f0 er if any; 0020 means \hich\f0 \lquote \loch\f0 no diacritic\hich\f0 \rquote \loch\f0 , 0031 means \hich\f0 \lquote \loch\f0 caron\hich\f0 \rquote 
-\loch\f0 , etc. There are too many of these to list here but values can easily be ascertained by looking at }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 .
-
+\par \hich\af0\dbch\af31505\loch\f0 Level-1 key (0020): diacritic or modifier if any; 0020 means \hich\f0 \lquote \loch\f0 no diacritic\hich\f0 \rquote \loch\f0 , 0031 means \hich\f0 \lquote \loch\f0 caron\hich\f0 \rquote \hich\af0\dbch\af31505\loch\f0 
+, etc. There are too many of these to list here but values can easily be ascertained by looking at }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 .
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 Level-2 key (0008): case or other variation. Here are the conventional values used in }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 
 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  and }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 compkeys.txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 :
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 0002: default value; small letter; musical sign\line 0003: fullwidth small letter\line 0004: small letter used as Roman numeral or mathematical symbol\line 0005: script small letter\line 0006: circled small letter\line 
-0007: not used\line 0008: capital \hich\af0\dbch\af31505\loch\f0 letter\line 0009: fullwidth capital letter\line 000A: capital letter used as Roman numeral or mathematical symbol
-\par \hich\af0\dbch\af31505\loch\f0 000B: script capital\line 000C: circled capital\line 000D: Hiragana small letter\line 000E: Hiragana letter\line 000F: Katakana small letter\line 0010: Halfwidth Katakana small \hich\af0\dbch\af31505\loch\f0 letter
+\par \hich\af0\dbch\af31505\loch\f0 0002: default value; sma\hich\af0\dbch\af31505\loch\f0 ll letter; musical sign\line 0003: fullwidth small letter\line 0004: small letter used as Roman numeral or mathematical symbol\line 0005: script small letter\line 
+0006: circled small letter\line 0007: not used\line 0008: capital letter\line 0009: fullwidth capital letter\line 000A: capital lett\hich\af0\dbch\af31505\loch\f0 e\hich\af0\dbch\af31505\loch\f0 r used as Roman numeral or mathematical symbol
+\par \hich\af0\dbch\af31505\loch\f0 000B: script capital\line 000C: circled capital\line 000D: Hiragana small letter\line 000E: Hiragana letter\line 000F: Katakana small letter\line 0010: Halfwidth Katakana small letter
 \par \hich\af0\dbch\af31505\loch\f0 0011: Katakana letter
-\par \hich\af0\dbch\af31505\loch\f0 0012: Halfwidth Katakana letter
+\par \hich\af0\dbch\af31505\loch\f0 0012: Halfwidth Katakana let\hich\af0\dbch\af31505\loch\f0 ter
 \par \hich\af0\dbch\af31505\loch\f0 0013: Circled Katakana letter
 \par \hich\af0\dbch\af31505\loch\f0 0014: modifier, ideographic annotation, superscript
 \par \hich\af0\dbch\af31505\loch\f0 0015: subscript
 \par \hich\af0\dbch\af31505\loch\f0 0016: vertical presentation form
 \par \hich\af0\dbch\af31505\loch\f0 0017: initial (Arabic or other) presentation form
-\par \hich\af0\dbch\af31505\loch\f0 0018: medial p\hich\af0\dbch\af31505\loch\f0 resentation form
+\par \hich\af0\dbch\af31505\loch\f0 0018: medial presentation form
 \par \hich\af0\dbch\af31505\loch\f0 0019: final presentation form
-\par \hich\af0\dbch\af31505\loch\f0 001A: isolated presentation form
+\par \hich\af0\dbch\af31505\loch\f0 001A: isol\hich\af0\dbch\af31505\loch\f0 ated presentation form
 \par \hich\af0\dbch\af31505\loch\f0 001B: non-breaking variant (non-break space, etc.)
 \par \hich\af0\dbch\af31505\loch\f0 001C: surrounded by square
 \par \hich\af0\dbch\af31505\loch\f0 001D: surrounded by square (not sure how this differs from 001C)
 \par \hich\af0\dbch\af31505\loch\f0 001E: vulgar fraction
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 Level-3 ke\hich\af0\dbch\af31505\loch\f0 y: fallback key, used if all other keys yield equality; in }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 
+\par \hich\af0\dbch\af31505\loch\f0 Level-3 key: fallback key, used if all other keys yield equality; i\hich\af0\dbch\af31505\loch\f0 n }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys.txt}{\rtlch\fcs1 \af0 
 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  always the Unicode value of the character. This value is not stored in the tables generated by COLTAB.
 \par 
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 The format of the composite keys file
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
-\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 This is exactly the same as the base keys \hich\af0\dbch\af31505\loch\f0 
-file, except that there may be more than one group of collation keys. Here are a few sample lines (broken here because of the narrow page):
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 This is exactly the same as the base keys file, except that there may be more than one group of col\hich\af0\dbch\af31505\loch\f0 
+lation keys. Here are a few sample lines (broken here because of the narrow page):
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 217A ; [.08D9.0020.0004.0078] [.079D.0020.0004.0069] % SMALL ROMAN NUMERAL ELEVEN;
 \par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 COMPATSEQ
-\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 217B ; [.08D9.0020.000\hich\af0\dbch\af31505\loch\f0 
-4.0078] [.079D.0020.0004.0069] [.079D.0020.0004.0069] %
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 217B ; [.08D9.0020.0004.0078] [.079D.0020.0004.0069] [.079D.0020.0004.0069] %
 \par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 SMALL ROMAN NUMERAL TWELVE; COMPATSEQ
 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 216A ; [.08D9.0020.000A.0058] [.079D.0020.000A.0049] % ROMAN NUMERAL ELEVEN;
 \par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 COMPATSEQ
-\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 216B ; [.08D9.0020.000A.0058] [.079D.0020.000A.0049] [.079D.0020.000A.0049]
-\hich\af0\dbch\af31505\loch\f0  % ROMAN
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 216B ; [.08D9.0020.000A.0058] [.079D.0020.000A.0049] [.079D.0020.000A.0049] % ROMAN
 \par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 NUMERAL TWELVE; COMPATSEQ
-\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 0149 ; [.091E.0020.0004.02BC] [.07FD.0020.0004.006E] % LATIN SMALL LETTER N
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 0149 ; [.091E.0020.00\hich\af0\dbch\af31505\loch\f0 
+04.02BC] [.07FD.0020.0004.006E] % LATIN SMALL LETTER N
 \par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 PRECEDED BY APOSTROPHE; COMPATSEQ
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 The format of the strings file
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
-\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 The strings file has the same format as compkeys.txt, except that there can be a\hich\af0\dbch\af31505\loch\f0 
-ny number of Unicode characters at the start of the line, space-separated and each exactly 4 hex digits.
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 The strings file has the same format as compkeys.txt, except that there can be any number of Unicode characters at the start of the line\hich\af0\dbch\af31505\loch\f0 
+, space-separated and each exactly 4 hex digits.
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 Each line associates a string of Unicode characters (sometimes known as a \hich\f0 \lquote \loch\f0 collation grapheme\hich\f0 \rquote \loch\f0 ) with a collation key or sequence of collation keys. Th
-\hich\af0\dbch\af31505\loch\f0 e collation system currently handles strings of up to 8 characters. For example, the following entry treats \hich\f0 \lquote \loch\f0 ch\hich\f0 \rquote \loch\f0 
+\par \hich\af0\dbch\af31505\loch\f0 Each line associates a string of Unicode characters (sometimes known as a \hich\f0 \lquote \loch\f0 collation grapheme\hich\f0 \rquote \loch\f0 
+) with a collation key or sequence of collation keys. The collation system currently handles strings of up to 8 \hich\af0\dbch\af31505\loch\f0 characters. For example, the following entry treats \hich\f0 \lquote \loch\f0 ch\hich\f0 \rquote \loch\f0 
  as a single letter, as is done in traditional Spanish collation:
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 0063 0068 ; [.06FC.0020.0002.0063] % LATIN SMALL LETTER C followed by LATIN S\hich\af0\dbch\af31505\loch\f0 MALL
+\par \hich\af0\dbch\af31505\loch\f0 0063 0068 ; [.06FC.0020.0002.0063] % LATIN SMALL LETTER C followed by LATIN SMALL
 \par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 LETTER H
 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
-\par \hich\af0\dbch\af31505\loch\f0 You will have to supply all the case versions as separate entries. For \hich\f0 \lquote \loch\f0 ch\hich\f0 \rquote \loch\f0  the variants \hich\f0 \lquote \loch\f0 ch\hich\f0 \rquote \loch\f0 , \hich\f0 \lquote \loch\f0 Ch
-\hich\f0 \rquote \loch\f0  and \hich\f0 \lquote \loch\f0 CH\hich\f0 \rquote \loch\f0  are needed; \hich\f0 \lquote \loch\f0 cH\hich\f0 \rquote \loch\f0  should probably be omitted as not actually a case-variant of \hich\f0 \lquote \loch\f0 ch\hich\f0 
-\rquote \loch\f0  but two separate letters.
+\par \hich\af0\dbch\af31505\loch\f0 You will have to supply all the case vers\hich\af0\dbch\af31505\loch\f0 ions as separate entries. For \hich\f0 \lquote \loch\f0 ch\hich\f0 \rquote \loch\f0  the variants \hich\f0 \lquote \loch\f0 ch\hich\f0 \rquote \loch\f0 
+, \hich\f0 \lquote \loch\f0 Ch\hich\f0 \rquote \loch\f0  and \hich\f0 \lquote \loch\f0 CH\hich\f0 \rquote \loch\f0  are needed; \hich\f0 \lquote \loch\f0 cH\hich\f0 \rquote \loch\f0  should probably be omitted as not actually a case-variant of \hich\f0 
+\lquote \loch\f0 ch\hich\f0 \rquote \loch\f0  but two separate letters.
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 The output file
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
-\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 COLTAB \hich\af0\dbch\af31505\loch\f0 writes a C++ source file that looks like this (omitting irrelevant material):
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 COLTAB writes a C++ source file that looks like this (omitting \hich\af0\dbch\af31505\loch\f0 irrelevant material):
 \par 
 \par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid11078925 \hich\af2\dbch\af31505\loch\f2 static const TUint32 TheKey[] = 
 \par \tab \{
@@ -261,48 +250,48 @@
 \par \tab \{
 \par \tab \}\hich\af2\dbch\af31505\loch\f2 ;
 \par 
-\par \hich\af2\dbch\af31505\loch\f2 static const TCollationKeyTable TheStandardTable = 
+\par \hich\af2\dbch\af31505\loch\f2 static c\hich\af2\dbch\af31505\loch\f2 onst TCollationKeyTable TheStandardTable = 
 \par \tab \{\hich\af2\dbch\af31505\loch\f2  TheKey, TheIndex, 517, TheStringElement, TheStringIndex, 0 \};
 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
-\par \hich\af0\dbch\af31505\loch\f0 The last declaration is the important one; all the preceding ones are components of it. T\hich\af0\dbch\af31505\loch\f0 
-he TCollationKeyTable structure that is declared can be used as one of the two elements of a TCollationMethod structure, which can be passed to one of the Mem::CompareC or TDesC16::CompareC functions.
+\par \hich\af0\dbch\af31505\loch\f0 The last declaration is the important one; all the preceding ones are components of it. The TCollationKeyTable structure that is declared can be u\hich\af0\dbch\af31505\loch\f0 
+sed as one of the two elements of a TCollationMethod structure, which can be passed to one of the Mem::CompareC or TDesC16::CompareC functions.
 \par 
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Putting the output into EPOC
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
-\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 In an EPOC implementation\hich\af0\dbch\af31505\loch\f0  collation rules are kept in two places. The }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 standard }{
-\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 rules, which form the base from which the tailoring or tailorings for a given locale differ, are encoded as constant static data in \\e32\\euser\\unicode\\collate.cpp. The }{
-\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 locale-specific}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  rules for the defa\hich\af0\dbch\af31505\loch\f0 ult locale are kept in \\e32
-\\elocl\\ls_unic.cpp. Locale-specific rules for other locales are kept in other files of the form \\e32\\elocl\\ls_<x>.cpp, where <x> will probably be the language name or locale code; this is yet to be decided.
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 In an EPOC implementation collation rules are kept in two places. The }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 standard }{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 rul\hich\af0\dbch\af31505\loch\f0 es, which form the base from which the tailoring or tailorings for a given locale differ, are encoded as constant static data in \\e32\\euser\\unicode\\collate.cpp. The }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 locale-specific}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  rules for the default locale are kept in \\e32\\elocl\\ls_unic.cpp. Locale-spe
+\hich\af0\dbch\af31505\loch\f0 cific rules for other locales are kept in other files of the form \\e32\\elocl\\ls_<x>.cpp, where <x> will probably be the language name or locale code; this is yet to be decided.
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 The standard rules sh\hich\af0\dbch\af31505\loch\f0 ould be changed only when the Unicode organisation releases new collation key tables, or when EPOC changes.
+\par \hich\af0\dbch\af31505\loch\f0 The standard rules should be changed only when the Unicode organisation releas\hich\af0\dbch\af31505\loch\f0 es new collation key tables, or when EPOC changes.
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 Tailoring files containing locale-specific collation keys can be created whenever necessary by running COLTAB; for locales other than \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0 \hich\f0  and \'93\loch\f0 s
-\hich\af0\dbch\af31505\loch\f0 \hich\f0 tandard\'94\loch\f0  COLTAB writes a complete source file that with small modifications (e.g., declaring a constant for the UID for the locale-specific collation rules) can be used directly as part of ELOCL.}{
-\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\insrsid11078925 
+\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 Tailoring files containing locale-specific collation keys can be created whenever necessary by running COLTAB; for locales other than \'93\loch\f0 \hich\f0 wgl4\'94\loch\f0 \hich\f0  and \'93\loch\f0 \hich\f0 
+standard\'94\loch\f0  COLTAB writes a complete source file that with s\hich\af0\dbch\af31505\loch\f0 mall modifications (e.g., declaring a constant for the UID for the locale-specific collation rules) can be used directly as part of ELOCL.}{\rtlch\fcs1 
+\af2\afs18 \ltrch\fcs0 \f2\fs18\insrsid11078925 
 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af1\afs24\alang1025 \ltrch\fcs0 \b\i\fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
 \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Case Study: tailoring for the Swedish locale
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
-\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Determine the c\hich\af1\dbch\af31505\loch\f1 ollation rules
+\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid11078925 \hich\af1\dbch\af31505\loch\f1 Determine the collation rules
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 
-The first stage is to determine the collation rules for the locale in question. I will use Swedish as an example. Swedish uses the Latin script with some letters that require special treatment. It is a good rule, and one that I will follow 
-\hich\af0\dbch\af31505\loch\f0 
-here, that in all cases apart from the peculiarities that actually matter to the particular locale, the standard collation system should be used. For example, it is unnecessary and undesirable for the Swedish locale to sort Greek letters in a non-standard
-\hich\af0\dbch\af31505\loch\f0  \hich\af0\dbch\af31505\loch\f0 
-way. This means that the Swedish locale will be a relatively simple tailoring of the standard locale, which provides collation keys for the WGL4 character repertoire plus some useful control characters.
+The first stage is to determine the collation rules for the locale in question. I will use Swedish as an example. Swedish uses the Latin script with some letters that require special treatment. It is a good rule, and one that I will follow here, that in a
+\hich\af0\dbch\af31505\loch\f0 l\hich\af0\dbch\af31505\loch\f0 
+l cases apart from the peculiarities that actually matter to the particular locale, the standard collation system should be used. For example, it is unnecessary and undesirable for the Swedish locale to sort Greek letters in a non-standard way. This means
+\hich\af0\dbch\af31505\loch\f0  \hich\af0\dbch\af31505\loch\f0 that the Swedish locale will be a relatively simple tailoring of the standard locale, which provides collation keys for the WGL4 character repertoire plus some useful control characters.
+
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 The rules that we need to express are as follows. (N\hich\af0\dbch\af31505\loch\f0 
-ote to experts in Swedish: these rules are meant as an example and may not follow actual Swedish practice, although I believe they are correct as far as they go.)
+\par \hich\af0\dbch\af31505\loch\f0 The rules that we need to express are as follows. (Note to experts i\hich\af0\dbch\af31505\loch\f0 
+n Swedish: these rules are meant as an example and may not follow actual Swedish practice, although I believe they are correct as far as they go.)
 \par 
 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang2057\langfe2052\langnp2057\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 1. \tab}}\pard \ltrpar\ql \fi-283\li283\ri0\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0
-\pndec\pnb0\pni0\pnfs20\pnstart1\pnindent283\pnhang {\pntxta \hich . }}\faauto\ls1\rin0\lin283\itap0\pararsid7604161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 \hich\f0 The letters \'e5\loch\f0 \hich\f0 , \'e4\loch\f0 
-\hich\f0 , and \'f6\loch\f0  (a-ring, a-umlaut and o-umlaut) are separate letters, placed in that\hich\af0\dbch\af31505\loch\f0  order after z. They are not to be treated as accented letters.
+\pndec\pnb0\pni0\pnfs20\pnstart1\pnindent283\pnhang {\pntxta . }}\faauto\ls1\rin0\lin283\itap0\pararsid7604161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 \hich\f0 The letters \'e5\loch\f0 \hich\f0 , \'e4\loch\f0 
+\hich\f0 , and \'f6\loch\f0  (a-ring, a-umlaut and o-umlaut) are separate letters, placed in that order aft\hich\af0\dbch\af31505\loch\f0 er z. They are not to be treated as accented letters.
 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang2057\langfe2052\langnp2057\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 2. \tab}}\pard \ltrpar\ql \fi-283\li283\ri0\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0
-\pndec\pnb0\pni0\pnfs20\pnstart1\pnindent283\pnhang {\pntxta \hich . }}\faauto\ls1\rin0\lin283\itap0\pararsid7604161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 
-The letters v and w are identical for the purposes of collation.
+\pndec\pnb0\pni0\pnfs20\pnstart1\pnindent283\pnhang {\pntxta . }}\faauto\ls1\rin0\lin283\itap0\pararsid7604161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 The letters v and w are identical for the purposes of collation.
+
 \par {\pntext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang2057\langfe2052\langnp2057\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 3. \tab}}\pard \ltrpar\ql \fi-283\li283\ri0\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0
-\pndec\pnb0\pni0\pnfs20\pnstart1\pnindent283\pnhang {\pntxta \hich . }}\faauto\ls1\rin0\lin283\itap0\pararsid7604161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 \hich\f0 The letters \'fc\loch\f0 
+\pndec\pnb0\pni0\pnfs20\pnstart1\pnindent283\pnhang {\pntxta . }}\faauto\ls1\rin0\lin283\itap0\pararsid7604161 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 \hich\f0 The letters \'fc\loch\f0 
  and y are identical for the purposes of collation.
 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 
 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af1\hich\af1\dbch\af31505\cgrid\langnp2057\langfenp2052 {
@@ -310,28 +299,28 @@
 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\af0\hich\af0\dbch\af31505\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 
 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 Here is the tailoring data. 
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 The equiv\hich\af0\dbch\af31505\loch\f0 alence of v and w is indicated by a tailored base keys file that should be called (following COLTAB\hich\f0 \rquote \loch\f0 
+\par \hich\af0\dbch\af31505\loch\f0 The equ\hich\af0\dbch\af31505\loch\f0 ivalence of v and w is indicated by a tailored base keys file that should be called (following COLTAB\hich\f0 \rquote \loch\f0 
 s conventions) swedish_basekeys.txt. Creating this is simple; just copy the }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 basekeys}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 .}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
-\i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  entries for V (U+0056) and v (U+0076) but change the Unicode values\hich\af0\dbch\af31505\loch\f0  to 0057 and 0077.
+\i\insrsid11078925 \hich\af0\dbch\af31505\loch\f0 txt}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0  entries for V (U+0056) and v (U+0076) but change the Unicode valu\hich\af0\dbch\af31505\loch\f0 es to 0057 and 0077.
 
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 0057 [.08C5.0020.0008.0057] % W equivalent to V
 \par \hich\af0\dbch\af31505\loch\f0 0077 [.08C5.0020.0002.0077] % w equivalent to v
 \par 
-\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 The letters \'e5\loch\f0 \hich\f0 , \'e4\loch\f0 \hich\f0 , \'f6\loch\f0 \hich\f0  and \'fc\loch\f0  must be treated in the data as strings of Unicode values, that is of bases plus accents, associated with single k
-\hich\af0\dbch\af31505\loch\f0 eys. (There is no need to create entries for the composed versions, because the EPOC collation system dissects them as it goes along). Use the combining diacritics; most are in the Unicode range U+0300\hich\f0 \emdash 
-\loch\f0 U+0361. For example, U+030A is combining ring above. \hich\af0\dbch\af31505\loch\f0 I\hich\af0\dbch\af31505\loch\f0 n general you have to use the combined character\hich\f0 \rquote \loch\f0 s canonical decomposition.
+\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 The letters \'e5\loch\f0 \hich\f0 , \'e4\loch\f0 \hich\f0 , \'f6\loch\f0 \hich\f0  and \'fc\loch\f0  must be treated in the data as strings of Unicode values, that is of bases plus accents, associated with single
+\hich\af0\dbch\af31505\loch\f0  keys. (There is no need to create entries for the composed versions, because the EPOC collation system dissects them as it goes along). Use the combining diacritics; most are in the Unicode range U+0300\hich\f0 \emdash 
+\loch\f0 U+0361. For example, U+030A is combining ring above.\hich\af0\dbch\af31505\loch\f0  In general you have to use the combined character\hich\f0 \rquote \loch\f0 s canonical decomposition.
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 \hich\f0 The primary collation keys for \'e5\loch\f0 \hich\f0 , \'e4\loch\f0 \hich\f0 , and \'f6\loch\f0  are assigned by making use of the convenient gaps between existing key values. The last \hich\f0 \lquote \loch\f0 z
-\hich\f0 \rquote \loch\f0  is U+0291, Latin small letter z with curl, w\hich\af0\dbch\af31505\loch\f0 
-hich has the primary key 08F5. The next entry is for U+0292, Latin small letter ezh, which has the primary key 08F9. This leaves a gap of 3 unused primary keys, 08F6\hich\f0 \emdash \loch\f0 \hich\f0 08F8, which can be used for \'e5\loch\f0 \hich\f0 , 
-\'e4\loch\f0 \hich\f0 , and \'f6\loch\f0 . Of course, if there were more interpolated value\hich\af0\dbch\af31505\loch\f0 s\hich\af0\dbch\af31505\loch\f0 , other primary keys would need to be reassigned.
+\hich\f0 \rquote \loch\f0  is U+0291, Latin small letter z with curl,\hich\af0\dbch\af31505\loch\f0 
+ which has the primary key 08F5. The next entry is for U+0292, Latin small letter ezh, which has the primary key 08F9. This leaves a gap of 3 unused primary keys, 08F6\hich\f0 \emdash \loch\f0 \hich\f0 08F8, which can be used for \'e5\loch\f0 \hich\f0 , 
+\'e4\loch\f0 \hich\f0 , and \'f6\loch\f0 . Of course, if there were more interpolated val\hich\af0\dbch\af31505\loch\f0 u\hich\af0\dbch\af31505\loch\f0 es, other primary keys would need to be reassigned.
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 This gives us the following strings file, which is called swedish_strings.txt:
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 0061 030A [.08F6.0020.0002.00E5] % a-ring after z
 \par \hich\af0\dbch\af31505\loch\f0 0061 0308 [.08F7.0020.0002.00E4] % a-umlaut after a-ring
-\par \hich\af0\dbch\af31505\loch\f0 006F 0308 [.08F8.0\hich\af0\dbch\af31505\loch\f0 020.0002.00F6] % o-umlaut after a-umlaut
+\par \hich\af0\dbch\af31505\loch\f0 006F 0308 [.08F8\hich\af0\dbch\af31505\loch\f0 .0020.0002.00F6] % o-umlaut after a-umlaut
 \par \hich\af0\dbch\af31505\loch\f0 0041 030A [.08F6.0020.0008.00C5] % A-ring after Z
 \par \hich\af0\dbch\af31505\loch\f0 0041 0308 [.08F7.0020.0008.00C4] % A-umlaut after A-ring
 \par \hich\af0\dbch\af31505\loch\f0 004F 0308 [.08F8.0020.0008.00D6] % O-umlaut after A-umlaut
@@ -347,14 +336,24 @@
 \par \hich\af0\dbch\af31505\loch\f0 coltab swedish
 \par 
 \par \hich\af0\dbch\af31505\loch\f0 The output is a new file, ls_swedish.cpp:
-\par \hich\af0\dbch\af31505\loch\f0 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).// All rights reserved.// This comp\hich\af0\dbch\af31505\loch\f0 
-onent and the accompanying materials are made available// under the terms of the License "Eclipse Public License v1.0"// which accompanies this distribution, and is available// at the URL "http://www.eclipse.org/legal/epl-v10.html".//// Init
-\hich\af0\dbch\af31505\loch\f0 i\hich\af0\dbch\af31505\loch\f0 al Contributors:// Nokia Corporation - initial contribution.//// Contributors://// Description:// 
-\par \hich\af0\dbch\af31505\loch\f0 LS_SWEDISH.CPP// 
-\par \hich\af0\dbch\af31505\loch\f0 // 
-\par \hich\af0\dbch\af31505\loch\f0 // //
-\par 
-\par \hich\af0\dbch\af31505\loch\f0 /*
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid737317 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid737317 \hich\af0\dbch\af31505\loch\f0 /*
+\par \hich\af0\dbch\af31505\loch\f0 * Copyright (c) 1997-2009 No\hich\af0\dbch\af31505\loch\f0 kia Corporation and/or its subsidiary(-ies).
+\par \hich\af0\dbch\af31505\loch\f0 * All rights reserved.
+\par \hich\af0\dbch\af31505\loch\f0 * This component and the accompanying materials are made available
+\par \hich\af0\dbch\af31505\loch\f0 * under the terms of "Eclipse Public License v1.0"
+\par \hich\af0\dbch\af31505\loch\f0 * which accompanies this distribution, and is available
+\par \hich\af0\dbch\af31505\loch\f0 * at the URL "\hich\af0\dbch\af31505\loch\f0 http://www.eclipse.org/legal/epl-v10.html".
+\par \hich\af0\dbch\af31505\loch\f0 *
+\par \hich\af0\dbch\af31505\loch\f0 * Initial Contributors:
+\par \hich\af0\dbch\af31505\loch\f0 * Nokia Corporation - initial contribution.
+\par \hich\af0\dbch\af31505\loch\f0 *
+\par \hich\af0\dbch\af31505\loch\f0 * Contributors:
+\par \hich\af0\dbch\af31505\loch\f0 *
+\par \hich\af0\dbch\af31505\loch\f0 * Description: 
+\par \hich\af0\dbch\af31505\loch\f0 *
+\par \hich\af0\dbch\af31505\loch\f0 */}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4132030 
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid737317 
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11078925 \hich\af0\dbch\af31505\loch\f0 /*
 \par \hich\af0\dbch\af31505\loch\f0 The LCharSet object used by the Swedish locale.
 \par \hich\af0\dbch\af31505\loch\f0 Generated by COLTAB.
 \par \hich\af0\dbch\af31505\loch\f0 */
@@ -513,17 +512,33 @@
 \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
 \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
 \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
-4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
-d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+4d73786d6c322e534158584d4c5265616465722e352e30000000000000000000000e0000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff01000000ec69d9888b8b3d4c859eaf6cd158be0f00000000000000000000000010bf
+d72d1dc4ca010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff02000000000000000000000000000000000000000000000010bfd72d1dc4ca01
+10bfd72d1dc4ca01000000000000000000000000d000d600d30031004d00cb0041003400540055004f005600570058003400c500c10052005300d0004600c0003d003d000000000000000000000000000000000032000101ffffffffffffffff03000000000000000000000000000000000000000000000010bfd72d1dc4
+ca0110bfd72d1dc4ca010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000000000000cf00000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f0000000000000000000000000058
-7b010ed9c901feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d
+22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d22415041222f3e0d0a00000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b33324442
+364343332d314542302d343334442d393535392d3737413538353134423031367d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c
+64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000
+0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f
+72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
--- a/textrendering/textformatting/inc/InlineText_Internal.h	Fri Mar 12 15:51:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-#ifndef INLINETEXT_INTERNAL_H_
-#define INLINETEXT_INTERNAL_H_
-
-#include <e32std.h>
-
-/**
-@internalTechnology
-*/
-const TUid KInlineTextApiExtensionUid = { 0x101FD03D };
-
-#endif
\ No newline at end of file
--- a/textrendering/textformatting/tbox/LAYEMU.CPP	Fri Mar 12 15:51:09 2010 +0200
+++ b/textrendering/textformatting/tbox/LAYEMU.CPP	Thu Apr 01 00:28:03 2010 +0300
@@ -4013,7 +4013,7 @@
 		{
 		if (aTopNoLimitBorder)
 		    {
-	        iBandTop = Max(0 - iText->LayoutHeight(),desired_bandtop);
+	        iBandTop = desired_bandtop;
 		    }
 		else
 		    iBandTop = Max(0,desired_bandtop);//Disallow text scrolled beyond top border