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
- RelationshipEndMember.cs
- CommentEmitter.cs
- Int32Rect.cs
- DataViewSetting.cs
- TransformCryptoHandle.cs
- AtomMaterializerLog.cs
- XmlSchemaIdentityConstraint.cs
- BamlWriter.cs
- AsyncOperation.cs
- TabControl.cs
- ServiceContractAttribute.cs
- PrinterSettings.cs
- MonthCalendar.cs
- ArrayWithOffset.cs
- SystemIPGlobalStatistics.cs
- ConnectionPool.cs
- _NetRes.cs
- FaultReason.cs
- TemplateEditingService.cs
- BasicBrowserDialog.designer.cs
- PerfCounterSection.cs
- ScrollContentPresenter.cs
- TimeStampChecker.cs
- TimeSpanStorage.cs
- HtmlLinkAdapter.cs
- NetworkStream.cs
- WebPartTransformer.cs
- RawAppCommandInputReport.cs
- SchemaType.cs
- DisposableCollectionWrapper.cs
- VsPropertyGrid.cs
- ComEventsInfo.cs
- DesignParameter.cs
- MissingMemberException.cs
- QueryOutputWriter.cs
- DrawingServices.cs
- ContentWrapperAttribute.cs
- HealthMonitoringSection.cs
- ListenerConstants.cs
- ConfigurationSettings.cs
- GridItemProviderWrapper.cs
- C14NUtil.cs
- _CacheStreams.cs
- ImageListImage.cs
- WebPartsPersonalizationAuthorization.cs
- Visual3D.cs
- FacetChecker.cs
- SwitchElementsCollection.cs
- DataGridPagerStyle.cs
- DbException.cs
- OutputCacheProfileCollection.cs
- rsa.cs
- FocusTracker.cs
- ObjectAnimationUsingKeyFrames.cs
- RuntimeEnvironment.cs
- Item.cs
- AddToCollection.cs
- UriParserTemplates.cs
- BinaryExpression.cs
- ScriptModule.cs
- HtmlContainerControl.cs
- WebPartsPersonalization.cs
- StyleXamlParser.cs
- PropertyItemInternal.cs
- ToolBarButtonDesigner.cs
- KeyboardDevice.cs
- RepeatInfo.cs
- ServicePointManagerElement.cs
- Timer.cs
- HttpPostProtocolReflector.cs
- ArrayTypeMismatchException.cs
- OneWayChannelFactory.cs
- ProfileGroupSettingsCollection.cs
- TokenBasedSet.cs
- dbdatarecord.cs
- ReturnEventArgs.cs
- CompilerResults.cs
- ResXResourceReader.cs
- XamlGridLengthSerializer.cs
- CanonicalFontFamilyReference.cs
- MemberPath.cs
- HitTestFilterBehavior.cs
- ArrayHelper.cs
- DisposableCollectionWrapper.cs
- ScrollableControl.cs
- DragCompletedEventArgs.cs
- JsonByteArrayDataContract.cs
- FamilyMapCollection.cs
- OleDbStruct.cs
- QueryStoreStatusRequest.cs
- EntryPointNotFoundException.cs
- CriticalFinalizerObject.cs
- ArraySegment.cs
- ListControlDesigner.cs
- SmtpReplyReader.cs
- TraceContext.cs
- safelinkcollection.cs
- Row.cs
- TileModeValidation.cs