Directorio de artículos
One, producción de fuentes en formato XBF
En primer lugar, necesitamos usar el convertidor de fuentes para crear las fuentes XBF requeridas. El código fuente de STemWin que descargamos ya contiene el convertidor de fuentes: FontCvtST.exe.
A continuación, creamos 4 bibliotecas de fuentes XBF, todas las fuentes se seleccionan como Song type, el tamaño es 12, 16, 24 y 36, el tipo de fuente es "Extended, antialiased, 2bpp", que es una fuente de mapa de bits de escala extendida, que incluye antialiasing de 2bpp.
1. Seleccione el tipo de fuente
2. Guarda la fuente
Haga clic en: Archivo->Guardar como, aparece el cuadro de diálogo como se muestra en la figura, seleccione el tipo de guardado como .xbf
para copiar la fuente XBF creada en el directorio de archivos especificado de la tarjeta SD: SISTEMA->EMWINFONT->XBF
2. Funciones API relacionadas con la fuente XBF
Hay dos funciones relacionadas con las fuentes XBF: GUI_XBF_CreateFont() y GUI_XBF_DeleteFont()
1. Función GUI_XBF_CreateFont()
Descripción
Crea y selecciona una fuente pasando un puntero a una función de devolución de llamada responsable de obtener datos de un archivo de fuente XBF.
prototipo
int GUI_XBF_CreateFont( GUI_FONT *pFont,
GUI_XBF_DATA *pxBF_Data,
const GUI_XBF_TYPE *pFontType,
GUI_XBF_GET_DATA_FUNC *pfGetData,
void *pVoid );
2.GUI_XBF_DeleteFont()
Descripción
Elimina la fuente XBF indicada por el parámetro pFont.
Prototipo
void GUI_XBF_DeleteFont(GUI_FONT * pFont);
Descripción del parámetro
pFont: apunta a la fuente a eliminar.
Información adicional
Después de crear una fuente con GUI_XBF_CreateFont(), debe eliminarse si ya no se usa
#include "xbffontcreate.h"
#include "ff.h"
#if SYSTEM_SUPPORT_UCOS
#include "includes.h" //ucos ʹÓÃ
#endif
//¶¨Òå×ÖÌå
GUI_FONT XBF12_Font;
GUI_FONT XBF16_Font;
GUI_FONT XBF24_Font;
GUI_FONT XBF36_Font;
GUI_XBF_DATA XBF12_Data;
GUI_XBF_DATA XBF16_Data;
GUI_XBF_DATA XBF24_Data;
GUI_XBF_DATA XBF36_Data;
FIL XBF16FontFile;
FIL XBF12FontFile;
FIL XBF24FontFile;
FIL XBF36FontFile;
//»Øµ÷º¯Êý£¬ÓÃÀ´»ñÈ¡×ÖÌåÊý¾Ý
//²ÎÊý£ºOff: ÔÚXBFÖÐÆ«ÒÆ(λÖÃ)
// NumBytes: Òª¶ÁÈ¡µÄ×Ö½ÚÊý
// pVoid: Òª¶ÁÈ¡µÄÎļþ
// pBuff: ¶ÁÈ¡µ½µÄÊý¾ÝµÄ»º³åÇø
//·µ»ØÖµ:0 ³É¹¦£¬1 ʧ°Ü
static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
int result;
u16 bread;
FIL *hFile;
#if SYSTEM_SUPPORT_UCOS
OS_CPU_SR cpu_sr;
#endif
hFile = (FIL*)pVoid;
//ÉèÖÃÔÚÎļþÖеÄÆ«ÒÆ(λÖÃ)
result = f_lseek(hFile,Off);
if(result != FR_OK) return 1; //·µ»Ø´íÎó
//¶ÁÈ¡×ÖÌåÊý¾Ý
#if SYSTEM_SUPPORT_UCOS
OS_ENTER_CRITICAL(); //ÁÙ½çÇø
#endif
result = f_read(hFile,pBuffer,NumBytes,(UINT *)&bread); //¶ÁÈ¡Êý¾Ý
#if SYSTEM_SUPPORT_UCOS
OS_EXIT_CRITICAL(); //Í˳öÁÙ½çÇø
#endif
if(result != FR_OK) return 1; //·µ»Ø´íÎó
return 0;
}
//´´½¨XBF12×ÖÌ壬¹²EMWINʹÓÃ
//fxpath:XBF×ÖÌåÎļþ·¾¶
//·µ»ØÖµ:0£¬³É¹¦£»1£¬Ê§°Ü
u8 Create_XBF12(u8 *fxpath)
{
int result;
result = f_open(&XBF12FontFile,(const TCHAR*)fxpath,FA_READ); //´ò¿ª×Ö¿âÎļþ
if(result != FR_OK) return 1;
//´´½¨XBF16×ÖÌå
GUI_XBF_CreateFont( &XBF12_Font, //Ö¸ÏòGUI_FONT½á¹¹
&XBF12_Data, //Ö¸ÏòGUI_XBF_DATA½á¹¹
GUI_XBF_TYPE_PROP_AA2_EXT,//Òª´´½¨µÄ×ÖÌåÀàÐÍ
_cbGetData, //»Øµ÷º¯Êý
&XBF12FontFile); //´°Ìå¸ø»Øµ÷º¯Êý_cbGetDataµÄ²ÎÊý
return 0;
}
//´´½¨XBF16×ÖÌ壬¹²EMWINʹÓÃ
//fxpath:XBF×ÖÌåÎļþ·¾¶
//·µ»ØÖµ:0£¬³É¹¦£»1£¬Ê§°Ü
u8 Create_XBF16(u8 *fxpath)
{
int result;
result = f_open(&XBF16FontFile,(const TCHAR*)fxpath,FA_READ); //´ò¿ª×Ö¿âÎļþ
if(result != FR_OK) return 1;
//´´½¨XBF16×ÖÌå
GUI_XBF_CreateFont( &XBF16_Font, //Ö¸ÏòGUI_FONT½á¹¹
&XBF16_Data, //Ö¸ÏòGUI_XBF_DATA½á¹¹
GUI_XBF_TYPE_PROP_AA2_EXT,//Òª´´½¨µÄ×ÖÌåÀàÐÍ
_cbGetData, //»Øµ÷º¯Êý
&XBF16FontFile); //´°Ìå¸ø»Øµ÷º¯Êý_cbGetDataµÄ²ÎÊý
return 0;
}
//´´½¨XBF24×ÖÌ壬¹²EMWINʹÓÃ
//fxpath:XBF×ÖÌåÎļþ·¾¶
//·µ»ØÖµ:0£¬³É¹¦£»1£¬Ê§°Ü
u8 Create_XBF24(u8 *fxpath)
{
int result;
result = f_open(&XBF24FontFile,(const TCHAR*)fxpath,FA_READ); //´ò¿ª×Ö¿âÎļþ
if(result != FR_OK) return 1;
//´´½¨XBF16×ÖÌå
GUI_XBF_CreateFont( &XBF24_Font, //Ö¸ÏòGUI_FONT½á¹¹
&XBF24_Data, //Ö¸ÏòGUI_XBF_DATA½á¹¹
GUI_XBF_TYPE_PROP_AA2_EXT,//Òª´´½¨µÄ×ÖÌåÀàÐÍ
_cbGetData, //»Øµ÷º¯Êý
&XBF24FontFile); //´°Ìå¸ø»Øµ÷º¯Êý_cbGetDataµÄ²ÎÊý
return 0;
}
//´´½¨XBF36×ÖÌ壬¹²EMWINʹÓÃ
//fxpath:XBF×ÖÌåÎļþ·¾¶
//·µ»ØÖµ:0£¬³É¹¦£»1£¬Ê§°Ü
u8 Create_XBF36(u8 *fxpath)
{
int result;
result = f_open(&XBF36FontFile,(const TCHAR*)fxpath,FA_READ); //´ò¿ª×Ö¿âÎļþ
if(result != FR_OK) return 1;
//´´½¨XBF16×ÖÌå
GUI_XBF_CreateFont( &XBF36_Font, //Ö¸ÏòGUI_FONT½á¹¹
&XBF36_Data, //Ö¸ÏòGUI_XBF_DATA½á¹¹
GUI_XBF_TYPE_PROP_AA2_EXT,//Òª´´½¨µÄ×ÖÌåÀàÐÍ
_cbGetData, //»Øµ÷º¯Êý
&XBF36FontFile); //´°Ìå¸ø»Øµ÷º¯Êý_cbGetDataµÄ²ÎÊý
return 0;
}
Se recomienda usar F4, y F1 es muy tarjeta.