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)