4 * build/parse X Font name strings
8 # include "XFontName.h"
12 extractStringField (name
, buffer
, size
, attrp
, bit
)
23 while (*name
&& *name
!= '-' && size
> 0) {
30 if (buffer
[0] != '*' || buffer
[1] != '\0')
38 extractUnsignedField (name
, result
, attrp
, bit
)
48 name
= extractStringField (name
, buf
, sizeof (buf
), attrp
, bit
);
54 for (c
= buf
; *c
; c
++) {
57 i
= i
* 10 + (*c
- '0');
64 XParseFontName (fontNameString
, fontName
, fontNameAttributes
)
65 XFontNameString fontNameString
;
67 unsigned int *fontNameAttributes
;
69 char *name
= fontNameString
;
71 unsigned int attributes
= 0;
73 #define GetString(field,bit)\
74 if (!(name = extractStringField \
75 (name, temp.field, sizeof (temp.field),\
79 #define GetUnsigned(field,bit)\
80 if (!(name = extractUnsignedField \
85 GetString (Registry
, FontNameRegistry
)
86 GetString (Foundry
, FontNameFoundry
)
87 GetString (FamilyName
, FontNameFamilyName
)
88 GetString (WeightName
, FontNameWeightName
)
89 GetString (Slant
, FontNameSlant
)
90 GetString (SetwidthName
, FontNameSetwidthName
)
91 GetString (AddStyleName
, FontNameAddStyleName
)
92 GetUnsigned (PixelSize
, FontNamePixelSize
)
93 GetUnsigned (PointSize
, FontNamePointSize
)
94 GetUnsigned (ResolutionX
, FontNameResolutionX
)
95 GetUnsigned (ResolutionY
, FontNameResolutionY
)
96 GetString (Spacing
, FontNameSpacing
)
97 GetUnsigned (AverageWidth
, FontNameAverageWidth
)
98 GetString (CharSetRegistry
, FontNameCharSetRegistry
)
100 temp
.CharSetEncoding
[0] = '\0';
101 attributes
|= FontNameCharSetEncoding
;
103 GetString (CharSetEncoding
, FontNameCharSetEncoding
)
106 *fontNameAttributes
= attributes
;
121 *--t
= (u
% 10) + '0';
127 XFormatFontName (fontName
, fontNameAttributes
, fontNameString
)
129 unsigned int fontNameAttributes
;
130 XFontNameString fontNameString
;
133 char *name
= tmp
, *f
;
134 int left
= sizeof (tmp
) - 1;
137 #define PutString(field, bit)\
138 f = (fontNameAttributes & bit) ? \
141 if ((left -= strlen (f)) < 0) \
144 if ((*name++ = *f++) == '-') \
151 #define PutUnsigned(field, bit) \
152 f = (fontNameAttributes & bit) ? \
153 utoa (fontName->field, number, sizeof (number)) \
155 if ((left -= strlen (f)) < 0) \
160 PutString (Registry
, FontNameRegistry
)
162 PutString (Foundry
, FontNameFoundry
)
164 PutString (FamilyName
, FontNameFamilyName
)
166 PutString (WeightName
, FontNameWeightName
)
168 PutString (Slant
, FontNameSlant
)
170 PutString (SetwidthName
, FontNameSetwidthName
)
172 PutString (AddStyleName
, FontNameAddStyleName
)
174 PutUnsigned (PixelSize
, FontNamePixelSize
)
176 PutUnsigned (PointSize
, FontNamePointSize
)
178 PutUnsigned (ResolutionX
, FontNameResolutionX
)
180 PutUnsigned (ResolutionY
, FontNameResolutionY
)
182 PutString (Spacing
, FontNameSpacing
)
184 PutUnsigned (AverageWidth
, FontNameAverageWidth
)
186 PutString (CharSetRegistry
, FontNameCharSetRegistry
)
188 PutString (CharSetEncoding
, FontNameCharSetEncoding
)
190 strcpy (fontNameString
, tmp
);
194 XCompareFontName (name1
, name2
, fontNameAttributes
)
195 XFontName
*name1
, *name2
;
196 unsigned int fontNameAttributes
;
198 #define CompareString(field,bit) \
199 if (fontNameAttributes & bit) \
200 if (strcmp (name1->field, name2->field)) \
203 #define CompareUnsigned(field,bit) \
204 if (fontNameAttributes & bit) \
205 if (name1->field != name2->field) \
208 CompareString (Registry
, FontNameRegistry
)
209 CompareString (Foundry
, FontNameFoundry
)
210 CompareString (FamilyName
, FontNameFamilyName
)
211 CompareString (WeightName
, FontNameWeightName
)
212 CompareString (Slant
, FontNameSlant
)
213 CompareString (SetwidthName
, FontNameSetwidthName
)
214 CompareString (AddStyleName
, FontNameAddStyleName
)
215 CompareUnsigned (PixelSize
, FontNamePixelSize
)
216 CompareUnsigned (PointSize
, FontNamePointSize
)
217 CompareUnsigned (ResolutionX
, FontNameResolutionX
)
218 CompareUnsigned (ResolutionY
, FontNameResolutionY
)
219 CompareString (Spacing
, FontNameSpacing
)
220 CompareUnsigned (AverageWidth
, FontNameAverageWidth
)
221 CompareString (CharSetRegistry
, FontNameCharSetRegistry
)
222 CompareString (CharSetEncoding
, FontNameCharSetEncoding
)
226 XCopyFontName (name1
, name2
, fontNameAttributes
)
227 XFontName
*name1
, *name2
;
228 unsigned int fontNameAttributes
;
230 #define CopyString(field,bit) \
231 if (fontNameAttributes & bit) \
232 strcpy (name2->field, name1->field);
234 #define CopyUnsigned(field,bit) \
235 if (fontNameAttributes & bit) \
236 name2->field = name1->field;
238 CopyString (Registry
, FontNameRegistry
)
239 CopyString (Foundry
, FontNameFoundry
)
240 CopyString (FamilyName
, FontNameFamilyName
)
241 CopyString (WeightName
, FontNameWeightName
)
242 CopyString (Slant
, FontNameSlant
)
243 CopyString (SetwidthName
, FontNameSetwidthName
)
244 CopyString (AddStyleName
, FontNameAddStyleName
)
245 CopyUnsigned (PixelSize
, FontNamePixelSize
)
246 CopyUnsigned (PointSize
, FontNamePointSize
)
247 CopyUnsigned (ResolutionX
, FontNameResolutionX
)
248 CopyUnsigned (ResolutionY
, FontNameResolutionY
)
249 CopyString (Spacing
, FontNameSpacing
)
250 CopyUnsigned (AverageWidth
, FontNameAverageWidth
)
251 CopyString (CharSetRegistry
, FontNameCharSetRegistry
)
252 CopyString (CharSetEncoding
, FontNameCharSetEncoding
)