Lines Matching refs:font

209 fontMetrics(FontPtr font)
214 font->metrics.maxAwidth = 0;
215 font->metrics.maxX = -10000 * TWO_SIXTEENTH;
216 font->metrics.maxY = -10000 * TWO_SIXTEENTH;
217 font->metrics.minX = 10000 * TWO_SIXTEENTH;
218 font->metrics.minY = 10000 * TWO_SIXTEENTH;
222 int rc = glyphMetrics(font, i, &awidth, &x0, &y0, &x1, &y1);
226 if(awidth > font->metrics.maxAwidth) font->metrics.maxAwidth = awidth;
227 if(x0 < font->metrics.minX) font->metrics.minX = x0;
228 if(y0 < font->metrics.minY) font->metrics.minY = y0;
229 if(x1 > font->metrics.maxX) font->metrics.maxX = x1;
230 if(y1 > font->metrics.maxY) font->metrics.maxY = y1;
238 if (count) font->metrics.awidth = sumAwidth / count;
240 font->metrics.size = TWO_SIXTEENTH;
242 if(font->pxMetrics.size == UNDEF) {
243 font->pxMetrics.size = font->pxMetrics.height;
246 font->metrics.height = font->pxMetrics.height
247 * font->metrics.size / font->pxMetrics.size;
249 if(font->pxMetrics.ascent == UNDEF) {
250 font->metrics.ascent = font->metrics.maxY;
251 font->pxMetrics.ascent =
252 font->metrics.ascent
253 * font->pxMetrics.size / font->metrics.size;
256 font->metrics.ascent =
257 font->pxMetrics.ascent
258 * font->metrics.size / font->pxMetrics.size;
260 if(font->pxMetrics.descent == UNDEF) {
261 font->metrics.descent = - font->metrics.minY;
262 font->pxMetrics.descent =
263 font->metrics.descent
264 * font->pxMetrics.size / font->metrics.size;
267 font->metrics.descent =
268 font->pxMetrics.descent
269 * font->metrics.size / font->pxMetrics.size;
271 if(font->pxMetrics.capHeight == UNDEF) {
272 if(glyphMetrics(font, 'X', NULL, NULL, NULL, NULL, &font->metrics.capHeight) != 1)
273 font->metrics.capHeight = font->metrics.ascent;
274 font->pxMetrics.capHeight =
275 font->metrics.capHeight * font->pxMetrics.size / font->metrics.size;
278 font->metrics.capHeight =
279 font->pxMetrics.capHeight
280 * font->metrics.size / font->pxMetrics.size;
282 if(font->pxMetrics.xHeight == UNDEF) {
283 if(glyphMetrics(font, 'x', NULL, NULL, NULL, NULL, &font->metrics.xHeight) != 1)
284 font->metrics.xHeight = font->metrics.capHeight * 2 / 3;
285 font->pxMetrics.xHeight =
286 font->metrics.xHeight * font->pxMetrics.size / font->metrics.size;
289 font->metrics.xHeight =
290 font->pxMetrics.xHeight
291 * font->metrics.size / font->pxMetrics.size;
293 if(font->pxMetrics.underlinePosition == UNDEF)
294 font->metrics.underlinePosition = - font->metrics.descent * 2;
296 font->metrics.underlinePosition =
297 font->pxMetrics.underlinePosition
298 * font->metrics.size / font->pxMetrics.size;
301 if(font->pxMetrics.underlineThickness == UNDEF)
305 * by also considering the font weight. */
306 font->metrics.underlineThickness =
307 font->metrics.size
308 / (font->pxMetrics.size < 9 ? font->pxMetrics.size : 9);
310 font->metrics.underlineThickness =
311 font->pxMetrics.underlineThickness
312 * font->metrics.size / font->pxMetrics.size;
316 writeFile(char *filename, FontPtr font)
332 current_cmap = makeCmap(font);
338 fontMetrics(font);
359 strike = font->strikes;
394 rc = writeDir(out, font, i, tables);
406 rc = table_writers[j](out, font);
427 rc = fixupDir(out, font, i, offset, length);
456 writeDir(FILE *out, FontPtr font, int numTables, unsigned *tables)
506 fixupDir(FILE *out, FontPtr font, int numTables, int *offset, int *length)
538 writehead(FILE* out, FontPtr font)
558 writeUSHORT(out, FONT_UNITS_FLOOR(font->metrics.minX));
559 writeUSHORT(out, FONT_UNITS_FLOOR(font->metrics.minY));
560 writeUSHORT(out, FONT_UNITS_CEIL(font->metrics.maxX));
561 writeUSHORT(out, FONT_UNITS_CEIL(font->metrics.maxY));
563 writeUSHORT(out, font->flags); /* macStyle */
607 writeEBDT(FILE* out, FontPtr font)
618 strike = font->strikes;
654 writeEBLC(FILE* out, FontPtr font)
659 degreesToFraction(font->italicAngle, &num, &den);
662 strike = font->strikes;
674 strike = font->strikes;
682 writeCHAR(out, font->pxMetrics.ascent); /* ascender */
683 writeCHAR(out, -font->pxMetrics.descent); /* descender */
705 strike = font->strikes;
741 strike = font->strikes;
813 writeBYTE(out, font->metrics.maxAwidth); /* vertAdvance */
847 writecmap(FILE* out, FontPtr font)
867 writeUSHORT(out, (font->flags & FACE_SYMBOL) ? 0 : 1);
932 writeglyf(FILE* out, FontPtr font)
938 writehhea(FILE* out, FontPtr font)
941 degreesToFraction(font->italicAngle, &num, &den);
944 writeSHORT(out, FONT_UNITS_FLOOR(font->metrics.ascent)); /* ascender */
945 writeSHORT(out, -FONT_UNITS_FLOOR(font->metrics.descent)); /* descender */
946 writeSHORT(out, FONT_UNITS(font->metrics.size - font->metrics.ascent - font->metrics.descent)); /* lineGap */
947 writeUSHORT(out, FONT_UNITS(font->metrics.maxAwidth)); /* advanceWidthMax */
950 writeSHORT(out, FONT_UNITS_FLOOR(font->metrics.minX)); /* minLeftSideBearing */
951 writeSHORT(out, FONT_UNITS_FLOOR(font->metrics.minX)); /* minRightSideBearing */
952 writeSHORT(out, FONT_UNITS_CEIL(font->metrics.maxX)); /* xMaxExtent */
966 writehmtx(FILE* out, FontPtr font)
974 rc = glyphMetrics(font, code, &width, &lsb, NULL, NULL, NULL);
990 writeloca(FILE* out, FontPtr font)
1001 writemaxp(FILE* out, FontPtr font)
1022 writename(FILE* out, FontPtr font)
1027 writeUSHORT(out, font->numNames);
1028 writeUSHORT(out, 6 + font->numNames * 12); /* offset to string storage */
1030 for(int i = 0; i < font->numNames; i++) {
1034 writeUSHORT(out, font->names[i].nid); /* name id */
1035 writeUSHORT(out, font->names[i].size); /* string length */
1037 offset += font->names[i].size;
1039 for(int i = 0; i < font->numNames; i++)
1040 writeCHARs(out, font->names[i].value, font->names[i].size);
1045 writepost(FILE* out, FontPtr font)
1053 int rc = glyphMetrics(font, i, &width, NULL, NULL, NULL, NULL);
1066 writeULONG(out, font->italicAngle); /* italicAngle */
1067 writeSHORT(out, FONT_UNITS(font->metrics.underlinePosition));
1068 writeSHORT(out, FONT_UNITS(font->metrics.underlineThickness));
1078 writeOS2(FILE* out, FontPtr font)
1083 writeSHORT(out, FONT_UNITS(font->metrics.awidth)); /* xAvgCharWidth; */
1084 writeUSHORT(out, font->weight); /* usWeightClass; */
1085 writeUSHORT(out, font->width); /* usWidthClass; */
1095 writeSHORT(out, FONT_UNITS(font->metrics.underlineThickness));
1105 writeULONG(out, font->foundry); /* achVendID[4]; */
1107 if (font->flags & FACE_ITALIC)
1109 if (font->flags & FACE_BOLD)
1119 writeUSHORT(out, FONT_UNITS_FLOOR(font->metrics.ascent)); /* sTypoAscender; */
1120 writeSHORT(out, -FONT_UNITS_FLOOR(font->metrics.descent)); /* sTypoDescender; */
1121 writeSHORT(out, FONT_UNITS(font->metrics.size - font->metrics.ascent - font->metrics.descent)); /* sTypoLineGap */
1123 writeUSHORT(out, FONT_UNITS_FLOOR(font->metrics.ascent)); /* usWinAscent; */
1124 writeUSHORT(out, FONT_UNITS_FLOOR(font->metrics.descent)); /* usWinDescent; */
1126 writeUSHORT(out, FONT_UNITS_FLOOR(font->metrics.maxY)); /* usWinAscent; */
1127 writeUSHORT(out, -FONT_UNITS_FLOOR(font->metrics.minY)); /* usWinDescent; */
1131 writeSHORT(out, FONT_UNITS_CEIL(font->metrics.xHeight)); /* sxHeight; */
1132 writeSHORT(out, FONT_UNITS_CEIL(font->metrics.capHeight)); /* sCapHeight; */
1142 writePCLT(FILE* out, FontPtr font)
1144 char name[16] = "X11 font ";
1151 if(font->flags & FACE_ITALIC)
1154 w = (font->weight + 50) / 100;
1162 if(font->width <= 2)
1164 else if(font->width <= 4)
1166 else if(font->width <= 6)
1168 else if(font->width <= 7)
1175 writeUSHORT(out, FONT_UNITS(font->metrics.maxAwidth)); /* pitch */
1176 writeUSHORT(out, FONT_UNITS(font->metrics.xHeight)); /* xHeight */
1179 writeUSHORT(out, FONT_UNITS(font->metrics.xHeight)); /* CapHeight */