4
* build/parse X Font name strings
13
extractStringField (name, buffer, size, attrp, bit)
24
while (*name && *name != '-' && size > 0) {
31
if (buffer[0] != '*' || buffer[1] != '\0')
39
extractUnsignedField (name, result, attrp, bit)
49
name = extractStringField (name, buf, sizeof (buf), attrp, bit);
55
for (c = buf; *c; c++) {
58
i = i * 10 + (*c - '0');
65
XParseFontName (fontNameString, fontName, fontNameAttributes)
66
XFontNameString fontNameString;
68
unsigned int *fontNameAttributes;
70
char *name = fontNameString;
72
unsigned int attributes = 0;
74
#define GetString(field,bit)\
75
if (!(name = extractStringField \
76
(name, temp.field, sizeof (temp.field),\
80
#define GetUnsigned(field,bit)\
81
if (!(name = extractUnsignedField \
86
GetString (Registry, FontNameRegistry)
87
GetString (Foundry, FontNameFoundry)
88
GetString (FamilyName, FontNameFamilyName)
89
GetString (WeightName, FontNameWeightName)
90
GetString (Slant, FontNameSlant)
91
GetString (SetwidthName, FontNameSetwidthName)
92
GetString (AddStyleName, FontNameAddStyleName)
93
GetUnsigned (PixelSize, FontNamePixelSize)
94
GetUnsigned (PointSize, FontNamePointSize)
95
GetUnsigned (ResolutionX, FontNameResolutionX)
96
GetUnsigned (ResolutionY, FontNameResolutionY)
97
GetString (Spacing, FontNameSpacing)
98
GetUnsigned (AverageWidth, FontNameAverageWidth)
99
GetString (CharSetRegistry, FontNameCharSetRegistry)
101
temp.CharSetEncoding[0] = '\0';
102
attributes |= FontNameCharSetEncoding;
104
GetString (CharSetEncoding, FontNameCharSetEncoding)
107
*fontNameAttributes = attributes;
122
*--t = (u % 10) + '0';
128
XFormatFontName (fontName, fontNameAttributes, fontNameString)
130
unsigned int fontNameAttributes;
131
XFontNameString fontNameString;
134
char *name = tmp, *f;
135
int left = sizeof (tmp) - 1;
138
#define PutString(field, bit)\
139
f = (fontNameAttributes & bit) ? \
142
if ((left -= strlen (f)) < 0) \
145
if ((*name++ = *f++) == '-') \
152
#define PutUnsigned(field, bit) \
153
f = (fontNameAttributes & bit) ? \
154
utoa (fontName->field, number, sizeof (number)) \
156
if ((left -= strlen (f)) < 0) \
161
PutString (Registry, FontNameRegistry)
163
PutString (Foundry, FontNameFoundry)
165
PutString (FamilyName, FontNameFamilyName)
167
PutString (WeightName, FontNameWeightName)
169
PutString (Slant, FontNameSlant)
171
PutString (SetwidthName, FontNameSetwidthName)
173
PutString (AddStyleName, FontNameAddStyleName)
175
PutUnsigned (PixelSize, FontNamePixelSize)
177
PutUnsigned (PointSize, FontNamePointSize)
179
PutUnsigned (ResolutionX, FontNameResolutionX)
181
PutUnsigned (ResolutionY, FontNameResolutionY)
183
PutString (Spacing, FontNameSpacing)
185
PutUnsigned (AverageWidth, FontNameAverageWidth)
187
PutString (CharSetRegistry, FontNameCharSetRegistry)
189
PutString (CharSetEncoding, FontNameCharSetEncoding)
191
strcpy (fontNameString, tmp);
196
XCompareFontName (name1, name2, fontNameAttributes)
197
XFontName *name1, *name2;
198
unsigned int fontNameAttributes;
200
#define CompareString(field,bit) \
201
if (fontNameAttributes & bit) \
202
if (strcmp (name1->field, name2->field)) \
205
#define CompareUnsigned(field,bit) \
206
if (fontNameAttributes & bit) \
207
if (name1->field != name2->field) \
210
CompareString (Registry, FontNameRegistry)
211
CompareString (Foundry, FontNameFoundry)
212
CompareString (FamilyName, FontNameFamilyName)
213
CompareString (WeightName, FontNameWeightName)
214
CompareString (Slant, FontNameSlant)
215
CompareString (SetwidthName, FontNameSetwidthName)
216
CompareString (AddStyleName, FontNameAddStyleName)
217
CompareUnsigned (PixelSize, FontNamePixelSize)
218
CompareUnsigned (PointSize, FontNamePointSize)
219
CompareUnsigned (ResolutionX, FontNameResolutionX)
220
CompareUnsigned (ResolutionY, FontNameResolutionY)
221
CompareString (Spacing, FontNameSpacing)
222
CompareUnsigned (AverageWidth, FontNameAverageWidth)
223
CompareString (CharSetRegistry, FontNameCharSetRegistry)
224
CompareString (CharSetEncoding, FontNameCharSetEncoding)
228
XCopyFontName (name1, name2, fontNameAttributes)
229
XFontName *name1, *name2;
230
unsigned int fontNameAttributes;
232
#define CopyString(field,bit) \
233
if (fontNameAttributes & bit) \
234
strcpy (name2->field, name1->field);
236
#define CopyUnsigned(field,bit) \
237
if (fontNameAttributes & bit) \
238
name2->field = name1->field;
240
CopyString (Registry, FontNameRegistry)
241
CopyString (Foundry, FontNameFoundry)
242
CopyString (FamilyName, FontNameFamilyName)
243
CopyString (WeightName, FontNameWeightName)
244
CopyString (Slant, FontNameSlant)
245
CopyString (SetwidthName, FontNameSetwidthName)
246
CopyString (AddStyleName, FontNameAddStyleName)
247
CopyUnsigned (PixelSize, FontNamePixelSize)
248
CopyUnsigned (PointSize, FontNamePointSize)
249
CopyUnsigned (ResolutionX, FontNameResolutionX)
250
CopyUnsigned (ResolutionY, FontNameResolutionY)
251
CopyString (Spacing, FontNameSpacing)
252
CopyUnsigned (AverageWidth, FontNameAverageWidth)
253
CopyString (CharSetRegistry, FontNameCharSetRegistry)
254
CopyString (CharSetEncoding, FontNameCharSetEncoding)