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
- GridViewHeaderRowPresenter.cs
- RawStylusInput.cs
- ProfilePropertyMetadata.cs
- SelectionItemPattern.cs
- SemaphoreFullException.cs
- HttpValueCollection.cs
- _CookieModule.cs
- HttpListenerRequest.cs
- RSAPKCS1SignatureFormatter.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ObjectKeyFrameCollection.cs
- InvalidPrinterException.cs
- OdbcEnvironment.cs
- LogSwitch.cs
- DbConnectionStringCommon.cs
- DigitShape.cs
- XmlObjectSerializerContext.cs
- SafeMarshalContext.cs
- DefaultBindingPropertyAttribute.cs
- PaperSize.cs
- DirectoryRedirect.cs
- MatrixAnimationUsingPath.cs
- AuthenticationModuleElementCollection.cs
- ConfigurationSettings.cs
- EntityTypeBase.cs
- FilePrompt.cs
- DesignerAttribute.cs
- HeaderUtility.cs
- ScopedMessagePartSpecification.cs
- ApplicationManager.cs
- UnknownWrapper.cs
- MeshGeometry3D.cs
- DbParameterHelper.cs
- KeyPressEvent.cs
- TypeSystem.cs
- DecimalConstantAttribute.cs
- HttpRequestWrapper.cs
- MulticastNotSupportedException.cs
- Completion.cs
- DbProviderFactories.cs
- HttpModulesSection.cs
- ProviderConnectionPoint.cs
- PageClientProxyGenerator.cs
- InitializerFacet.cs
- ExtensionSurface.cs
- IntranetCredentialPolicy.cs
- RegexGroup.cs
- Html32TextWriter.cs
- SerializableAttribute.cs
- FieldAccessException.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- RegistryConfigurationProvider.cs
- FreeFormDesigner.cs
- TraceRecords.cs
- KerberosTicketHashIdentifierClause.cs
- MetadataSource.cs
- DateTimeOffset.cs
- FixedSOMTextRun.cs
- HMACSHA1.cs
- InstanceDataCollectionCollection.cs
- DesignerTransactionCloseEvent.cs
- Line.cs
- EastAsianLunisolarCalendar.cs
- BindingMAnagerBase.cs
- Int16Animation.cs
- CustomAttribute.cs
- MediaTimeline.cs
- ComponentChangedEvent.cs
- DetailsViewModeEventArgs.cs
- Dispatcher.cs
- ScriptManager.cs
- FileUtil.cs
- ToolStripComboBox.cs
- InvalidDocumentContentsException.cs
- SqlXml.cs
- Switch.cs
- AddValidationError.cs
- SymbolDocumentGenerator.cs
- AutomationFocusChangedEventArgs.cs
- TreeViewAutomationPeer.cs
- WindowsScroll.cs
- EntityDataSourceChangingEventArgs.cs
- DataGridViewCellFormattingEventArgs.cs
- GuidTagList.cs
- EncryptedPackage.cs
- WpfKnownTypeInvoker.cs
- ListViewGroup.cs
- OleDbPermission.cs
- OdbcConnectionFactory.cs
- FormViewUpdatedEventArgs.cs
- Application.cs
- SecurityTokenSerializer.cs
- AdornerHitTestResult.cs
- RemoteArgument.cs
- ResourceReferenceExpression.cs
- ToolStripContainerActionList.cs
- OrderingQueryOperator.cs
- RangeValuePattern.cs
- XmlIncludeAttribute.cs
- StrokeNode.cs