有没有办法将iTextSharp中的字体权重设置为数字?
现在我可以像这样设置加粗字体:
iTextSharp.text.Font font_main = new iTextSharp.text.Font(someBaseFont, 12, iTextSharp.text.Font.BOLD);
因此,只有一个“大胆”可用。但我想要这样的事情:
font_main.weight = 600;
有可能吗?
答案 0 :(得分:2)
当您选择字体系列时,例如Arial,您还需要选择一种字体,例如Arial常规(arial.ttf
),Arial Bold(arialbd.ttf
),Arial Italic(ariali.ttf
),Arial Bold-Italic(arialbi.ttf
),...
当你在代码片段中切换样式时,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度的字形,这些字形或多或少与斜体字体中使用的角度相对应。