Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / FontEmbeddingManager.cs / 1305600 / FontEmbeddingManager.cs
//---------------------------------------------------------------------------- // //// Copyright (c) Microsoft Corporation. All rights reserved. // // // // Description: The FontEmbeddingManager class handles physical and composite font embedding. // // See spec at http://avalon/text/DesignDocsAndSpecs/Font%20embedding%20APIs.htm // // // History: // 01/27/2004 : mleonov - 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ResolveMatchesApril2005.cs
- ProtectedConfigurationSection.cs
- StringConverter.cs
- DateTimeOffsetConverter.cs
- CompilerWrapper.cs
- DynamicILGenerator.cs
- SizeAnimationBase.cs
- versioninfo.cs
- SocketAddress.cs
- MultiView.cs
- WSHttpSecurity.cs
- CollectionConverter.cs
- NetTcpSectionData.cs
- ColorAnimation.cs
- WebPartDisplayModeEventArgs.cs
- QilParameter.cs
- CodeCatchClauseCollection.cs
- RectangleHotSpot.cs
- DPCustomTypeDescriptor.cs
- RegexCompiler.cs
- WebZone.cs
- TypeDescriptorFilterService.cs
- TabControlCancelEvent.cs
- TimeStampChecker.cs
- ProcessModelInfo.cs
- WmlMobileTextWriter.cs
- TransportContext.cs
- XmlnsPrefixAttribute.cs
- TypeExtension.cs
- BitmapEffectDrawingContextWalker.cs
- JumpPath.cs
- ClonableStack.cs
- WebMessageFormatHelper.cs
- AnnotationDocumentPaginator.cs
- CodeSnippetCompileUnit.cs
- XMLDiffLoader.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- Bits.cs
- TypedTableBase.cs
- BitmapEffectDrawingContextState.cs
- HttpCookieCollection.cs
- DockProviderWrapper.cs
- XMLUtil.cs
- URLIdentityPermission.cs
- ArraySegment.cs
- MyContact.cs
- WebServiceClientProxyGenerator.cs
- ExceptionUtil.cs
- SourceFileBuildProvider.cs
- ResourceType.cs
- GeometryModel3D.cs
- StringComparer.cs
- ImageMetadata.cs
- BitmapEffectDrawing.cs
- SignatureHelper.cs
- OpacityConverter.cs
- ValidationSummary.cs
- Label.cs
- SQLInt32.cs
- Property.cs
- Dispatcher.cs
- LogLogRecordEnumerator.cs
- KnownBoxes.cs
- ParameterBuilder.cs
- TablePattern.cs
- SystemMulticastIPAddressInformation.cs
- BrushMappingModeValidation.cs
- Point4D.cs
- FormattedTextSymbols.cs
- OutputScope.cs
- RenderingEventArgs.cs
- IncrementalCompileAnalyzer.cs
- CodeEventReferenceExpression.cs
- BitmapScalingModeValidation.cs
- UserControlBuildProvider.cs
- MasterPageParser.cs
- TransportChannelFactory.cs
- LiteralText.cs
- TileBrush.cs
- TreeViewCancelEvent.cs
- LowerCaseStringConverter.cs
- SectionInput.cs
- TypeLoadException.cs
- CompModSwitches.cs
- DataGridItem.cs
- UpDownEvent.cs
- CodeSnippetCompileUnit.cs
- DocumentAutomationPeer.cs
- StringSource.cs
- latinshape.cs
- EntitySet.cs
- PersonalizationProviderCollection.cs
- ScriptResourceHandler.cs
- ContextProperty.cs
- ExtensionQuery.cs
- DescendantQuery.cs
- FixedDocument.cs
- TreeNodeStyleCollection.cs
- KeyValuePair.cs
- CacheMemory.cs