2、假如当前行中有1个或多个空格,是不是调用SetTextJustification后间距会变大,那又该怎么调整

解决方案 »

  1.   

    我记得很久以前(20年前?)实现过这种需求。应该是用GetCharacterPlacement()获取每个字符的位置和字符串的rect,然后将需要调整的大小分布到某些字符位置上(比如先平均分配到空格所在字符位置上,不够再平均分配到每个字符位置上--结果就是每个字符间都多1像素空位--如果没有空格或输出中文时),最后用ExtTextOut()输出调整位置后的字符串。
      

  2.   

    1.如何获得中文字符ABC宽度?GetCharABCWidths?不知道汉字如何对应里面的参数 比如“中”,应该如何使用这个函数? 
    2.如果行文本中不含空格,是不是假设所有汉字是等宽字体,在行的每个汉字间插入空格?
    3.如果行文本中只含有1个空格,是不是调用SetTextJustification后把所有差额都加到该空格上?
    4.在word中试验了一下,应该是调整某些达不到平均宽度的字符。那么问题1怎么解决?
      

  3.   


    不明白为什么一定要用SetTextJustification()
    为什么不简单使用GetTextExtentExPoint()获取包含每个字符的输出位置的数组然后手工调整,然后将其转换成包含每字符宽度的数组再用ExtTextOut()输出?
    或者用GetCharacterPlacement()让Windows帮你自动计算(自动精确匹配总宽度然后生成包含每个字符宽度的数组)然后一样用ExtTextOut()输出?
      

  4.   

    “Windows 图形编程- 袁枫” 第15章