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
)