/usr/include/tcl8.6/tk-private/generic/tkFont.h is in tk8.6-dev 8.6.1-3ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | /*
* tkFont.h --
*
* Declarations for interfaces between the generic and platform-specific
* parts of the font package. This information is not visible outside of
* the font package.
*
* Copyright (c) 1996-1997 Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#ifndef _TKFONT
#define _TKFONT
/*
* The following structure keeps track of the attributes of a font. It can be
* used to keep track of either the desired attributes or the actual
* attributes gotten when the font was instantiated.
*/
struct TkFontAttributes {
Tk_Uid family; /* Font family, or NULL to represent plaform-
* specific default system font. */
int size; /* Pointsize of font, 0 for default size, or
* negative number meaning pixel size. */
int weight; /* Weight flag; see below for def'n. */
int slant; /* Slant flag; see below for def'n. */
int underline; /* Non-zero for underline font. */
int overstrike; /* Non-zero for overstrike font. */
};
/*
* Possible values for the "weight" field in a TkFontAttributes structure.
* Weight is a subjective term and depends on what the company that created
* the font considers bold.
*/
#define TK_FW_NORMAL 0
#define TK_FW_BOLD 1
#define TK_FW_UNKNOWN -1 /* Unknown weight. This value is used for
* error checking and is never actually stored
* in the weight field. */
/*
* Possible values for the "slant" field in a TkFontAttributes structure.
*/
#define TK_FS_ROMAN 0
#define TK_FS_ITALIC 1
#define TK_FS_OBLIQUE 2 /* This value is only used when parsing X font
* names to determine the closest match. It is
* only stored in the XLFDAttributes
* structure, never in the slant field of the
* TkFontAttributes. */
#define TK_FS_UNKNOWN -1 /* Unknown slant. This value is used for error
* checking and is never actually stored in
* the slant field. */
/*
* The following structure keeps track of the metrics for an instantiated
* font. The metrics are the physical properties of the font itself.
*/
typedef struct TkFontMetrics {
int ascent; /* From baseline to top of font. */
int descent; /* From baseline to bottom of font. */
int maxWidth; /* Width of widest character in font. */
int fixed; /* Non-zero if this is a fixed-width font,
* 0 otherwise. */
} TkFontMetrics;
/*
* The following structure is used to keep track of the generic information
* about a font. Each platform-specific font is represented by a structure
* with the following structure at its beginning, plus any platform-specific
* stuff after that.
*/
typedef struct TkFont {
/*
* Fields used and maintained exclusively by generic code.
*/
int resourceRefCount; /* Number of active uses of this font (each
* active use corresponds to a call to
* Tk_AllocFontFromTable or Tk_GetFont). If
* this count is 0, then this TkFont structure
* is no longer valid and it isn't present in
* a hash table: it is being kept around only
* because there are objects referring to it.
* The structure is freed when
* resourceRefCount and objRefCount are both
* 0. */
int objRefCount; /* The number of Tcl objects that reference
* this structure. */
Tcl_HashEntry *cacheHashPtr;/* Entry in font cache for this structure,
* used when deleting it. */
Tcl_HashEntry *namedHashPtr;/* Pointer to hash table entry that
* corresponds to the named font that the
* tkfont was based on, or NULL if the tkfont
* was not based on a named font. */
Screen *screen; /* The screen where this font is valid. */
int tabWidth; /* Width of tabs in this font (pixels). */
int underlinePos; /* Offset from baseline to origin of underline
* bar (used for drawing underlines on a
* non-underlined font). */
int underlineHeight; /* Height of underline bar (used for drawing
* underlines on a non-underlined font). */
/*
* Fields used in the generic code that are filled in by
* platform-specific code.
*/
Font fid; /* For backwards compatibility with XGCValues
* structures. Remove when TkGCValues is
* implemented. */
TkFontAttributes fa; /* Actual font attributes obtained when the
* the font was created, as opposed to the
* desired attributes passed in to
* TkpGetFontFromAttributes(). The desired
* metrics can be determined from the string
* that was used to create this font. */
TkFontMetrics fm; /* Font metrics determined when font was
* created. */
struct TkFont *nextPtr; /* Points to the next TkFont structure with
* the same name. All fonts with the same name
* (but different displays) are chained
* together off a single entry in a hash
* table. */
} TkFont;
/*
* The following structure is used to return attributes when parsing an XLFD.
* The extra information is of interest to the Unix-specific code when
* attempting to find the closest matching font.
*/
typedef struct TkXLFDAttributes {
Tk_Uid foundry; /* The foundry of the font. */
int slant; /* The tristate value for the slant, which is
* significant under X. */
int setwidth; /* The proportionate width, see below for
* definition. */
Tk_Uid charset; /* The actual charset string. */
} TkXLFDAttributes;
/*
* Possible values for the "setwidth" field in a TkXLFDAttributes structure.
* The setwidth is whether characters are considered wider or narrower than
* normal.
*/
#define TK_SW_NORMAL 0
#define TK_SW_CONDENSE 1
#define TK_SW_EXPAND 2
#define TK_SW_UNKNOWN 3 /* Unknown setwidth. This value may be stored
* in the setwidth field. */
/*
* The following defines specify the meaning of the fields in a fully
* qualified XLFD.
*/
#define XLFD_FOUNDRY 0
#define XLFD_FAMILY 1
#define XLFD_WEIGHT 2
#define XLFD_SLANT 3
#define XLFD_SETWIDTH 4
#define XLFD_ADD_STYLE 5
#define XLFD_PIXEL_SIZE 6
#define XLFD_POINT_SIZE 7
#define XLFD_RESOLUTION_X 8
#define XLFD_RESOLUTION_Y 9
#define XLFD_SPACING 10
#define XLFD_AVERAGE_WIDTH 11
#define XLFD_CHARSET 12
#define XLFD_NUMFIELDS 13 /* Number of fields in XLFD. */
/*
* Helper macro. How to correctly round a double to a short.
*/
#define ROUND16(x) ((short) floor((x) + 0.5))
/*
* Low-level API exported by generic code to platform-specific code.
*/
#define TkInitFontAttributes(fa) memset((fa), 0, sizeof(TkFontAttributes));
#define TkInitXLFDAttributes(xa) memset((xa), 0, sizeof(TkXLFDAttributes));
MODULE_SCOPE int TkFontParseXLFD(const char *string,
TkFontAttributes *faPtr, TkXLFDAttributes *xaPtr);
MODULE_SCOPE const char *const * TkFontGetAliasList(const char *faceName);
MODULE_SCOPE const char *const *const * TkFontGetFallbacks(void);
MODULE_SCOPE int TkFontGetPixels(Tk_Window tkwin, int size);
MODULE_SCOPE int TkFontGetPoints(Tk_Window tkwin, int size);
MODULE_SCOPE const char *const * TkFontGetGlobalClass(void);
MODULE_SCOPE const char *const * TkFontGetSymbolClass(void);
MODULE_SCOPE int TkCreateNamedFont(Tcl_Interp *interp, Tk_Window tkwin,
const char *name, TkFontAttributes *faPtr);
MODULE_SCOPE int TkDeleteNamedFont(Tcl_Interp *interp,
Tk_Window tkwin, const char *name);
MODULE_SCOPE int TkFontGetFirstTextLayout(Tk_TextLayout layout,
Tk_Font *font, char *dst);
/*
* Low-level API exported by platform-specific code to generic code.
*/
MODULE_SCOPE void TkpDeleteFont(TkFont *tkFontPtr);
MODULE_SCOPE void TkpFontPkgInit(TkMainInfo *mainPtr);
MODULE_SCOPE TkFont * TkpGetFontFromAttributes(TkFont *tkFontPtr,
Tk_Window tkwin, const TkFontAttributes *faPtr);
MODULE_SCOPE void TkpGetFontFamilies(Tcl_Interp *interp,
Tk_Window tkwin);
MODULE_SCOPE TkFont * TkpGetNativeFont(Tk_Window tkwin, const char *name);
#endif /* _TKFONT */
|