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 */