|
|
@@ -203,9 +203,38 @@ struct rtgui_font *rtgui_fnt_font_create(const char* filename, const char* font_
|
|
|
/* load font */
|
|
|
{
|
|
|
struct rtgui_font_bitmap *asc = (struct rtgui_font_bitmap*)rtgui_malloc(sizeof(struct rtgui_font_bitmap));
|
|
|
- struct rtgui_hz_file_font *hz = (struct rtgui_hz_file_font*)rtgui_malloc(sizeof(struct rtgui_hz_file_font));
|
|
|
+ struct rtgui_hz_file_font *hz = NULL;
|
|
|
struct rtgui_font *asc_font = (struct rtgui_font*)rtgui_malloc(sizeof(struct rtgui_font));
|
|
|
- struct rtgui_font *hz_font = (struct rtgui_font*)rtgui_malloc(sizeof(struct rtgui_font));
|
|
|
+ struct rtgui_font *hz_font = NULL;
|
|
|
+
|
|
|
+#ifdef GUIENGINE_USING_HZ_FILE
|
|
|
+ hz = (struct rtgui_hz_file_font*)rtgui_malloc(sizeof(struct rtgui_hz_file_font));
|
|
|
+ hz_font = (struct rtgui_font*)rtgui_malloc(sizeof(struct rtgui_font));
|
|
|
+ /* load hz */
|
|
|
+ if (hz && hz_font && fnt_header->asc_offset != 0)
|
|
|
+ {
|
|
|
+ struct cache_tree _cache_root = { NULL };
|
|
|
+
|
|
|
+ hz->cache_root = _cache_root;
|
|
|
+ hz->cache_size = 0;
|
|
|
+ hz->font_size = fnt_header->h;
|
|
|
+ hz->font_data_size = (fnt_header->h + 7) / 8 * fnt_header->h;
|
|
|
+ hz->fd = -1;
|
|
|
+ hz->font_fn = rt_strdup(filename);
|
|
|
+
|
|
|
+ hz_font->family = rt_strdup(font_family);
|
|
|
+ hz_font->height = fnt_header->h;
|
|
|
+ hz_font->refer_count = 1;
|
|
|
+ hz_font->engine = &rtgui_hz_file_font_engine;
|
|
|
+ hz_font->data = (void *)hz;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ rtgui_free(hz);
|
|
|
+ rtgui_free(hz_font);
|
|
|
+ hz_font = RT_NULL;
|
|
|
+ }
|
|
|
+#endif
|
|
|
|
|
|
/* load asc */
|
|
|
if (asc && asc_font)
|
|
|
@@ -229,7 +258,10 @@ struct rtgui_font *rtgui_fnt_font_create(const char* filename, const char* font_
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- asc_font->family = rt_strdup("asc");
|
|
|
+ if (hz_font)
|
|
|
+ asc_font->family = rt_strdup("asc");
|
|
|
+ else
|
|
|
+ asc_font->family = rt_strdup(font_family);
|
|
|
asc_font->height = fnt_header->h;
|
|
|
asc_font->refer_count = 1;
|
|
|
asc_font->engine = &bmp_font_engine;
|
|
|
@@ -239,32 +271,7 @@ struct rtgui_font *rtgui_fnt_font_create(const char* filename, const char* font_
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-#ifdef GUIENGINE_USING_HZ_FILE
|
|
|
- /* load hz */
|
|
|
- if (hz && hz_font && fnt_header->asc_offset != 0)
|
|
|
- {
|
|
|
- struct cache_tree _cache_root = { NULL };
|
|
|
-
|
|
|
- hz->cache_root = _cache_root;
|
|
|
- hz->cache_size = 0;
|
|
|
- hz->font_size = fnt_header->h;
|
|
|
- hz->font_data_size = (fnt_header->h + 7) / 8 * fnt_header->h;
|
|
|
- hz->fd = -1;
|
|
|
- hz->font_fn = rt_strdup(filename);
|
|
|
|
|
|
- hz_font->family = rt_strdup(font_family);
|
|
|
- hz_font->height = fnt_header->h;
|
|
|
- hz_font->refer_count = 1;
|
|
|
- hz_font->engine = &rtgui_hz_file_font_engine;
|
|
|
- hz_font->data = (void *)hz;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- rtgui_free(hz);
|
|
|
- rtgui_free(hz_font);
|
|
|
- hz_font = RT_NULL;
|
|
|
- }
|
|
|
-#endif
|
|
|
close(fd);
|
|
|
|
|
|
if (hz_font)
|
|
|
@@ -326,7 +333,6 @@ struct rtgui_font *rtgui_hz_fnt_font_create(const char* filename, const char* fo
|
|
|
rtgui_free(hz);
|
|
|
rtgui_free(hz_font);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
return font;
|