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
- MeasureData.cs
- HiddenField.cs
- TreeNodeClickEventArgs.cs
- PowerStatus.cs
- ElementHostPropertyMap.cs
- CreateUserWizardStep.cs
- BaseConfigurationRecord.cs
- DataListItemEventArgs.cs
- DbDataRecord.cs
- StylusButtonCollection.cs
- InvalidEnumArgumentException.cs
- XmlDocument.cs
- WebEventTraceProvider.cs
- ScriptReferenceEventArgs.cs
- PropertyDescriptorCollection.cs
- CalendarDesigner.cs
- ResourceKey.cs
- ConnectionOrientedTransportElement.cs
- OdbcConnectionOpen.cs
- HtmlWindowCollection.cs
- AssemblyHash.cs
- MailMessage.cs
- ObjectCloneHelper.cs
- SqlInternalConnectionTds.cs
- SortQuery.cs
- ListGeneralPage.cs
- Int32KeyFrameCollection.cs
- RelatedImageListAttribute.cs
- __TransparentProxy.cs
- TypeSystem.cs
- DataObjectCopyingEventArgs.cs
- Process.cs
- TypefaceMap.cs
- FrugalList.cs
- TemplateEditingFrame.cs
- SapiGrammar.cs
- ChannelCredentials.cs
- TypeDelegator.cs
- StateDesigner.TransitionInfo.cs
- WindowAutomationPeer.cs
- ContentDisposition.cs
- TaiwanCalendar.cs
- RuleSettings.cs
- LayoutEditorPart.cs
- TwoPhaseCommit.cs
- SafeEventLogReadHandle.cs
- EncoderExceptionFallback.cs
- DataTrigger.cs
- FillBehavior.cs
- DataServices.cs
- EventOpcode.cs
- RSAProtectedConfigurationProvider.cs
- TargetParameterCountException.cs
- Substitution.cs
- ScrollChrome.cs
- DbProviderFactoriesConfigurationHandler.cs
- DelayDesigner.cs
- AcceptorSessionSymmetricMessageSecurityProtocol.cs
- PersonalizationStateInfoCollection.cs
- Converter.cs
- Binding.cs
- XMLSchema.cs
- ResXBuildProvider.cs
- BooleanFunctions.cs
- CompatibleComparer.cs
- ParsedRoute.cs
- HttpPostedFileBase.cs
- ComEventsInfo.cs
- ObjectListFieldsPage.cs
- ConsoleTraceListener.cs
- Pen.cs
- DefaultCommandConverter.cs
- WindowsFont.cs
- MessageBox.cs
- PostBackOptions.cs
- Annotation.cs
- OdbcConnectionStringbuilder.cs
- Publisher.cs
- WpfXamlMember.cs
- MailWebEventProvider.cs
- EventPropertyMap.cs
- QilIterator.cs
- ObjectDataSource.cs
- TimelineGroup.cs
- ComponentSerializationService.cs
- TextEditor.cs
- ComboBox.cs
- Style.cs
- BrushConverter.cs
- MSAAWinEventWrap.cs
- PaintValueEventArgs.cs
- RoleManagerEventArgs.cs
- InvalidPrinterException.cs
- SqlDataSourceEnumerator.cs
- Context.cs
- IItemProperties.cs
- NestedContainer.cs
- MultiBinding.cs
- SerializationException.cs
- EntityStoreSchemaGenerator.cs