Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / Shaping / CompositeTypefaceMetrics.cs / 1 / CompositeTypefaceMetrics.cs
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2001
//
// File: CompositeTypefaceMetrics.cs
//
// Contents: Typeface metrics of a composite font
//
// Created: 5-26-2003 [....] ([....])
//
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media;
using System.Windows.Markup; // for XmlLanguage
using MS.Internal.FontFace;
using System.Globalization;
namespace MS.Internal.Shaping
{
///
/// Character-based info of a font family
///
internal class CompositeTypefaceMetrics : ITypefaceMetrics
{
private double _underlinePosition;
private double _underlineThickness;
private double _strikethroughPosition;
private double _strikethroughThickenss;
private double _capsHeight;
private double _xHeight;
private FontStyle _style;
private FontWeight _weight;
private FontStretch _stretch;
// the following figures are collected from observation of 'Times New Roman'
// at 72 pt in MS-Word. [[....], 5/26/2003]
// The following Offsets are offsets from baseline. Negative means below the baseline.
private const double UnderlineOffsetDefaultInEm = -0.15625;
private const double UnderlineSizeDefaultInEm = (-UnderlineOffsetDefaultInEm) / 2;
private const double StrikethroughOffsetDefaultInEm = 0.3125;
private const double StrikethroughSizeDefaultInEm = UnderlineSizeDefaultInEm;
private const double CapsHeightDefaultInEm = 1;
private const double XHeightDefaultInEm = 0.671875;
internal CompositeTypefaceMetrics(
double underlinePosition,
double underlineThickness,
double strikethroughPosition,
double strikethroughThickness,
double capsHeight,
double xHeight,
FontStyle style,
FontWeight weight,
FontStretch stretch
)
{
_underlinePosition = underlinePosition != 0 ? underlinePosition : UnderlineOffsetDefaultInEm;
_underlineThickness = underlineThickness > 0 ? underlineThickness : UnderlineSizeDefaultInEm;
_strikethroughPosition = strikethroughPosition != 0 ? strikethroughPosition : StrikethroughOffsetDefaultInEm;
_strikethroughThickenss = strikethroughThickness > 0 ? strikethroughThickness : StrikethroughSizeDefaultInEm;
_capsHeight = capsHeight > 0 ? capsHeight : CapsHeightDefaultInEm;
_xHeight = xHeight > 0 ? xHeight : XHeightDefaultInEm;
_style = style;
_weight = weight;
_stretch = stretch;
}
internal CompositeTypefaceMetrics()
: this(
UnderlineOffsetDefaultInEm,
UnderlineSizeDefaultInEm,
StrikethroughOffsetDefaultInEm,
StrikethroughSizeDefaultInEm,
CapsHeightDefaultInEm,
XHeightDefaultInEm,
FontStyles.Normal,
FontWeights.Regular,
FontStretches.Normal
)
{
}
///
/// (Western) x-height relative to em size.
///
public double XHeight
{
get
{
return _xHeight;
}
}
///
/// Distance from baseline to top of English capital, relative to em size.
///
public double CapsHeight
{
get
{
return _capsHeight;
}
}
///
/// Distance from baseline to underline position
///
public double UnderlinePosition
{
get
{
return _underlinePosition;
}
}
///
/// Underline thickness
///
public double UnderlineThickness
{
get
{
return _underlineThickness;
}
}
///
/// Distance from baseline to strike-through position
///
public double StrikethroughPosition
{
get
{
return _strikethroughPosition;
}
}
///
/// strike-through thickness
///
public double StrikethroughThickness
{
get
{
return _strikethroughThickenss;
}
}
///
/// Flag indicate whether this is symbol typeface
///
public bool Symbol
{
get
{
return false;
}
}
///
/// Style simulation flags for this typeface.
///
public StyleSimulations StyleSimulations
{
get
{
return StyleSimulations.None;
}
}
///
/// Collection of localized face names adjusted by the font differentiator.
///
public IDictionary AdjustedFaceNames
{
get
{
return FontDifferentiator.ConstructFaceNamesByStyleWeightStretch(_style, _weight, _stretch);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HMACRIPEMD160.cs
- ToolStripAdornerWindowService.cs
- IntSecurity.cs
- MatrixTransform3D.cs
- FtpWebRequest.cs
- XPathNavigator.cs
- InheritanceContextHelper.cs
- PcmConverter.cs
- XmlSchemaSimpleContent.cs
- TableLayoutColumnStyleCollection.cs
- CodeSubDirectory.cs
- TimeZone.cs
- ExtendedPropertyDescriptor.cs
- ServiceBusyException.cs
- entitydatasourceentitysetnameconverter.cs
- Image.cs
- Rfc2898DeriveBytes.cs
- SvcFileManager.cs
- TableLayoutRowStyleCollection.cs
- BamlTreeUpdater.cs
- SqlConnectionStringBuilder.cs
- Vector3D.cs
- Repeater.cs
- Section.cs
- InvalidEnumArgumentException.cs
- SqlCacheDependencyDatabaseCollection.cs
- TextPointer.cs
- Helpers.cs
- DropSourceBehavior.cs
- NetworkAddressChange.cs
- WebPart.cs
- ErrorEventArgs.cs
- IriParsingElement.cs
- KnownAssembliesSet.cs
- PageParser.cs
- PriorityRange.cs
- RuntimeArgumentHandle.cs
- baseaxisquery.cs
- WebPartZoneCollection.cs
- DataGridViewImageCell.cs
- StrokeSerializer.cs
- WebBrowserDocumentCompletedEventHandler.cs
- HMACSHA1.cs
- CanonicalFontFamilyReference.cs
- InvalidOleVariantTypeException.cs
- HttpListenerPrefixCollection.cs
- DataSourceXmlElementAttribute.cs
- MeshGeometry3D.cs
- DocumentAutomationPeer.cs
- ListViewDataItem.cs
- PenContexts.cs
- DataBindingCollectionEditor.cs
- UnSafeCharBuffer.cs
- WebPartDisplayModeEventArgs.cs
- AttributedMetaModel.cs
- SafeNativeMethods.cs
- WindowsSecurityToken.cs
- ErrorHandlerModule.cs
- ConnectionManagementElement.cs
- MouseOverProperty.cs
- DataGridViewAdvancedBorderStyle.cs
- Visual.cs
- CreateUserErrorEventArgs.cs
- SessionConnectionReader.cs
- AutomationPattern.cs
- CanonicalXml.cs
- ApplicationInfo.cs
- XmlEntityReference.cs
- TextBox.cs
- HijriCalendar.cs
- TextServicesHost.cs
- TemplatePropertyEntry.cs
- Int64AnimationUsingKeyFrames.cs
- ElementProxy.cs
- LogicalTreeHelper.cs
- SqlFacetAttribute.cs
- DecodeHelper.cs
- DeclaredTypeValidator.cs
- ItemsControl.cs
- BufferedWebEventProvider.cs
- ProtocolElement.cs
- Latin1Encoding.cs
- NonClientArea.cs
- LexicalChunk.cs
- ADConnectionHelper.cs
- Clause.cs
- _PooledStream.cs
- HtmlElementEventArgs.cs
- HtmlInputImage.cs
- SettingsPropertyWrongTypeException.cs
- XmlSchemaAttribute.cs
- SQLMoneyStorage.cs
- LinqDataSourceInsertEventArgs.cs
- FaultCallbackWrapper.cs
- StylusOverProperty.cs
- TableItemPatternIdentifiers.cs
- VisualStyleInformation.cs
- TemplateBindingExpressionConverter.cs
- Semaphore.cs
- ReliabilityContractAttribute.cs