Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / Shaping / DigitShape.cs / 1 / DigitShape.cs
//+------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2001 // // File: DigitShape.cs // // Contents: DIgits shaping engine // // Contact: [....] // // Created: 10-27-2005 // //----------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using MS.Internal.FontCache; using MS.Internal.FontFace; using MS.Internal.TextFormatting; using System.Security; using System.Security.Permissions; using MS.Internal.PresentationCore; using System.Windows.Media; using System.Windows.Media.TextFormatting; namespace MS.Internal.Shaping { ////// Default implementation of digit shape /// ////// All items containing digit come here. The shape of the digit is /// dictated by the specified language. /// internal class DigitShape : BaseShape { // // required positioning features // protected static readonly Feature[] _digitPositioningFeatures = new Feature[] { new Feature(0,ushort.MaxValue,(uint)FeatureTags.Kerning,1) }; internal DigitShape() { } public override ScriptTags[] SupportedScripts { get { return new ScriptTags[]{ Script.TagDigit }; } } ////// DigitShape.GetGlyphs /// helper for the IShaper method. The function call is used to /// shape the Latin unicode characters. /// /// shaping currentRun /// Text item ///number of glyphs ////// Critical - calls critical code, uses unsafe accessors /// [SecurityCritical] unsafe protected override int GetGlyphs ( ref ShapingWorkspace currentRun, Item item ) { DigitMap digitMap = new DigitMap(item.DigitCulture); char currChar; while (currentRun.GetNextChar (out currChar)) { char digitChar = (char)digitMap[currChar]; currentRun.SetGlyphPropertiesUsingChar( CharShapeInfo.IsStartOfCluster, digitChar); // If no glyph, perhaps we have a second choice. if (currentRun.CurrentGlyph == 0) { digitChar = (char)DigitMap.GetFallbackCharacter(digitChar); if (digitChar != 0) { currentRun.CurrentGlyph = currentRun.CharConverter.ToGlyph(digitChar); } } } return currentRun.GlyphsCount; } ////// DigitShape.InitializeFontClient -IShaper methods helper. /// ////// This function is called from GetGlyphs and GetGlyphPlacements /// (IShaper methods) to do the necessary shaper initialization /// ////// Critical - this method calls critical methods. /// Safe - this method doesn't expose anything unsafe to the world. /// [SecurityCritical, SecurityTreatAsSafe] protected override ShaperFontClient InitializeFontClient ( Item item, CultureInfo culture, GlyphTypeface fontFace, OpenTypeTags featureType, object shapeFontInfo ) { Item digitItem = item; ShaperFontClient fontClient = shapeFontInfo as ShaperFontClient; if ( fontClient != null ) { ScriptTags scriptTag = ScriptTags.Latin; // use Latin script for digits if (OpenTypeLayout.FindScript(fontClient,(uint)scriptTag) != TagInfoFlags.None) { fontClient.IsScriptSupportedByFont = true; digitItem = new Item(ScriptID.Latin, item.Flags); digitItem.DigitCulture = item.DigitCulture; } } return base.InitializeFontClient ( digitItem, culture, fontFace, featureType, fontClient ); } ////// DigitShape.OnLoadFont - IShapingEngine method override. /// ////// We override the base implementation because this shaper /// has work to do regardless of the script. /// /// Script of interest. /// Font face being loaded /// always returns null ///True if font supports script. ////// Critical - This method reads into raw font table bits. /// Safe - This method doesn't expose any critical data. /// [SecurityCritical, SecurityTreatAsSafe] public override bool OnLoadFont( ScriptTags scriptTag, GlyphTypeface fontFace, out object shapeState ) { // create the font client for this font/script ShaperFontClient fontClient = new ShaperFontClient( fontFace ); // Now check if script support does exist in font if (OpenTypeLayout.FindScript(fontClient,(uint)scriptTag) != TagInfoFlags.None) { fontClient.IsScriptSupportedByFont = true; } shapeState = fontClient; return true; } } } // 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
- XmlChoiceIdentifierAttribute.cs
- PolygonHotSpot.cs
- ReadOnlyHierarchicalDataSource.cs
- DelegatedStream.cs
- RewritingPass.cs
- RepeatButtonAutomationPeer.cs
- ScriptBehaviorDescriptor.cs
- IncrementalCompileAnalyzer.cs
- TableSectionStyle.cs
- DependencyObjectValidator.cs
- Atom10FormatterFactory.cs
- ToolStripManager.cs
- UnsafeNativeMethods.cs
- FileReader.cs
- BrowserCapabilitiesFactory.cs
- ServicePoint.cs
- Listbox.cs
- TemplateModeChangedEventArgs.cs
- CustomExpression.cs
- X509ServiceCertificateAuthenticationElement.cs
- DataGridViewRowConverter.cs
- PathData.cs
- ServiceModelStringsVersion1.cs
- ActionFrame.cs
- CompiledRegexRunner.cs
- DataGridViewTextBoxEditingControl.cs
- RectangleGeometry.cs
- BoolLiteral.cs
- ScaleTransform3D.cs
- WebServiceMethodData.cs
- ToolStripProgressBar.cs
- EqualityArray.cs
- SQLChars.cs
- TransactionFlowOption.cs
- Transform3D.cs
- SvcFileManager.cs
- LabelEditEvent.cs
- VarInfo.cs
- InternalConfigConfigurationFactory.cs
- LinearGradientBrush.cs
- MethodImplAttribute.cs
- DataFormats.cs
- DeflateStream.cs
- ImageCodecInfoPrivate.cs
- CachedTypeface.cs
- GacUtil.cs
- CssClassPropertyAttribute.cs
- ApplicationSettingsBase.cs
- DoubleLinkList.cs
- BitmapFrame.cs
- DependencyPropertyHelper.cs
- Attribute.cs
- TreeViewEvent.cs
- DataSourceConverter.cs
- MouseGesture.cs
- GlobalAclOperationRequirement.cs
- SystemIcmpV6Statistics.cs
- MsmqTransportElement.cs
- TreeNodeStyle.cs
- COM2IPerPropertyBrowsingHandler.cs
- PersonalizableAttribute.cs
- RuleRef.cs
- ManipulationVelocities.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- RuntimeConfigLKG.cs
- PEFileReader.cs
- SingleQueryOperator.cs
- FloaterBaseParagraph.cs
- XPathChildIterator.cs
- ActiveDesignSurfaceEvent.cs
- StreamResourceInfo.cs
- ClientBuildManagerCallback.cs
- TableRow.cs
- Polygon.cs
- CqlLexer.cs
- QueryStringConverter.cs
- SoapAttributeAttribute.cs
- WebSysDescriptionAttribute.cs
- MaskInputRejectedEventArgs.cs
- BaseCAMarshaler.cs
- basecomparevalidator.cs
- Line.cs
- ParamArrayAttribute.cs
- StringFormat.cs
- DataGridViewAdvancedBorderStyle.cs
- AttributeInfo.cs
- TCEAdapterGenerator.cs
- FocusTracker.cs
- ResourceDictionary.cs
- ProcessHostFactoryHelper.cs
- XmlILOptimizerVisitor.cs
- DataSetViewSchema.cs
- RequestUriProcessor.cs
- SmiRecordBuffer.cs
- TransactionState.cs
- OperationResponse.cs
- _UncName.cs
- PathGeometry.cs
- SqlErrorCollection.cs
- relpropertyhelper.cs