当您选择字体系列时,例如 Arial,您还需要选择字体,例如Arial 常规 (arial.ttf), Arial Bold (arialbd.ttf), Arial Italic (ariali.ttf), Arial Bold-Italic (arialbi.ttf),...
当您以您在代码 sn-p 中的方式切换样式时,iText 会切换字体。换句话说:您不使用应用样式的 Arial 常规字体,而是切换到同一系列中的另一种字体:Arial Bold。
诸如存储在arialbd.tff 中的字体程序包含用于绘制一系列字形轮廓(又名路径)的指令。这些字形是通过使用填充颜色填充路径来呈现的。了解这一点对于实现您的要求很重要。
您可以通过更改线宽渲染模式来控制字体的粗细。如果您正在使用没有可用字体的粗体版本的字体系列,这尤其有用。
iText 的Chunk 对象有一个名为setTextRenderMode() 的方法,在SayPeace 示例中进行了演示。请允许我在 iTextSharp 中显示相应的方法:
Chunk bold = new Chunk("Bold", font);
bold.SetTextRenderMode(
PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE, 0.5f,
GrayColor.GRAYBLACK
);
第一种方法告诉Chunk,字形应该被填充(像往常一样)和描边(不平常)。笔划的宽度应为0.5 用户单位(更改它以获得不同的粗体),最后一个参数定义文本的颜色。
为了完整起见,多加两句
- 有一种类似的方法可以模仿斜体字体:
setSkew() 方法。使用这种方法,您可以引入两个角度。例如,setSkew(0, 25) 会以 25 度角书写字形,这或多或少与斜体字体中使用的角度相对应。
- 在过去(很久以前),一些 PDF 制作者通过在同一个位置一遍又一遍地写同一个字符来模仿大胆。结果,这个字符被渲染成粗体。这有一些缺点:它没有记录在 ISO 标准中,所以你不能指望所有的观众都会以同样的方式支持它。当您从 PDF 中提取文本时,您会获得相同字符的多个实例。