Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / MS / Internal / Shaping / Script.cs / 1 / Script.cs
//+------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation
//
// File: Script.cs
//
// Contents: Script identifier
//
// Created: 3-21-2005 Worachai Chaoweeraprasit (wchao)
//
//-----------------------------------------------------------------------
using System;
using System.Collections;
namespace MS.Internal.Shaping
{
///
/// Script identifier that maps to OpenType script tags
///
internal static class Script
{
static Script()
{
// Hash the the reverse lookup for script id
for(int i = 0; i < (int)ScriptID.Max; i++)
{
_idHash.Add(_tags[i], (ScriptID)i);
}
}
static internal ScriptTags[] AllTags
{
get { return _tags; }
}
static internal ScriptID ToID(ScriptTags scriptTag)
{
object script = _idHash[scriptTag];
if(script != null)
{
return (ScriptID)script;
}
return ScriptID.Default;
}
static internal ScriptTags ToTag(ScriptID script)
{
return _tags[(int)script];
}
static private Hashtable _idHash = new Hashtable((int)ScriptID.Max);
static private readonly ScriptTags[] _tags = new ScriptTags[]
{
ScriptTags.Default, // 'dflt'
ScriptTags.Arabic, // 'arab'
ScriptTags.Armenian, // 'armn'
ScriptTags.Bengali, // 'beng'
ScriptTags.Bopomofo, // 'bopo'
ScriptTags.Braille, // 'brai'
ScriptTags.Buginese, // 'bugi'
ScriptTags.Buhid, // 'buhd'
ScriptTags.CanadianSyllabics, // 'cans'
ScriptTags.Cherokee, // 'cher'
ScriptTags.CJKIdeographic, // 'hani'
ScriptTags.Coptic, // 'copt'
ScriptTags.CypriotSyllabary, // 'cprt'
ScriptTags.Cyrillic, // 'cyrl'
ScriptTags.Deseret, // 'dsrt'
ScriptTags.Devanagari, // 'deva'
ScriptTags.Ethiopic, // 'ethi'
ScriptTags.Georgian, // 'geor'
ScriptTags.Glagolitic, // 'glag'
ScriptTags.Gothic, // 'goth'
ScriptTags.Greek, // 'grek'
ScriptTags.Gujarati, // 'gujr'
ScriptTags.Gurmukhi, // 'guru'
ScriptTags.Hangul, // 'hang'
ScriptTags.Hanunoo, // 'hano'
ScriptTags.Hebrew, // 'hebr'
ScriptTags.Kannada, // 'knda'
ScriptTags.Hiragana, // 'kana'
// ScriptTags.Katakana, // 'kana' (same tag as Hiragana)
ScriptTags.Kharosthi, // 'khar'
ScriptTags.Khmer, // 'khmr'
ScriptTags.Lao, // 'lao '
ScriptTags.Latin, // 'latn'
ScriptTags.Limbu, // 'limb'
ScriptTags.LinearB, // 'linb'
ScriptTags.Malayalam, // 'mlym'
ScriptTags.MathematicalAlphanumericSymbols, // 'math'
ScriptTags.Mongolian, // 'mong'
ScriptTags.MusicalSymbols, // 'musc'
ScriptTags.Myanmar, // 'mymr'
ScriptTags.NewTaiLue, // 'talu'
ScriptTags.Ogham, // 'ogam'
ScriptTags.OldItalic, // 'ital'
ScriptTags.OldPersianCuneiform, // 'xpeo'
ScriptTags.Oriya, // 'orya'
ScriptTags.Osmanya, // 'osma'
ScriptTags.Runic, // 'runr'
ScriptTags.Shavian, // 'shaw'
ScriptTags.Sinhala, // 'sinh'
ScriptTags.SylotiNagri, // 'sylo'
ScriptTags.Syriac, // 'syrc'
ScriptTags.Tagalog, // 'tglg'
ScriptTags.Tagbanwa, // 'tagb'
ScriptTags.TaiLe, // 'tale'
ScriptTags.Tamil, // 'taml'
ScriptTags.Telugu, // 'telu'
ScriptTags.Thaana, // 'thaa'
ScriptTags.Thai, // 'thai'
ScriptTags.Tibetan, // 'tibt'
ScriptTags.Tifinagh, // 'tfng'
ScriptTags.UgariticCuneiform, // 'ugar'
ScriptTags.Yi, // 'yi '
Script.TagDigit, // 'zzz0'
Script.TagControl, // 'zzz1'
Script.TagMirror, // 'zzz2'
};
internal const ScriptTags TagDigit = (ScriptTags)0x307a7a7a; // 'zzz0'
internal const ScriptTags TagControl = (ScriptTags)0x317a7a7a; // 'zzz1'
internal const ScriptTags TagMirror = (ScriptTags)0x327a7a7a; // 'zzz2'
internal static readonly ScriptFlags[] Flags = new ScriptFlags[]
{
/* Default */ ScriptFlags.None,
/* Arabic */ ScriptFlags.None,
/* Armenian */ ScriptFlags.None,
/* Bengali */ ScriptFlags.NeedsCaretInfo,
/* Bopomofo */ ScriptFlags.None,
/* Braille */ ScriptFlags.None,
/* Buginese */ ScriptFlags.NeedsCaretInfo,
/* Buhid */ ScriptFlags.None,
/* CanadianSyllabics */ ScriptFlags.None,
/* Cherokee */ ScriptFlags.None,
/* CJKIdeographic */ ScriptFlags.None,
/* Coptic */ ScriptFlags.None,
/* CypriotSyllabary */ ScriptFlags.None,
/* Cyrillic */ ScriptFlags.None,
/* Deseret */ ScriptFlags.None,
/* Devanagari */ ScriptFlags.NeedsCaretInfo,
/* Ethiopic */ ScriptFlags.None,
/* Georgian */ ScriptFlags.None,
/* Glagolitic */ ScriptFlags.None,
/* Gothic */ ScriptFlags.None,
/* Greek */ ScriptFlags.None,
/* Gujarati */ ScriptFlags.NeedsCaretInfo,
/* Gurmukhi */ ScriptFlags.NeedsCaretInfo,
/* Hangul */ ScriptFlags.NeedsCaretInfo,
/* Hanunoo */ ScriptFlags.None,
/* Hebrew */ ScriptFlags.NeedsCaretInfo,
/* Kannada */ ScriptFlags.NeedsCaretInfo,
/* Kana */ ScriptFlags.None,
/* Kharoshthi */ ScriptFlags.NeedsCaretInfo,
/* Khmer */ ScriptFlags.NeedsCaretInfo,
/* Lao */ ScriptFlags.NeedsCaretInfo,
/* Latin */ ScriptFlags.None,
/* Limbu */ ScriptFlags.NeedsCaretInfo,
/* LinearB */ ScriptFlags.None,
/* Malayalam */ ScriptFlags.NeedsCaretInfo,
/* MathematicalAlphanumericSymbols */ ScriptFlags.None,
/* Mongolian */ ScriptFlags.NeedsCaretInfo,
/* MusicalSymbols */ ScriptFlags.None,
/* Myanmar */ ScriptFlags.NeedsCaretInfo,
/* NewTaiLue */ ScriptFlags.NeedsCaretInfo,
/* Ogham */ ScriptFlags.None,
/* OldItalic */ ScriptFlags.None,
/* OldPersianCuneiform */ ScriptFlags.None,
/* Oriya */ ScriptFlags.NeedsCaretInfo,
/* Osmanya */ ScriptFlags.None,
/* Runic */ ScriptFlags.None,
/* Shavian */ ScriptFlags.None,
/* Sinhala */ ScriptFlags.NeedsCaretInfo,
/* SylotiNagri */ ScriptFlags.NeedsCaretInfo,
/* Syriac */ ScriptFlags.None,
/* Tagalog */ ScriptFlags.None,
/* Tagbanwa */ ScriptFlags.None,
/* TaiLe */ ScriptFlags.None,
/* Tamil */ ScriptFlags.NeedsCaretInfo,
/* Telugu */ ScriptFlags.NeedsCaretInfo,
/* Thaana */ ScriptFlags.NeedsCaretInfo,
/* Thai */ ScriptFlags.NeedsCaretInfo,
/* Tibetan */ ScriptFlags.NeedsCaretInfo,
/* Tifinagh */ ScriptFlags.None,
/* UgariticCuneiform */ ScriptFlags.None,
/* Yi */ ScriptFlags.None,
/* Digit */ ScriptFlags.None,
/* Control */ ScriptFlags.None,
/* Mirror */ ScriptFlags.None,
};
}
///
/// Script-specific flags
///
[Flags]
internal enum ScriptFlags : ushort
{
None = 0,
NeedsCaretInfo = 1, // Requires complex caret restriction
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//+------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation
//
// File: Script.cs
//
// Contents: Script identifier
//
// Created: 3-21-2005 Worachai Chaoweeraprasit (wchao)
//
//-----------------------------------------------------------------------
using System;
using System.Collections;
namespace MS.Internal.Shaping
{
///
/// Script identifier that maps to OpenType script tags
///
internal static class Script
{
static Script()
{
// Hash the the reverse lookup for script id
for(int i = 0; i < (int)ScriptID.Max; i++)
{
_idHash.Add(_tags[i], (ScriptID)i);
}
}
static internal ScriptTags[] AllTags
{
get { return _tags; }
}
static internal ScriptID ToID(ScriptTags scriptTag)
{
object script = _idHash[scriptTag];
if(script != null)
{
return (ScriptID)script;
}
return ScriptID.Default;
}
static internal ScriptTags ToTag(ScriptID script)
{
return _tags[(int)script];
}
static private Hashtable _idHash = new Hashtable((int)ScriptID.Max);
static private readonly ScriptTags[] _tags = new ScriptTags[]
{
ScriptTags.Default, // 'dflt'
ScriptTags.Arabic, // 'arab'
ScriptTags.Armenian, // 'armn'
ScriptTags.Bengali, // 'beng'
ScriptTags.Bopomofo, // 'bopo'
ScriptTags.Braille, // 'brai'
ScriptTags.Buginese, // 'bugi'
ScriptTags.Buhid, // 'buhd'
ScriptTags.CanadianSyllabics, // 'cans'
ScriptTags.Cherokee, // 'cher'
ScriptTags.CJKIdeographic, // 'hani'
ScriptTags.Coptic, // 'copt'
ScriptTags.CypriotSyllabary, // 'cprt'
ScriptTags.Cyrillic, // 'cyrl'
ScriptTags.Deseret, // 'dsrt'
ScriptTags.Devanagari, // 'deva'
ScriptTags.Ethiopic, // 'ethi'
ScriptTags.Georgian, // 'geor'
ScriptTags.Glagolitic, // 'glag'
ScriptTags.Gothic, // 'goth'
ScriptTags.Greek, // 'grek'
ScriptTags.Gujarati, // 'gujr'
ScriptTags.Gurmukhi, // 'guru'
ScriptTags.Hangul, // 'hang'
ScriptTags.Hanunoo, // 'hano'
ScriptTags.Hebrew, // 'hebr'
ScriptTags.Kannada, // 'knda'
ScriptTags.Hiragana, // 'kana'
// ScriptTags.Katakana, // 'kana' (same tag as Hiragana)
ScriptTags.Kharosthi, // 'khar'
ScriptTags.Khmer, // 'khmr'
ScriptTags.Lao, // 'lao '
ScriptTags.Latin, // 'latn'
ScriptTags.Limbu, // 'limb'
ScriptTags.LinearB, // 'linb'
ScriptTags.Malayalam, // 'mlym'
ScriptTags.MathematicalAlphanumericSymbols, // 'math'
ScriptTags.Mongolian, // 'mong'
ScriptTags.MusicalSymbols, // 'musc'
ScriptTags.Myanmar, // 'mymr'
ScriptTags.NewTaiLue, // 'talu'
ScriptTags.Ogham, // 'ogam'
ScriptTags.OldItalic, // 'ital'
ScriptTags.OldPersianCuneiform, // 'xpeo'
ScriptTags.Oriya, // 'orya'
ScriptTags.Osmanya, // 'osma'
ScriptTags.Runic, // 'runr'
ScriptTags.Shavian, // 'shaw'
ScriptTags.Sinhala, // 'sinh'
ScriptTags.SylotiNagri, // 'sylo'
ScriptTags.Syriac, // 'syrc'
ScriptTags.Tagalog, // 'tglg'
ScriptTags.Tagbanwa, // 'tagb'
ScriptTags.TaiLe, // 'tale'
ScriptTags.Tamil, // 'taml'
ScriptTags.Telugu, // 'telu'
ScriptTags.Thaana, // 'thaa'
ScriptTags.Thai, // 'thai'
ScriptTags.Tibetan, // 'tibt'
ScriptTags.Tifinagh, // 'tfng'
ScriptTags.UgariticCuneiform, // 'ugar'
ScriptTags.Yi, // 'yi '
Script.TagDigit, // 'zzz0'
Script.TagControl, // 'zzz1'
Script.TagMirror, // 'zzz2'
};
internal const ScriptTags TagDigit = (ScriptTags)0x307a7a7a; // 'zzz0'
internal const ScriptTags TagControl = (ScriptTags)0x317a7a7a; // 'zzz1'
internal const ScriptTags TagMirror = (ScriptTags)0x327a7a7a; // 'zzz2'
internal static readonly ScriptFlags[] Flags = new ScriptFlags[]
{
/* Default */ ScriptFlags.None,
/* Arabic */ ScriptFlags.None,
/* Armenian */ ScriptFlags.None,
/* Bengali */ ScriptFlags.NeedsCaretInfo,
/* Bopomofo */ ScriptFlags.None,
/* Braille */ ScriptFlags.None,
/* Buginese */ ScriptFlags.NeedsCaretInfo,
/* Buhid */ ScriptFlags.None,
/* CanadianSyllabics */ ScriptFlags.None,
/* Cherokee */ ScriptFlags.None,
/* CJKIdeographic */ ScriptFlags.None,
/* Coptic */ ScriptFlags.None,
/* CypriotSyllabary */ ScriptFlags.None,
/* Cyrillic */ ScriptFlags.None,
/* Deseret */ ScriptFlags.None,
/* Devanagari */ ScriptFlags.NeedsCaretInfo,
/* Ethiopic */ ScriptFlags.None,
/* Georgian */ ScriptFlags.None,
/* Glagolitic */ ScriptFlags.None,
/* Gothic */ ScriptFlags.None,
/* Greek */ ScriptFlags.None,
/* Gujarati */ ScriptFlags.NeedsCaretInfo,
/* Gurmukhi */ ScriptFlags.NeedsCaretInfo,
/* Hangul */ ScriptFlags.NeedsCaretInfo,
/* Hanunoo */ ScriptFlags.None,
/* Hebrew */ ScriptFlags.NeedsCaretInfo,
/* Kannada */ ScriptFlags.NeedsCaretInfo,
/* Kana */ ScriptFlags.None,
/* Kharoshthi */ ScriptFlags.NeedsCaretInfo,
/* Khmer */ ScriptFlags.NeedsCaretInfo,
/* Lao */ ScriptFlags.NeedsCaretInfo,
/* Latin */ ScriptFlags.None,
/* Limbu */ ScriptFlags.NeedsCaretInfo,
/* LinearB */ ScriptFlags.None,
/* Malayalam */ ScriptFlags.NeedsCaretInfo,
/* MathematicalAlphanumericSymbols */ ScriptFlags.None,
/* Mongolian */ ScriptFlags.NeedsCaretInfo,
/* MusicalSymbols */ ScriptFlags.None,
/* Myanmar */ ScriptFlags.NeedsCaretInfo,
/* NewTaiLue */ ScriptFlags.NeedsCaretInfo,
/* Ogham */ ScriptFlags.None,
/* OldItalic */ ScriptFlags.None,
/* OldPersianCuneiform */ ScriptFlags.None,
/* Oriya */ ScriptFlags.NeedsCaretInfo,
/* Osmanya */ ScriptFlags.None,
/* Runic */ ScriptFlags.None,
/* Shavian */ ScriptFlags.None,
/* Sinhala */ ScriptFlags.NeedsCaretInfo,
/* SylotiNagri */ ScriptFlags.NeedsCaretInfo,
/* Syriac */ ScriptFlags.None,
/* Tagalog */ ScriptFlags.None,
/* Tagbanwa */ ScriptFlags.None,
/* TaiLe */ ScriptFlags.None,
/* Tamil */ ScriptFlags.NeedsCaretInfo,
/* Telugu */ ScriptFlags.NeedsCaretInfo,
/* Thaana */ ScriptFlags.NeedsCaretInfo,
/* Thai */ ScriptFlags.NeedsCaretInfo,
/* Tibetan */ ScriptFlags.NeedsCaretInfo,
/* Tifinagh */ ScriptFlags.None,
/* UgariticCuneiform */ ScriptFlags.None,
/* Yi */ ScriptFlags.None,
/* Digit */ ScriptFlags.None,
/* Control */ ScriptFlags.None,
/* Mirror */ ScriptFlags.None,
};
}
///
/// Script-specific flags
///
[Flags]
internal enum ScriptFlags : ushort
{
None = 0,
NeedsCaretInfo = 1, // Requires complex caret restriction
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GC.cs
- EventProperty.cs
- VersionedStream.cs
- QueryStringParameter.cs
- SignatureDescription.cs
- HttpCachePolicy.cs
- DependencyPropertyAttribute.cs
- basevalidator.cs
- ServicePrincipalNameElement.cs
- Point.cs
- DataGridViewControlCollection.cs
- Clock.cs
- SQLSingleStorage.cs
- ProgressBarBrushConverter.cs
- TagNameToTypeMapper.cs
- PhysicalAddress.cs
- DataGridRowHeader.cs
- TableFieldsEditor.cs
- Blend.cs
- NativeWrapper.cs
- Misc.cs
- SweepDirectionValidation.cs
- SizeAnimation.cs
- x509utils.cs
- XmlNavigatorFilter.cs
- RangeValuePattern.cs
- NTAccount.cs
- SystemInfo.cs
- ButtonColumn.cs
- SqlBulkCopy.cs
- DataBoundControlAdapter.cs
- HtmlEmptyTagControlBuilder.cs
- RenderDataDrawingContext.cs
- UserControlFileEditor.cs
- AttributedMetaModel.cs
- TextFormatterImp.cs
- _UriSyntax.cs
- ExpressionWriter.cs
- RewritingValidator.cs
- SingleSelectRootGridEntry.cs
- SchemaImporterExtensionElementCollection.cs
- ProxyHwnd.cs
- EntityRecordInfo.cs
- XmlSchemaSimpleType.cs
- _BufferOffsetSize.cs
- ActivityCodeDomReferenceService.cs
- EncoderBestFitFallback.cs
- Sql8ConformanceChecker.cs
- ObjectCloneHelper.cs
- WindowsPrincipal.cs
- ValidationRuleCollection.cs
- EmptyEnumerator.cs
- DeviceSpecificDialogCachedState.cs
- Stack.cs
- TemplateParser.cs
- XmlWrappingReader.cs
- ViewBox.cs
- CategoryNameCollection.cs
- ElementHostPropertyMap.cs
- WinInet.cs
- SerialPinChanges.cs
- SelectionRangeConverter.cs
- cookiecollection.cs
- QueryContinueDragEvent.cs
- XmlNodeChangedEventManager.cs
- BoolLiteral.cs
- MainMenu.cs
- DataGridViewEditingControlShowingEventArgs.cs
- EdmEntityTypeAttribute.cs
- ActiveXContainer.cs
- basenumberconverter.cs
- SemanticResolver.cs
- XPathDocumentNavigator.cs
- DbCommandDefinition.cs
- AliasGenerator.cs
- DataStreamFromComStream.cs
- SqlFacetAttribute.cs
- StyleXamlTreeBuilder.cs
- DispatcherExceptionFilterEventArgs.cs
- OleDbRowUpdatedEvent.cs
- QilVisitor.cs
- TypeDelegator.cs
- VerticalConnector.xaml.cs
- PropertyDescriptors.cs
- XmlDictionaryReader.cs
- PrincipalPermissionMode.cs
- ProtocolsConfiguration.cs
- XmlWriterSettings.cs
- UpdateManifestForBrowserApplication.cs
- DSASignatureFormatter.cs
- SqlServer2KCompatibilityAnnotation.cs
- BeginEvent.cs
- HierarchicalDataSourceConverter.cs
- HtmlToClrEventProxy.cs
- DeferredSelectedIndexReference.cs
- FixedPage.cs
- GenericAuthenticationEventArgs.cs
- DataSourceGeneratorException.cs
- VirtualPathProvider.cs
- SerializationUtilities.cs