Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / FontFace / FontDifferentiator.cs / 1305600 / FontDifferentiator.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: FontDifferentiator class handles parsing font family and face names // and adjusting stretch, weight and style values. // // History: // 11/10/2005 : mleonov - Started integration from a prototype application created by DBrown. // 1/21/2009 : [....] - removed unused code. // //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Windows; using System.Windows.Markup; // for XmlLanguage namespace MS.Internal.FontFace { ////// FontDifferentiator class handles parsing font family and face names /// and adjusting stretch, weight and style values. /// internal static class FontDifferentiator { internal static IDictionaryConstructFaceNamesByStyleWeightStretch( FontStyle style, FontWeight weight, FontStretch stretch) { string faceName = BuildFaceName(style, weight, stretch); // Default comparer calls CultureInfo.Equals, which works for our purposes. Dictionary faceNames = new Dictionary (1); faceNames.Add(XmlLanguage.GetLanguage("en-us"), faceName); return faceNames; } private static string BuildFaceName( FontStyle fontStyle, FontWeight fontWeight, FontStretch fontStretch ) { string parsedStyleName = null; string parsedWeightName = null; string parsedStretchName = null; string regularFaceName = "Regular"; if (fontWeight != FontWeights.Normal) parsedWeightName = ((IFormattable)fontWeight).ToString(null, CultureInfo.InvariantCulture); if (fontStretch != FontStretches.Normal) parsedStretchName = ((IFormattable)fontStretch).ToString(null, CultureInfo.InvariantCulture); if (fontStyle != FontStyles.Normal) parsedStyleName = ((IFormattable)fontStyle).ToString(null, CultureInfo.InvariantCulture); // Build correct face string. // Set the initial capacity to be able to hold the word "Regular". StringBuilder faceNameBuilder = new StringBuilder(7); if (parsedStretchName != null) { faceNameBuilder.Append(parsedStretchName); } if (parsedWeightName != null) { if (faceNameBuilder.Length > 0) { faceNameBuilder.Append(" "); } faceNameBuilder.Append(parsedWeightName); } if (parsedStyleName != null) { if (faceNameBuilder.Length > 0) { faceNameBuilder.Append(" "); } faceNameBuilder.Append(parsedStyleName); } if (faceNameBuilder.Length == 0) { faceNameBuilder.Append(regularFaceName); } return faceNameBuilder.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: FontDifferentiator class handles parsing font family and face names // and adjusting stretch, weight and style values. // // History: // 11/10/2005 : mleonov - Started integration from a prototype application created by DBrown. // 1/21/2009 : [....] - removed unused code. // //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Windows; using System.Windows.Markup; // for XmlLanguage namespace MS.Internal.FontFace { /// /// FontDifferentiator class handles parsing font family and face names /// and adjusting stretch, weight and style values. /// internal static class FontDifferentiator { internal static IDictionaryConstructFaceNamesByStyleWeightStretch( FontStyle style, FontWeight weight, FontStretch stretch) { string faceName = BuildFaceName(style, weight, stretch); // Default comparer calls CultureInfo.Equals, which works for our purposes. Dictionary faceNames = new Dictionary (1); faceNames.Add(XmlLanguage.GetLanguage("en-us"), faceName); return faceNames; } private static string BuildFaceName( FontStyle fontStyle, FontWeight fontWeight, FontStretch fontStretch ) { string parsedStyleName = null; string parsedWeightName = null; string parsedStretchName = null; string regularFaceName = "Regular"; if (fontWeight != FontWeights.Normal) parsedWeightName = ((IFormattable)fontWeight).ToString(null, CultureInfo.InvariantCulture); if (fontStretch != FontStretches.Normal) parsedStretchName = ((IFormattable)fontStretch).ToString(null, CultureInfo.InvariantCulture); if (fontStyle != FontStyles.Normal) parsedStyleName = ((IFormattable)fontStyle).ToString(null, CultureInfo.InvariantCulture); // Build correct face string. // Set the initial capacity to be able to hold the word "Regular". StringBuilder faceNameBuilder = new StringBuilder(7); if (parsedStretchName != null) { faceNameBuilder.Append(parsedStretchName); } if (parsedWeightName != null) { if (faceNameBuilder.Length > 0) { faceNameBuilder.Append(" "); } faceNameBuilder.Append(parsedWeightName); } if (parsedStyleName != null) { if (faceNameBuilder.Length > 0) { faceNameBuilder.Append(" "); } faceNameBuilder.Append(parsedStyleName); } if (faceNameBuilder.Length == 0) { faceNameBuilder.Append(regularFaceName); } return faceNameBuilder.ToString(); } } } // 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
- ListBox.cs
- VBIdentifierDesigner.xaml.cs
- RelatedPropertyManager.cs
- ToolStripDesignerAvailabilityAttribute.cs
- ImageSource.cs
- CallbackValidatorAttribute.cs
- RightsManagementEncryptionTransform.cs
- RowsCopiedEventArgs.cs
- RichTextBox.cs
- XmlEnumAttribute.cs
- glyphs.cs
- ListViewGroupConverter.cs
- ErrorRuntimeConfig.cs
- QueryCursorEventArgs.cs
- WebPartManager.cs
- CodeExpressionRuleDeclaration.cs
- AspNetSynchronizationContext.cs
- RegularExpressionValidator.cs
- webclient.cs
- QueryableFilterUserControl.cs
- coordinatorfactory.cs
- ToolboxSnapDragDropEventArgs.cs
- CustomAttribute.cs
- NCryptNative.cs
- CodeExporter.cs
- ReaderWriterLock.cs
- MouseEventArgs.cs
- DetailsView.cs
- DataMemberFieldEditor.cs
- SR.cs
- ReadOnlyMetadataCollection.cs
- RegexGroup.cs
- WebPartConnectionsConfigureVerb.cs
- Function.cs
- ContextStack.cs
- WebDescriptionAttribute.cs
- Page.cs
- ScriptComponentDescriptor.cs
- Int32.cs
- CompatibleComparer.cs
- TreeViewDataItemAutomationPeer.cs
- ExceptionRoutedEventArgs.cs
- SBCSCodePageEncoding.cs
- GroupByExpressionRewriter.cs
- GenerateScriptTypeAttribute.cs
- TextEndOfParagraph.cs
- WebScriptMetadataMessage.cs
- ItemCheckEvent.cs
- SerializerDescriptor.cs
- ReturnType.cs
- CopyOfAction.cs
- CapabilitiesAssignment.cs
- VectorCollectionValueSerializer.cs
- XXXOnTypeBuilderInstantiation.cs
- JavaScriptString.cs
- PeerServiceMessageContracts.cs
- M3DUtil.cs
- SpecularMaterial.cs
- Point3DCollectionValueSerializer.cs
- ClientSideProviderDescription.cs
- Drawing.cs
- FullTextLine.cs
- Geometry3D.cs
- ExtensionSimplifierMarkupObject.cs
- ACL.cs
- DataGridViewControlCollection.cs
- TabControl.cs
- ObjectDataSourceDisposingEventArgs.cs
- Int32Rect.cs
- WebPartConnectionCollection.cs
- SqlFacetAttribute.cs
- EventLogPermissionEntryCollection.cs
- CharacterHit.cs
- EventLogPermission.cs
- RefreshPropertiesAttribute.cs
- SerialReceived.cs
- EncodingTable.cs
- Dictionary.cs
- FlowPosition.cs
- RequestCachingSection.cs
- Base64Encoding.cs
- UnmanagedBitmapWrapper.cs
- DbInsertCommandTree.cs
- HttpConfigurationContext.cs
- SBCSCodePageEncoding.cs
- ObjectListFieldCollection.cs
- SystemIcons.cs
- DaylightTime.cs
- ping.cs
- InvalidProgramException.cs
- BuildManagerHost.cs
- Point4DConverter.cs
- DictionaryContent.cs
- AutomationEventArgs.cs
- ResourceBinder.cs
- WindowsListViewItem.cs
- regiisutil.cs
- Journal.cs
- WebPartTracker.cs
- GPRECTF.cs