libharu4delphi中的Text state(一)

 

libharu4delphi是原始C语言的delphi译本,包括用到的libpng函数,也全转译为delphi。

除了自解释的T f和T fs以外,以下各节将进一步讨论这些参数。 (如第5.3节“文本对象”中所述,仅在文本对象内定义了三个与文本相关的其他参数:T m,文本矩阵; T LM,文本行矩阵;以及T RM,文本渲染放置和显示文本时,请查阅文本状态参数的值(使用第5.3.1节“文本定位运算符”和第5.3.2节“文本显示运算符”中所述的运算符) 。特别是,space和scaling参数参与了第5.3.3节“文本空间详细信息”中描述的计算。可以使用表5.2中列出的运算符来设置文本状态参数。文本状态运算符可以出现在文本对象外部,并且它们设置的值将在单个内容流中跨文本对象保留。与其他图形状态参数一样,这些参数在每个页面的开头都初始化为其默认值。请注意,这些参数中的某些参数以未缩放的文本空间单位表示。这意味着它们是在由文本矩阵T m定义的坐标系中指定的,但没有由字体大小参数T fs缩放的。

字符间距参数( Character Spacing)T c是以无比例缩放的文本空间单位指定的数字(尽管如果写模式为水平,则可以通过T h参数进行缩放)。呈现字符串中每个字符的字形时,在水平写模式下,T c被添加到字形位移的x分量,在垂直写模式下被添加到位移的y分量。 (有关字形位移的讨论,请参见第5.1.3节“字形位置和度量”。)在默认坐标系中,水平坐标从左向右增加,垂直坐标自下而上增加。因此,对于水平写,T c为正值会扩大字形之间的距离(见图5.6),而对于垂直写,T c为负值会扩大字形之间的距离。

libharu4delphi中对应的函数是

(* Tc *)
function
HPDF_Page_SetCharSpace  (Apage: THPDF_Page   ;
                         Avalue: HPDF_REAL  ): HPDF_STATUS;
{$ifdef HPDF_DLL}export;{$ifdef mswindows} stdcall{$else}cdecl{$endif}{$endif}

字间距( Word Spacing 这里指的是一个单词)与字符间距的工作方式相同,但仅适用于Ascii码为32的空格字符。字间距参数T w被添加到字形的x或y位移(取决于写模式)。对于水平写,T w的正值会增加单词之间的间距。对于垂直书写,由于y坐标从下到上增加,因此T w的正值会减小单词之间的间距(负值会增大该间距)。图5.7说明了水平书写中单词间距的影响。

注:字间距仅适用于单字节字符代码32。它不适用于多字节代码中出现的字节值32。

libharu4delphi中对应的函数是

(* Tw *)
function
HPDF_Page_SetWordSpace  (Apage: THPDF_Page   ;
                         Avalue: HPDF_REAL  ): HPDF_STATUS;
{$ifdef HPDF_DLL}export;{$ifdef mswindows} stdcall{$else}cdecl{$endif}{$endif}

水平缩放参数(Horizontal Scaling)T h通过在水平方向上拉伸或缩小字形来调整字形的宽度。它的值指定为字形正常宽度的百分比,正常宽度为100。缩放始终应用于文本空间中的x坐标,而与书写模式无关。它会影响字形的形状及其水平位移(即位移矢量)。如果书写模式是水平的,则它还会影响间距参数T c和T w以及TJ操作员执行的任何定位调整。图5.8显示了水平缩放的效果。 

libharu4delphi中对应的函数是

(* Tz *)
function
HPDF_Page_SetHorizontalScalling  (Apage: THPDF_Page   ;
                                  Avalue: HPDF_REAL  ): HPDF_STATUS;
{$ifdef HPDF_DLL}export;{$ifdef mswindows} stdcall{$else}cdecl{$endif}{$endif}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值