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
- XmlSignatureManifest.cs
- _WinHttpWebProxyDataBuilder.cs
- PolygonHotSpot.cs
- SmiEventSink_DeferedProcessing.cs
- _BufferOffsetSize.cs
- ArrayExtension.cs
- MailMessageEventArgs.cs
- webeventbuffer.cs
- HostedBindingBehavior.cs
- RoleGroupCollection.cs
- String.cs
- Repeater.cs
- X509RecipientCertificateClientElement.cs
- mediaclock.cs
- PropertyDescriptor.cs
- DeploymentSectionCache.cs
- GACMembershipCondition.cs
- RSAPKCS1SignatureDeformatter.cs
- Wow64ConfigurationLoader.cs
- CompilerGlobalScopeAttribute.cs
- PatternMatchRules.cs
- EntityAdapter.cs
- InputLanguageManager.cs
- ClientBuildManager.cs
- PrivateFontCollection.cs
- MatrixTransform3D.cs
- ColorMap.cs
- SQLInt64.cs
- ItemCollection.cs
- ToolStripMenuItemDesigner.cs
- ImageCodecInfoPrivate.cs
- Guid.cs
- WebPartAuthorizationEventArgs.cs
- BuildResult.cs
- TextAnchor.cs
- LogicalExpr.cs
- PartBasedPackageProperties.cs
- InputBindingCollection.cs
- SqlSupersetValidator.cs
- DrawListViewSubItemEventArgs.cs
- RsaSecurityTokenParameters.cs
- StatusBarAutomationPeer.cs
- XmlQueryCardinality.cs
- XPathArrayIterator.cs
- ReachBasicContext.cs
- SID.cs
- ComponentCommands.cs
- ChtmlCommandAdapter.cs
- AxHost.cs
- mediaclock.cs
- FtpRequestCacheValidator.cs
- XamlInt32CollectionSerializer.cs
- MouseButtonEventArgs.cs
- HttpProfileGroupBase.cs
- RoleBoolean.cs
- CodeConditionStatement.cs
- PropertyItem.cs
- ReflectionPermission.cs
- DataServiceClientException.cs
- EntityDataSourceDataSelection.cs
- ToolStripDropDownClosingEventArgs.cs
- InkCollectionBehavior.cs
- ConsoleCancelEventArgs.cs
- ContentType.cs
- WinFormsComponentEditor.cs
- TableItemPattern.cs
- FileDialog.cs
- MorphHelper.cs
- ObjectDataSourceDisposingEventArgs.cs
- ThrowHelper.cs
- WebPartMovingEventArgs.cs
- MetabaseSettingsIis7.cs
- ResXFileRef.cs
- ToolStripDropDownMenu.cs
- ApplicationProxyInternal.cs
- DetailsViewDesigner.cs
- Camera.cs
- DataBoundLiteralControl.cs
- PropertyItem.cs
- TagElement.cs
- PrintController.cs
- Light.cs
- VectorKeyFrameCollection.cs
- PropertyNames.cs
- HtmlInputReset.cs
- MultiTargetingUtil.cs
- Ports.cs
- TaskFormBase.cs
- DbConnectionPoolIdentity.cs
- AttachmentCollection.cs
- AttachedAnnotation.cs
- ReachFixedPageSerializerAsync.cs
- SqlStatistics.cs
- Win32SafeHandles.cs
- ConfigurationElement.cs
- FileSystemInfo.cs
- TextRenderer.cs
- ServiceModelEnumValidator.cs
- Compiler.cs
- WebConfigurationHost.cs