The following figure is an example of how to load a Helvetica** vector font, select it as the new marker set, and select the uppercase A as the new marker primitive.
#define INCL_GPILCIDS #define INCL_GPIPRIMITIVES #include <os2.h> void fncMARK03(void){ LONG cHelvFonts, cFonts, lcid, i, j; HPS hps; FATTRS fattrs; FONTMETRICS afm[80]; MARKERBUNDLE mbnd; cHelvFonts = GpiQueryFonts(hps, QF_PUBLIC, "Helv", &cFonts, sizeof(FONTMETRICS), (PFONTMETRICS) NULL); /* Queries the number of Helvetica fonts. */ GpiQueryFonts(hps, QF_PUBLIC, "Helv", &cHelvFonts, sizeof(FONTMETRICS), afm); /* Loads the array of FONTMETRICS structures. */ for (i = 0; !(afm[i].fsDefn & FM_DEFN_OUTLINE) && i < cHelvFonts; i++); /* Finds outline font */ fattrs.usRecordLength = sizeof(FATTRS); fattrs.fsSelection = 0; fattrs.lMatch = afm[i].lMatch; /* Uses Helvetica outline font */ for (j = 0; j <= sizeof(afm[i].szFacename); j++) fattrs.szFacename[j] = afm[i].szFacename[j]; fattrs.idRegistry = 0; fattrs.usCodePage = 850; /* Uses international code page */ fattrs.lMaxBaselineExt = 0; fattrs.lAveCharWidth = 0; fattrs.fsType = 0; fattrs.fsFontUse = FATTR_FONTUSE_TRANSFORMABLE; GpiCreateLogFont(hps, (PSTR8) NULL, lcid, &fattrs); mbnd.usSet = lcid; /* Uses font as marker set */ mbnd.usSymbol = 'A'; /* Uses capital A as primitive */ GpiSetAttrs(hps, PRIM_MARKER, MBB_SYMBOL | MBB_SET, 0, &mbnd); } /* fncMARK03 */