Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / FontEmbeddingManager.cs / 1 / FontEmbeddingManager.cs
//---------------------------------------------------------------------------- // //// Copyright (c) Microsoft Corporation. All rights reserved. // // // // Description: The FontEmbeddingManager class handles physical and composite font embedding. // // See spec at [....]/text/DesignDocsAndSpecs/Font%20embedding%20APIs.htm // // // History: // 01/27/2004 : [....] - Created // //--------------------------------------------------------------------------- using System; using System.Text; using System.IO; using System.Globalization; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows; using MS.Internal.FontCache; using MS.Internal.FontFace; using MS.Internal.Shaping; using System.Security; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; // Allow suppression of presharp warnings #pragma warning disable 1634, 1691 namespace System.Windows.Media { ////// The FontEmbeddingManager class handles physical and composite font embedding. /// public class FontEmbeddingManager { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors ////// Creates a new instance of font usage manager. /// public FontEmbeddingManager() { _collectedGlyphTypefaces = new Dictionary>(_uriComparer); } #endregion Constructors //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- #region Public Methods /// /// Collects information about glyph typeface and index used by a glyph run. /// /// Glyph run to obtain typeface and index information from. public void RecordUsage(GlyphRun glyphRun) { if (glyphRun == null) throw new ArgumentNullException("glyphRun"); // Suppress PRESharp parameter validation warning about glyphRun.GlyphTypeface because // GlyphRun.GlyphTypeface property cannot be null. #pragma warning suppress 56506 Uri glyphTypeface = glyphRun.GlyphTypeface.FontUri; DictionaryglyphSet; if (_collectedGlyphTypefaces.ContainsKey(glyphTypeface)) glyphSet = _collectedGlyphTypefaces[glyphTypeface]; else glyphSet = _collectedGlyphTypefaces[glyphTypeface] = new Dictionary (); foreach(ushort glyphIndex in glyphRun.GlyphIndices) { glyphSet[glyphIndex] = true; } } /// /// Returns the collection of glyph typefaces used by the previously added glyph runs. /// ///The collection of glyph typefaces used by the previously added glyph runs. [CLSCompliant(false)] public ICollectionGlyphTypefaceUris { get { return _collectedGlyphTypefaces.Keys; } } /// /// Obtain the list of glyphs used by the glyph typeface specified by a Uri. /// /// Specifies the Uri of a glyph typeface to obtain usage data for. ///A collection of glyph indices recorded previously. ////// Glyph typeface Uri does not point to a previously recorded glyph typeface. /// [CLSCompliant(false)] public ICollectionGetUsedGlyphs(Uri glyphTypeface) { Dictionary glyphsUsed = _collectedGlyphTypefaces[glyphTypeface]; if (glyphsUsed == null) { throw new ArgumentException(SR.Get(SRID.GlyphTypefaceNotRecorded), "glyphTypeface"); } return glyphsUsed.Keys; } #endregion Public Methods private class UriComparer : IEqualityComparer { #region IEqualityComparer Members public bool Equals(Uri x, Uri y) { // We don't use Uri.Equals because it doesn't compare Fragment parts, // and we use Fragment part to store font face index. return String.Equals(x.ToString(), y.ToString(), StringComparison.OrdinalIgnoreCase); } public int GetHashCode(Uri obj) { return obj.GetHashCode(); } #endregion } //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ #region Private Fields /// /// bool values in the dictionary don't matter, /// we'll switch to Set class when it becomes available. /// private Dictionary> _collectedGlyphTypefaces; private static UriComparer _uriComparer = new UriComparer(); #endregion Private Fields } } // 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
- AspProxy.cs
- TransformProviderWrapper.cs
- FontCollection.cs
- XsltQilFactory.cs
- SafeFileMappingHandle.cs
- StringUtil.cs
- ApplicationActivator.cs
- DateTimeSerializationSection.cs
- ReflectionServiceProvider.cs
- CqlParserHelpers.cs
- ConfigurationStrings.cs
- XamlInt32CollectionSerializer.cs
- PlanCompilerUtil.cs
- LocalizedNameDescriptionPair.cs
- Point3D.cs
- RelAssertionDirectKeyIdentifierClause.cs
- CrossContextChannel.cs
- DynamicDataExtensions.cs
- KeyInstance.cs
- SchemaNames.cs
- GridItem.cs
- HttpDebugHandler.cs
- AttachInfo.cs
- ExpandSegmentCollection.cs
- ObjectTypeMapping.cs
- EmulateRecognizeCompletedEventArgs.cs
- DynamicField.cs
- AnonymousIdentificationModule.cs
- WebPartUserCapability.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- SecurityKeyIdentifier.cs
- ExpressionEditor.cs
- PhysicalAddress.cs
- ExtendedProtectionPolicyElement.cs
- ProgressBar.cs
- ItemContainerGenerator.cs
- PolicyManager.cs
- DynamicRenderer.cs
- SetUserPreferenceRequest.cs
- VolatileEnlistmentMultiplexing.cs
- QilGenerator.cs
- PackWebResponse.cs
- Stylesheet.cs
- ProcessThreadDesigner.cs
- SqlNamer.cs
- CapabilitiesPattern.cs
- DesignerGenericWebPart.cs
- BitmapFrame.cs
- SqlStatistics.cs
- DurableOperationContext.cs
- StandardTransformFactory.cs
- Rijndael.cs
- WaitHandle.cs
- AsyncCallback.cs
- PropertyRef.cs
- StateMachine.cs
- CallbackValidator.cs
- ProcessStartInfo.cs
- DataShape.cs
- ToolboxItemCollection.cs
- ConfigurationElement.cs
- ComplusEndpointConfigContainer.cs
- OpenFileDialog.cs
- XmlSchemaParticle.cs
- DataServiceQueryContinuation.cs
- Rotation3DAnimationBase.cs
- FormView.cs
- CurrentChangedEventManager.cs
- SynchronizationScope.cs
- SchemaConstraints.cs
- CssTextWriter.cs
- CodeIndexerExpression.cs
- XmlEntity.cs
- Operators.cs
- FileSecurity.cs
- StringKeyFrameCollection.cs
- XmlWellformedWriter.cs
- ActivitiesCollection.cs
- Pens.cs
- OleDbRowUpdatedEvent.cs
- FormViewDeleteEventArgs.cs
- MailWriter.cs
- ContentElement.cs
- MappingModelBuildProvider.cs
- ScrollChrome.cs
- VirtualizedCellInfoCollection.cs
- JpegBitmapEncoder.cs
- CalloutQueueItem.cs
- XmlSchemaAnnotated.cs
- DependencyObjectPropertyDescriptor.cs
- RadioButtonFlatAdapter.cs
- XPathDocumentBuilder.cs
- Variant.cs
- RC2CryptoServiceProvider.cs
- ManipulationLogic.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DummyDataSource.cs
- RegexCompiler.cs
- ReadOnlyTernaryTree.cs
- BufferAllocator.cs