使用Mono中的Graphics.MeasureCharacterRanges支持垂直包装文本

时间:2017-08-30 15:20:28

标签: c# text graphics mono

对于Graphics.MeasureCharacterRanges,是否可以用CJK字体测量垂直包装的文本?

以下是我的尝试:

    static public System.Drawing.RectangleF MeasureDisplayString(Graphics graphics, string text, Font font) 
    { 
        System.Drawing.StringFormat format = new System.Drawing.StringFormat(StringFormat.GenericTypographic); 
        format.FormatFlags |= StringFormatFlags.DirectionRightToLeft; 
        format.FormatFlags |= StringFormatFlags.DirectionVertical; 
        System.Drawing.RectangleF rect = new System.Drawing.RectangleF(0, 0, 1000, 200); 
        CharacterRange[] ranges = { new System.Drawing.CharacterRange(0, text.Length) }; 
        System.Drawing.Region[] regions = new System.Drawing.Region[1]; 

        format.SetMeasurableCharacterRanges(ranges); 

        regions = graphics.MeasureCharacterRanges(text, font, rect, format); 
        rect = regions[0].GetBounds(graphics); 

        return rect; 
    } 

如果我用支持CJK的字体来测量这几行文本,我在Mono中得到的结果与在Windows 10中的结果大不相同。在Mono中,我得到一个非常不同的盒子,它似乎只有一个宽文本行。

是否不支持StringFormatFlags.DirectionVertical等一些标志?是否有计划在未来支持他们?

0 个答案:

没有答案