如何测量字符串宽度并指定语言脚本

问题描述

我已经使用system.drawing.graphics(具有以下(简化的)代码段)成功测量了字符串:

    var cachedFont = cachedFont = new System.Drawing.Font(pfc.Families[0],line.FontSize,fontStyle,GraphicsUnit.Pixel);
    format.SetMeasurableCharacterRanges(new[] { new CharacterRange(0,line.Text.Length) });
    var regions = graphics.Value.MeasureCharacterRanges(line.Text,cachedFont,new Rectangle(0,10000,0),format);

    double result = 0;
    for (var i = 0; i < regions.Length; i++)
    {
        var region = regions[i];
        result += region.GetBounds(graphics.Value).Width;
        region.dispose();
    }

    return result;

但是,我需要支持OpenType布局,根据语言脚本(例如阿拉伯语,泰语,CJK脚本等),一个特定字符可能具有多种语言变体

可以安全地假设使用系统的认脚本测量字符串时,如果在字形替换中进行了测量,则测量结果不正确。

system.drawing.graphics是否支持不同的脚本?如何定义它们?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)