fz_error pdf_load_similar_cjk_font(pdf_xref *xref, pdf_font_desc *font, int ros, int serif) { if (serif) { switch (ros) { case PDF_ROS_CNS: return pdf_load_windows_font(xref, font, "MingLiU"); case PDF_ROS_GB: return pdf_load_windows_font(xref, font, "SimSun"); case PDF_ROS_JAPAN: return pdf_load_windows_font(xref, font, "MS-Mincho"); case PDF_ROS_KOREA: return pdf_load_windows_font(xref, font, "Batang"); } } else { switch (ros) { case PDF_ROS_CNS: return pdf_load_windows_font(xref, font, "DFKaiShu-SB-Estd-BF"); case PDF_ROS_GB: if (fz_okay == pdf_load_windows_font(xref, font, "KaiTi")) return fz_okay; return pdf_load_windows_font(xref, font, "KaiTi_GB2312"); case PDF_ROS_JAPAN: return pdf_load_windows_font(xref, font, "MS-Gothic"); case PDF_ROS_KOREA: return pdf_load_windows_font(xref, font, "Gulim"); } } return -1; }
static void pdf_load_builtin_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontname) { unsigned char *data; unsigned int len; #ifdef _WIN32 /* SumatraPDF: prefer system fonts unless a base font is explicitly requested */ char *clean_name = clean_font_name(fontname); if (!pdf_lookup_builtin_font(fontname, &len) && /* cf. http://code.google.com/p/sumatrapdf/issues/detail?id=2173 */ (clean_name == fontname || strncmp(clean_name, "Times-", 6) != 0)) { void pdf_load_windows_font(fz_context *ctx, pdf_font_desc *font, char *fontname); /* TODO: the metrics for Times-Roman and Courier don't match those of Windows' Times New Roman and Courier New; for some reason, Poppler doesn't seem to have this problem */ fz_try(ctx) { pdf_load_windows_font(ctx, fontdesc, fontname); } fz_catch(ctx) { } printf(" fontdesc->font=%p\n",fontdesc->font); if (fontdesc->font) return; }