代码之家  ›  专栏  ›  技术社区  ›  xMRi

使用DrawText时防止难看的紧排

  •  1
  • xMRi  · 技术社区  · 6 年前

    我使用简单的GDI DrawText

    示例中使用的字体是 微软雅黑效果 . 但你可以用 或者其他人。没关系。

    大文本块的算法很简单。 函数说明 被称为 DT_CALCRECT 函数说明 被称为没有 DT\u CALCRECT公司

    以给定的矩形坐标。

    结果真的很奇怪,可以从中看出 sample PDF .

    如何避开这个问题?用过的打印机有问题吗?DrawText有问题吗?

    在某些情况下,单词中某些字符之间的距离似乎是随机的。有的间距宽,有的窄。字母组合看起来很奇怪,不可读,也很难看。

    我尝试了不同的字体和打印机,但问题是不同的,但它总是存在。

    我知道 ExTextOut 以及定义所有字符之间的距离/字距的能力,但坦率地说,我不想关心这个问题。我只想那样 函数说明

    • 新增时间:2018-08-23 08:49 GMT+2* 到代码(它是一个复杂的打印引擎)。

    1.打印字体是用CFont::CreatePointFont创建的,因此LOGFONT结构被清除为零,除了point和face之外,不使用其他标志。

    2.映射模式为MM_各向异性。为了缩放屏幕上显示的内容和要打印的内容,我只需使用打印机上komparable对象(textblock)的大小和屏幕上相同的大小。打印到Microsoft PDF打印机的示例的实际值如下所示,我不感兴趣的实际计算方法:

    m_pDC->SetMapMode(MM_ANISOTROPIC);
    m_pDC->SetViewportExt(2363,100);
    m_pDC->SetWindowExt(355,13);
    

    结果表明,LPs中的a行高度为13,平均字符宽度为6。。。

    0 回复  |  直到 6 年前