/* Build a type 32 (bitmap) font. */ static int zbuildfont32(i_ctx_t *i_ctx_p) { os_ptr op = osp; int code; build_proc_refs build; gs_font_base *pfont; check_type(*op, t_dictionary); code = build_proc_name_refs(imemory, &build, NULL, "%Type32BuildGlyph"); if (code < 0) return code; code = build_gs_simple_font(i_ctx_p, op, &pfont, ft_CID_bitmap, &st_gs_font_base, &build, bf_Encoding_optional); if (code < 0) return code; /* Always transform cached bitmaps. */ pfont->BitmapWidths = true; pfont->ExactSize = fbit_transform_bitmaps; pfont->InBetweenSize = fbit_transform_bitmaps; pfont->TransformedChar = fbit_transform_bitmaps; /* The encode_char procedure of a Type 32 font */ /* should never be called. */ pfont->procs.encode_char = zfont_no_encode_char; return define_gs_font((gs_font *) pfont); }
RELOC_PTRS_END /* <string|name> <font_dict> .buildfont3 <string|name> <font> */ /* Build a type 3 (user-defined) font. */ static int zbuildfont3(i_ctx_t *i_ctx_p) { os_ptr op = osp; int code; build_proc_refs build; gs_font_base *pfont; check_type(*op, t_dictionary); code = build_gs_font_procs(op, &build); if (code < 0) return code; code = build_gs_simple_font(i_ctx_p, op, &pfont, ft_user_defined, &st_gs_font_base, &build, bf_options_none); if (code < 0) return code; return define_gs_font(i_ctx_p, (gs_font *) pfont); }