我正在尝试最小化以编程方式构建的Windows窗体(使用C#)上的控件之间的垂直距离。这涉及适当地设置高度属性。
我发现如果控件的文本中不包含任何带有下行符的字母(即没有任何字符j,g,p,q或y),则控件高度可能小于它确实包含这样的字母(如果 包含带有下行字母的字母,那么如果高度不够则下降器会被切断)。
只要语言是英语或类似英语,它就可以正常测试上述5个字符中的任何一个,但我需要能够满足(几乎)任何语言。
有没有办法,给定一些任意的Unicode字符(也许是字体)来确定该Unicode字符是否有下降符?
答案 0 :(得分:1)
没有为Unicode字符定义属性来指示下降器的存在,它实际上是字形设计的特征而不是字符。例如,“Q”在许多字体中都有下降,而“J”在某些字体中有一个。此外,根据上下文,您还应该考虑在字母下方放置变音符号,而不仅仅是基本字母的下降符号。也可能是变音符号以上字母。
因此,您需要阅读有关字符尺寸的字体信息(如果可用),或暂时在软件中绘制字符并测量其尺寸。
根据经验,任何低于字体大小1.1倍的行高都会导致某些字符和字体出现问题。使用1(“设置实体”)是不够的,因为字符实际上可能超出字体大小。
答案 1 :(得分:0)
在Windows中,调用GetPath()以获取一个数组,该数组包含构成字形字符串周长或轮廓的每个点的X / Y坐标。在数组中搜索min / max,这将获得包含字符串的矩形完全。右边的字母边缘。