Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / Shaping / GlyphingCache.cs / 1 / GlyphingCache.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: High level glyphing cache // // History: 5-19-2005 [....] created // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Windows.Media; using System.Windows.Media.TextFormatting; using MS.Internal; using MS.Internal.TextFormatting; namespace MS.Internal.Shaping { ////// GlyphingCache stores the runtime state of shaping engines and the mapping between Unicode scalar /// value and the physical font being used to display it. This class is not thread-safe. The client is /// responsible for synchronizing access from multiple threads. It is generally recommended that the client /// manages a single instance of this class per text formatting session. /// /// It currently only caches one key-value pair: /// o Typeface - TypefaceMap /// /// This pair is cached in SizeLimitedCache which implement LRU algorithm through /// a linked list. When cache is full, the least used entry in the cache will be replaced /// by the latest entry. /// internal class GlyphingCache { private SizeLimitedCache_sizeLimitedCache; private ShapingEngineManager _shapeManager; internal GlyphingCache(int capacity) { _sizeLimitedCache = new SizeLimitedCache (capacity); _shapeManager = new ShapingEngineManager(); } internal void GetShapeableText( Typeface typeface, CharacterBufferReference characterBufferReference, int stringLength, TextRunProperties textRunProperties, CultureInfo digitCulture, bool rightToLeft, IList shapeableList, IShapeableTextCollector collector ) { if (!typeface.Symbol) { Lookup(typeface).GetShapeableText( characterBufferReference, stringLength, textRunProperties, digitCulture, rightToLeft, shapeableList, collector ); } else { // It's a non-Unicode ("symbol") font, where code points have non-standard meanings. We // therefore want to bypass the usual itemization and font linking. Instead, just map // everything to the default script and first GlyphTypeface. ShapeTypeface shapeTypeface = new ShapeTypeface( _shapeManager, typeface.TryGetGlyphTypeface(), null // device font ); collector.Add( shapeableList, new CharacterBufferRange(characterBufferReference, stringLength), textRunProperties, new Item(ScriptID.Default, ItemFlags.Default), shapeTypeface, 1.0, // scale in Em false // null shape ); } } /// /// Look up the font mapping data for a typeface. /// private TypefaceMap Lookup(Typeface key) { TypefaceMap typefaceMap = _sizeLimitedCache.Get(key); if (typefaceMap == null) { typefaceMap = new TypefaceMap( key.FontFamily, key.FallbackFontFamily, key.CanonicalStyle, key.CanonicalWeight, key.CanonicalStretch, key.NullFont, _shapeManager ); _sizeLimitedCache.Add( key, typefaceMap, false // is not permanent in the cache. ); } return typefaceMap; } } } // 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
- DateTimeOffsetConverter.cs
- DetailsViewInsertEventArgs.cs
- VectorAnimationBase.cs
- MimeWriter.cs
- TempFiles.cs
- MarkupProperty.cs
- AncillaryOps.cs
- XAMLParseException.cs
- ConfigurationException.cs
- HttpWriter.cs
- ResourceDescriptionAttribute.cs
- DocumentPageHost.cs
- XmlObjectSerializerReadContext.cs
- HttpCapabilitiesSectionHandler.cs
- Control.cs
- EntityContainerEntitySet.cs
- ListBoxChrome.cs
- XmlWriterTraceListener.cs
- SystemParameters.cs
- ZipIOBlockManager.cs
- _Win32.cs
- TableSectionStyle.cs
- ScalarConstant.cs
- XmlHelper.cs
- SpeechSeg.cs
- DictionaryEntry.cs
- CompilerError.cs
- WebRequestModuleElementCollection.cs
- RemoveFromCollection.cs
- UnsafeNativeMethodsTablet.cs
- XmlILAnnotation.cs
- AssertHelper.cs
- TransactionFilter.cs
- ResourceContainer.cs
- DataMisalignedException.cs
- ErrorRuntimeConfig.cs
- CursorConverter.cs
- PrtCap_Public.cs
- PackUriHelper.cs
- OutputScopeManager.cs
- BCryptNative.cs
- ProxyWebPartManager.cs
- WindowsListViewItemStartMenu.cs
- GiveFeedbackEventArgs.cs
- PocoPropertyAccessorStrategy.cs
- SizeAnimation.cs
- SqlConnectionString.cs
- cookie.cs
- HttpException.cs
- HtmlElementCollection.cs
- DetailsView.cs
- AuthenticationModulesSection.cs
- InstanceDataCollection.cs
- PolicyUnit.cs
- MergePropertyDescriptor.cs
- ControlBindingsConverter.cs
- CircleHotSpot.cs
- ToolStripArrowRenderEventArgs.cs
- InstanceHandleReference.cs
- EntityDesignerUtils.cs
- ObjectMemberMapping.cs
- Adorner.cs
- _HeaderInfo.cs
- DocobjHost.cs
- ProcessManager.cs
- XmlTextEncoder.cs
- ToolStripManager.cs
- ApplicationCommands.cs
- DoWhile.cs
- ValidationErrorCollection.cs
- GuidelineCollection.cs
- EventHandlerList.cs
- WorkflowTraceTransfer.cs
- CurrentChangingEventManager.cs
- TreeWalkHelper.cs
- Span.cs
- StringKeyFrameCollection.cs
- DispatcherProcessingDisabled.cs
- ImageIndexConverter.cs
- ReflectionUtil.cs
- CommonObjectSecurity.cs
- SafeMILHandle.cs
- ByteStorage.cs
- DynamicPropertyReader.cs
- ContentDisposition.cs
- VectorConverter.cs
- ProfileGroupSettingsCollection.cs
- LogWriteRestartAreaAsyncResult.cs
- ClientScriptItem.cs
- ControlCachePolicy.cs
- LogReservationCollection.cs
- Fonts.cs
- WindowPattern.cs
- CssTextWriter.cs
- Compilation.cs
- DependencyPropertyKind.cs
- DescendantOverDescendantQuery.cs
- xdrvalidator.cs
- RadioButtonList.cs
- XamlTypeMapper.cs