c# - 在 WPF 中查找字形的像素大小

标签 c# wpf fonts glyph

我想找到 WPF 中字形的大小(以像素为单位)。这是字形的大小,不包括前导和尾随空格。我想要下图中第二个尺子代表的尺寸。这可能吗?

Glyph size comparison

我已经尝试过 https://stackoverflow.com/a/12121990/111471 中描述的程序, 这导致了第一个标尺所代表的大小。 该答案提供的代码是:

var typeface = new GlyphTypeface(new Uri(fontpath));
var character = 'B';
var charIndex = typeface.CharacterToGlyphMap[character];

var width = typeface.AdvanceWidths[charIndex];
var height = typeface.Height - typeface.TopSideBearings[charIndex]
                             - typeface.BottomSideBearings[charIndex];

然后我找到了像素大小

var widthInEms = width * emSize;
var heightInEms = height * emSize;

最佳答案

获取字形的宽度和高度的一种简单方法是获取其轮廓几何体的边界大小:

var size = typeface.GetGlyphOutline(charIndex, emSize, 0d).Bounds.Size;

关于c# - 在 WPF 中查找字形的像素大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32500025/

相关文章:

c# - 使用 OPC UA .NET 从 Kepserver 读取 "Channel1.Device1.Tag1"值

c# - 如何在 Asp.Net Core 上使用 MongoDB.Driver 进行迁移和种子?

c# - Stream.Write 是线程安全的吗?

html - Google Web 字体导入在堆栈末尾不起作用

python - 编辑 Bokeh 段落小部件的字体大小/样式

fonts - DejaVu 是否支持 CJK(中文、日文、韩文)字形?

c# - Provider with Azure 事件目录 token 的详细信息

wpf - 如何将 DataContext 绑定(bind)到窗口资源中的 ViewModel 对象

c# - 将 WPF 组合框与 Postgres 数据库值链接起来

.net - 使用 DispatcherObject.Dispatcher 时如何防止 MVVM 中的循环引用