1 /* -*- c-basic-offset:2; tab-width:2; indent-tabs-mode:nil -*- */
2 
3 #ifndef __VT_FONT_H__
4 #define __VT_FONT_H__
5 
6 #include <mef/ef_charset.h>
7 
8 #undef MAX_CHARSET
9 #define MAX_CHARSET 0x1ff
10 #define FONT_CS(font) ((font) & MAX_CHARSET)
11 #define FONT_STYLES (FONT_BOLD | FONT_ITALIC)
12 #define FONT_STYLE_INDEX(font) ((((font) & FONT_STYLES) >> 10) - 1)
13 #define UNICODE_AREA(font) (((font) >> 12) & 0xff)
14 #define NORMAL_FONT_OF(cs) (IS_FULLWIDTH_CS(cs) ? (cs) | FONT_FULLWIDTH : (cs))
15 #define SIZE_ATTR_FONT(font, size_attr) ((font) | (((int)(size_attr)) << 21))
16 #define SIZE_ATTR_OF(font) (((font) >> 21) & 0x3)
17 #define NO_SIZE_ATTR(font) ((font) & ~(0x3 << 21))
18 
19 enum {
20   DOUBLE_WIDTH = 0x1,
21   DOUBLE_HEIGHT_TOP = 0x2,
22   DOUBLE_HEIGHT_BOTTOM = 0x3,
23 };
24 
25 typedef enum vt_font {
26   /* 0x00 - MAX_CHARSET(0x1ff) is reserved for ef_charset_t */
27 
28   /* for unicode half or full width tag */
29   FONT_FULLWIDTH = 0x200u, /* (default) half width */
30 
31   /* for font thickness */
32   FONT_BOLD = 0x400u, /* (default) medium */
33 
34   /* for font slant */
35   FONT_ITALIC = 0x800u, /* (default) roman */
36 
37   /*
38    * Note that FONT_ROTATED is defined in fb/ui_font.c as (FONT_ITALIC << 1),
39    * so be careful to add new entries after FONT_ITALIC.
40    */
41 #if 0
42   /* font width */
43   FONT_SEMICONDENSED /* (default) normal */
44 #endif
45 
46   /*
47    * 0x1000 - 0xff000 is used for Unicode range mark (see vt_get_unicode_area_font)
48    * 0x200000 - 0x700000 is used for size_attr (see ui_font_manager.c)
49    */
50 
51 } vt_font_t;
52 
53 #endif
54