TBarCode .NET 常见问题
为什么我在 EPS 和 AI 导出中看到的字体不同?
为什么我在 EPS 和 AI 导出中看到的字体不同?
TBarCode SDK 不会将字体嵌入 EPS 和 AI 文件中,而只是通过指定字体名称对其进行引用。因此,该字体是否可用以及具体如何渲染,取决于输出设备或图形软件套件。
对于 EPS,仅允许使用 PostScript 标准字体名称,或所引用字体名称中不包含任何空格的字体名称。
EPS:为避免在未安装 Arial 字体的打印机上出现问题,我们会始终将对 Arial 的引用转换为 Helvetica——它外观相近,且是一种标准 PS 字体(所有打印机均可使用)。如果您不希望这样处理,可以通过一个选项来控制是否应用字体替换,即 UseDeviceFonts 选项。
以下是 EAN13 SC2 – 100% 的示例代码:
导出为使用标准 Postscript 字体的 EPS(Arial ⇒ Helvetica)
Barcode barcode = new Barcode();
barcode.BarcodeType = BarcodeType.Ean13;
barcode.BoundingRectangleF = new RectangleF(0, 0, 37.29F, 25.91F); // SC2 size
barcode.SizeMode = SizeMode.CustomModuleWidth;
barcode.ModuleWidth = 0.330F; // SC2 module width
barcode.Data = "123456789012";
barcode.Font = new Font("Arial", 9);
barcode.UseDeviceFonts = true;
barcode.Draw("c:\\temp\\TestFile.eps", ImageType.Eps);
barcode.Draw("c:\\temp\\TestFile.ai", ImageType.Ai);
如果您用文本编辑器打开导出的 EPS 文件,会看到显示的是 Helvetica 而非 Arial:
/Helvetica findfont
9.0000 scalefont setfont
如果您用 PostScript 查看器(如 GSView)打开该 EPS 文件,效果如下所示:
如果您用文本编辑器打开导出的 AI 文件,会看到:
%%IncludeResource: font ArialMT
%AI3_BeginEncoding: _ArialMT ArialMT
[/_ArialMT/ArialMT 0 0 1 TZ
导出为 EPS 并保留所设置的字体(Arial ⇒ Arial)
打印机或图形软件必须支持“Arial”!字体名称中不得包含空格!
Barcode barcode = new Barcode();
barcode.BarcodeType = BarcodeType.Ean13;
barcode.BoundingRectangleF = new RectangleF(0, 0, 37.29F, 25.91F);
barcode.SizeMode = SizeMode.CustomModuleWidth;
barcode.ModuleWidth = 0.330F;
barcode.Data = "123456789012";
barcode.Font = new Font("Arial", 9);
barcode.UseDeviceFonts = false;
barcode.Draw("c:\\temp\\TestFile.eps", ImageType.Eps);
barcode.Draw("c:\\temp\\TestFile.ai", ImageType.Ai);
如果您用文本编辑器打开导出的 EPS 文件,会看到:
/Arial findfont
9.0000 scalefont setfont
如果您用文本编辑器打开导出的 AI 文件,会看到:
%%IncludeResource: font Arial
%AI3_BeginEncoding: _Arial Arial
[/_Arial/Arial 0 0 1 TZ
小结
要在导出时使用您所设置的字体,可以设置 UseDeviceFonts = false。 这也取决于您希望如何处理该 EPS 文件。如果您只想将该文件“原样”发送到打印机或印刷系统,使用 UseDeviceFonts = true 搭配 Helvetica 可能更为稳妥。建议您在决定是否使用 DeviceFonts 之前,先进行试打测试。
不含 HRT 的 PDF 导出
对于 PDF 导出,TBarCode SDK 并不包含字体渲染功能——这正是为什么选择 PDF 导出格式时,您不会得到任何字体或文本输出的原因。
如果您需要带有字体嵌入功能的 PDF 导出,可以使用我们的 TFORMer 标签打印 SDK。TFORMer SDK 支持与 TBarCode SDK 相同的条码类型。此外,您也可以在命令行模式下使用 Barcode Studio——从您自己的程序代码中调用 BCStudio.exe,并将条码数据和文件名传递给 BCStudio(可用的命令行参数请参阅 BCStudio 用户手册)。此外,如果您想使用第三方厂商的 PDF 库,可以使用 TBarCode SDK 的回调绘制机制——通过该机制,您可以获取条形和文字的坐标,并利用 PDF 库自身的绘制及字体/文本渲染函数来实现条码。SDK 中包含了如何使用回调绘制功能的示例。