Code:
/ 4.0 / 4.0 / untmp / 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 IDictionary ConstructFaceNamesByStyleWeightStretch(
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
- ModuleBuilderData.cs
- AsnEncodedData.cs
- PathData.cs
- Subtree.cs
- DateTimeStorage.cs
- nulltextnavigator.cs
- PipeSecurity.cs
- RegexCompiler.cs
- CodeBlockBuilder.cs
- TcpTransportBindingElement.cs
- HitTestParameters.cs
- HandledEventArgs.cs
- CornerRadius.cs
- TemplateControl.cs
- XmlNotation.cs
- AuthenticationConfig.cs
- VisualStyleElement.cs
- RecordsAffectedEventArgs.cs
- WebPartMenuStyle.cs
- ComPlusServiceLoader.cs
- ThreadInterruptedException.cs
- XmlElementAttributes.cs
- FontUnitConverter.cs
- SelfIssuedAuthProofToken.cs
- AlphabeticalEnumConverter.cs
- NonValidatingSecurityTokenAuthenticator.cs
- Item.cs
- TypeBuilder.cs
- Int16Converter.cs
- CollectionBuilder.cs
- TickBar.cs
- SystemBrushes.cs
- PerspectiveCamera.cs
- HitTestDrawingContextWalker.cs
- DeploymentExceptionMapper.cs
- RegexFCD.cs
- MainMenu.cs
- controlskin.cs
- DataStorage.cs
- ResourceExpression.cs
- BevelBitmapEffect.cs
- BigInt.cs
- ControlCollection.cs
- AspProxy.cs
- EdmItemError.cs
- MSAAWinEventWrap.cs
- WebPartHeaderCloseVerb.cs
- CalendarDataBindingHandler.cs
- SchemaAttDef.cs
- Schema.cs
- LostFocusEventManager.cs
- CacheSection.cs
- SecurityContextTokenCache.cs
- XmlJsonReader.cs
- CompositeControl.cs
- SqlCharStream.cs
- XmlnsDictionary.cs
- TypeDelegator.cs
- HebrewNumber.cs
- Stackframe.cs
- BigIntegerStorage.cs
- TrackingCondition.cs
- EndpointAddressMessageFilter.cs
- OdbcFactory.cs
- GetPageNumberCompletedEventArgs.cs
- XmlElementList.cs
- UnaryNode.cs
- Label.cs
- DockPattern.cs
- TransformerInfo.cs
- ActiveXHost.cs
- PropertyNames.cs
- IISUnsafeMethods.cs
- PointCollectionConverter.cs
- indexingfiltermarshaler.cs
- RegexWriter.cs
- Logging.cs
- SymbolType.cs
- ColumnResizeUndoUnit.cs
- FragmentQueryProcessor.cs
- GraphicsState.cs
- ScrollItemPattern.cs
- NativeMethods.cs
- TileModeValidation.cs
- TabControl.cs
- SettingsProviderCollection.cs
- WindowAutomationPeer.cs
- ToolTip.cs
- DbDataReader.cs
- DataTableMappingCollection.cs
- ThreadExceptionDialog.cs
- ValidationErrorEventArgs.cs
- DeploymentSection.cs
- InputReport.cs
- ComPlusTypeValidator.cs
- DiscoveryReference.cs
- LocalizableAttribute.cs
- ContractBase.cs
- SamlDelegatingWriter.cs
- SharingService.cs