Mei*_*hes 3 .net c# directx wpf
我正在做一些自定义控件,并且我有一些通过 Glyph Runs 绘制的文本
\n\n我的问题是 \xc2\xb0C 没有被我的字形正确渲染(无论字体系列如何),看起来像这样:
\n\n
所以我的字形运行代码(简化)是:
\n\nvar typeface = new Typeface(this.FontFamily, this.FontStyle, this.FontWeight, this.FontStretch);\n\n...\n\nGlyphRun glyphRun = CreateGlyphRun(typeface, "\xc2\xb0C", 10, new Point(0,0));\ndc.DrawGlyphRun(brush, glyphRun);\nRun Code Online (Sandbox Code Playgroud)\n\n在哪里
\n\ninternal static GlyphRun CreateGlyphRun(Typeface typeface, string text, double size, Point origin)\n{\n if (text.Length == 0)\n return null;\n\n GlyphTypeface glyphTypeface;\n\n typeface.TryGetGlyphTypeface(out glyphTypeface)\n\n var glyphIndexes = new ushort[text.Length];\n var advanceWidths = new double[text.Length];\n\n for (int n = 0; n < text.Length; n++)\n {\n var glyphIndex = (ushort)(text[n] - 29);\n glyphIndexes[n] = glyphIndex;\n advanceWidths[n] = glyphTypeface.AdvanceWidths[glyphIndex] * size;\n }\n\n var glyphRun = new GlyphRun(glyphTypeface, 0, false, size, glyphIndexes, origin, advanceWidths, null, null,\n null,\n null, null, null);\n return glyphRun;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我认为这是某种本地化问题。任何帮助,将不胜感激。
\n尝试更换
var glyphIndex = (ushort)(text[n] - 29);
Run Code Online (Sandbox Code Playgroud)
和
var glyphIndex = glyphTypeface.CharacterToGlyphMap[text[n]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1402 次 |
| 最近记录: |