gpt4 book ai didi

c# - GlyphIndices 属性如何在 GlyphRun 对象中编码?

转载 作者:行者123 更新时间:2023-11-30 15:03:59 30 4
gpt4 key购买 nike

我正在尝试构建一个 GlyphRun 对象,但我似乎无法理解 GlyphIndices 属性是如何编码的。

例如,following XAML 字符串创建“hello world”。很明显,以下规则成立:

  • 43 -> h
  • 72 -> 电子
  • 79 -> l

但是这个编码方案是什么?我试过 ASCII,它似乎不适合。

你有什么想法吗?


<GlyphRunDrawing ForegroundBrush="Black">
<GlyphRunDrawing.GlyphRun>
<GlyphRun
CaretStops="{x:Null}"
ClusterMap="{x:Null}"
IsSideways="False"
GlyphOffsets="{x:Null}"
GlyphIndices="43 72 79 79 82 3 58 82 85 79 71"
BaselineOrigin="0,12.29"
FontRenderingEmSize="13.333333333333334"
DeviceFontName="{x:Null}"
AdvanceWidths="9.62666666666667 7.41333333333333 2.96 2.96 7.41333333333333 3.70666666666667 12.5866666666667 7.41333333333333 4.44 2.96 7.41333333333333"
BidiLevel="0">
<GlyphRun.GlyphTypeface>
<GlyphTypeface FontUri="C:\WINDOWS\Fonts\TIMES.TTF" />
</GlyphRun.GlyphTypeface>
</GlyphRun>
</GlyphRunDrawing.GlyphRun>
</GlyphRunDrawing>

最佳答案

使用此代码将 Unicode 代码点转换为字形索引:

GlyphTypeface glyphTypeface = new GlyphTypeface(new Uri(@"C:\WINDOWS\Fonts\TIMES.TTF"));
const char character = 'и';
ushort glyphIndex;
glyphTypeface.CharacterToGlyphMap.TryGetValue(character, out glyphIndex);
MessageBox.Show("Index = " + glyphIndex);

以上示例为西里尔字母 и 字符返回 610。

关于c# - GlyphIndices 属性如何在 GlyphRun 对象中编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869826/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com