X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=ft2.h;h=6495d3eb57b8f603c2c02995a950592272ac92d4;hb=HEAD;hp=99de79a74bd633106c818c8f9bf798d65f0ab254;hpb=34ac3e1a25d3b1541a7b32e89c63812b52c3edac;p=xonotic%2Fdarkplaces.git diff --git a/ft2.h b/ft2.h index 99de79a7..6495d3eb 100644 --- a/ft2.h +++ b/ft2.h @@ -21,8 +21,14 @@ */ typedef struct ft2_font_map_s ft2_font_map_t; +typedef struct font_incmap_s font_incmap_t; +typedef struct incmap_lookup_cache_s incmap_lookup_cache_t; typedef struct ft2_attachment_s ft2_attachment_t; +#ifdef WIN64 +#define ft2_oldstyle_map ((ft2_font_map_t*)-1LL) +#else #define ft2_oldstyle_map ((ft2_font_map_t*)-1) +#endif typedef float ft2_kernvec[2]; typedef struct ft2_kerning_s @@ -32,36 +38,38 @@ typedef struct ft2_kerning_s typedef struct ft2_font_s { - char name[64]; - qboolean has_kerning; + char name[64]; + qbool has_kerning; // last requested size loaded using Font_SetSize - float currentw; - float currenth; - float ascend; - float descend; - qboolean image_font; // only fallbacks are freetype fonts + float currentw; + float currenth; + float ascend; + float descend; + qbool image_font; // only fallbacks are freetype fonts // TODO: clean this up and do not expose everything. - - //unsigned char *data; + + const unsigned char *data; // FT2 needs it to stay //fs_offset_t datasize; - void *face; + void *face; // an unordered array of ordered linked lists of glyph maps for a specific size - ft2_font_map_t *font_maps[MAX_FONT_SIZES]; - int num_sizes; + ft2_font_map_t *font_maps[MAX_FONT_SIZES]; + int num_sizes; // attachments - size_t attachmentcount; - ft2_attachment_t *attachments; + size_t attachmentcount; + ft2_attachment_t *attachments; + + ft2_settings_t *settings; // fallback mechanism - struct ft2_font_s *next; + struct ft2_font_s *next; } ft2_font_t; void Font_CloseLibrary(void); void Font_Init(void); -qboolean Font_OpenLibrary(void); +qbool Font_OpenLibrary(void); ft2_font_t* Font_Alloc(void); void Font_UnloadFont(ft2_font_t *font); // IndexForSize suggests to change the width and height if a font size is in a reasonable range @@ -69,10 +77,12 @@ void Font_UnloadFont(ft2_font_t *font); // in such a case, *outw and *outh are set to 12, which is often a good alternative size int Font_IndexForSize(ft2_font_t *font, float size, float *outw, float *outh); ft2_font_map_t *Font_MapForIndex(ft2_font_t *font, int index); -qboolean Font_LoadFont(const char *name, dp_font_t *dpfnt); -qboolean Font_GetKerningForSize(ft2_font_t *font, float w, float h, Uchar left, Uchar right, float *outx, float *outy); -qboolean Font_GetKerningForMap(ft2_font_t *font, int map_index, float w, float h, Uchar left, Uchar right, float *outx, float *outy); - +qbool Font_LoadFont(const char *name, dp_font_t *dpfnt); +qbool Font_GetKerningForSize(ft2_font_t *font, float w, float h, Uchar left, Uchar right, float *outx, float *outy); +qbool Font_GetKerningForMap(ft2_font_t *font, int map_index, float w, float h, Uchar left, Uchar right, float *outx, float *outy); +float Font_VirtualToRealSize(float sz); +float Font_SnapTo(float val, float snapwidth); // since this is used on a font_map_t, let's name it FontMap_* ft2_font_map_t *FontMap_FindForChar(ft2_font_map_t *start, Uchar ch); +qbool Font_GetMapForChar(ft2_font_t *font, int map_index, Uchar ch, ft2_font_map_t **outmap, int *outmapch); #endif // DP_FREETYPE2_H__