標準字體通常提供 Bold、Italic、BoldItalic 變體。但緊急情況下或對字形要求不嚴格時,可使用 Artificial Font Styles(人工字形生成):Acrobat 依基礎字形模擬粗體/斜體。PDFlib 支援此功能並遵守 Acrobat 限制。
STSong-Light、AdobeSongStd-Light-Acro、STSongStd-Light-Acroembedding=false/*******************************************************************/
/* Artificial font styles demo under Chinese Simplified Windows */
/*******************************************************************/
#include
#include
#include
#include "pdflib.h"
int main(void) {
PDF *p = NULL;
int Font_H = 0, Font_CS = 0, Left = 50, y = 700;
const int INCRY = 25;
const char TextUnicode[] = "\x80\x7B\x53\x4F\x2D\x4E\x87\x65"; // "中文測試"
const int TEXTLEN = 8;
if ((p = PDF_new()) == (PDF *)0) {
printf("Couldn't create PDFlib object!\n");
return 2;
}
PDF_TRY(p) {
if (PDF_begin_document(p, "pdflib_cs5.pdf", 0, "") == -1) {
printf("Error: %s\n", PDF_get_errmsg(p));
return 2;
}
PDF_set_info(p, "Creator", "pdflib_cs5.c");
PDF_set_info(p, "Author", "myi@pdflib.com");
PDF_set_info(p, "Title", "Usage of Artificial font styles");
PDF_begin_page_ext(p, a4_width, a4_height, "");
// 標題
Font_H = PDF_load_font(p, "Helvetica-Bold", 0, "winansi", "");
PDF_setfont(p, Font_H, 24);
PDF_show_xy(p, "Artificial Font Styles", Left + 100, y);
// Normal
y -= 2 * INCRY;
PDF_setfont(p, Font_H, 14);
PDF_show_xy(p, "Normal", Left, y);
y -= INCRY;
Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "");
PDF_setfont(p, Font_CS, 14);
PDF_show_xy2(p, TextUnicode, TEXTLEN, Left, y);
// Italic
y -= 2 * INCRY;
PDF_setfont(p, Font_H, 14);
PDF_show_xy(p, "Italic", Left, y);
y -= INCRY;
Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "fontstyle italic");
PDF_setfont(p, Font_CS, 14);
PDF_show_xy2(p, TextUnicode, TEXTLEN, Left, y);
// Bold
y -= 2 * INCRY;
PDF_setfont(p, Font_H, 14);
PDF_show_xy(p, "Bold", Left, y);
y -= INCRY;
Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "fontstyle bold");
PDF_setfont(p, Font_CS, 14);
PDF_show_xy2(p, TextUnicode, TEXTLEN, Left, y);
// Bold-Italic
y -= 2 * INCRY;
PDF_setfont(p, Font_H, 14);
PDF_show_xy(p, "Bold-italic", Left, y);
y -= INCRY;
Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "fontstyle bolditalic");
PDF_setfont(p, Font_CS, 14);
PDF_show_xy2(p, TextUnicode, TEXTLEN, Left, y);
PDF_end_page_ext(p, "");
PDF_end_document(p, "");
}
PDF_CATCH(p) {
printf("PDFlib exception: [%d] %s: %s\n",
PDF_get_errnum(p), PDF_get_apiname(p), PDF_get_errmsg(p));
PDF_delete(p);
return 2;
}
PDF_delete(p);
return 0;
}
PDF_load_font 最後一參數傳入 "fontstyle italic"、"fontstyle bold"、"fontstyle bolditalic" 啟用人工字形STSong-Light 透過不同 fontstyle 選項產生四種變體