Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / 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 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. //---------------------------------------------------------------------------- // // // 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
- DocumentPaginator.cs
- EntityException.cs
- SyndicationPerson.cs
- ViewLoader.cs
- JsonCollectionDataContract.cs
- NetworkStream.cs
- XmlSchema.cs
- ProcessHost.cs
- DecimalAverageAggregationOperator.cs
- CodeIterationStatement.cs
- DataGridViewColumnHeaderCell.cs
- DBSchemaRow.cs
- OutOfMemoryException.cs
- ExpressionVisitorHelpers.cs
- AppearanceEditorPart.cs
- QueryCreatedEventArgs.cs
- TransformerConfigurationWizardBase.cs
- WorkflowNamespace.cs
- HttpCookieCollection.cs
- ImageCodecInfo.cs
- XmlStreamedByteStreamReader.cs
- OpenFileDialog.cs
- ConditionalAttribute.cs
- ObjectConverter.cs
- FreezableDefaultValueFactory.cs
- Visitors.cs
- GACIdentityPermission.cs
- ValidationError.cs
- RequiredFieldValidator.cs
- SerializerDescriptor.cs
- DataSourceExpression.cs
- DeflateEmulationStream.cs
- _CacheStreams.cs
- TraceUtils.cs
- Parallel.cs
- SafeNativeMethods.cs
- TypeContext.cs
- UdpContractFilterBehavior.cs
- SchemaCollectionCompiler.cs
- COM2ICategorizePropertiesHandler.cs
- HttpCapabilitiesSectionHandler.cs
- DbConnectionPoolGroup.cs
- linebase.cs
- DateTime.cs
- Avt.cs
- FormViewRow.cs
- SizeAnimationBase.cs
- HttpListenerResponse.cs
- ExeContext.cs
- FormsAuthentication.cs
- PlanCompilerUtil.cs
- Random.cs
- Win32MouseDevice.cs
- ControllableStoryboardAction.cs
- ListManagerBindingsCollection.cs
- ProcessHostMapPath.cs
- RichTextBox.cs
- FilteredAttributeCollection.cs
- MarkupProperty.cs
- OSFeature.cs
- TextMarkerSource.cs
- DataGridCaption.cs
- ViewCellRelation.cs
- DefaultTraceListener.cs
- IntSecurity.cs
- StringValidator.cs
- Point4DValueSerializer.cs
- BitmapCodecInfo.cs
- PropertyConverter.cs
- NoClickablePointException.cs
- ModelItemKeyValuePair.cs
- SQLGuid.cs
- Attributes.cs
- PointValueSerializer.cs
- DetailsViewRowCollection.cs
- Document.cs
- DataGridBeginningEditEventArgs.cs
- StringDictionary.cs
- ThreadPool.cs
- Utils.cs
- HtmlInputPassword.cs
- LinkUtilities.cs
- Comparer.cs
- StyleXamlParser.cs
- _NativeSSPI.cs
- TextRunProperties.cs
- securitymgrsite.cs
- MimeObjectFactory.cs
- XmlCharCheckingWriter.cs
- RemotingAttributes.cs
- Base64Stream.cs
- RTLAwareMessageBox.cs
- NonPrimarySelectionGlyph.cs
- PolicyStatement.cs
- PaperSize.cs
- _SslStream.cs
- SafeNativeMethods.cs
- EntityTemplateFactory.cs
- TreeNodeMouseHoverEvent.cs
- ObjectCloneHelper.cs