Annotation of 43BSDReno/old/vpr/vtools/vwidth.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1983 Regents of the University of California.
        !             3:  * All rights reserved.  The Berkeley software License Agreement
        !             4:  * specifies the terms and conditions for redistribution.
        !             5:  */
        !             6: 
        !             7: #ifndef lint
        !             8: static char sccsid[] = "@(#)vwidth.c   5.1 (Berkeley) 5/15/85";
        !             9: #endif not lint
        !            10: 
        !            11: /*
        !            12:  *     Creates a width table for troff from a versatec font for a
        !            13:  *             normal font.
        !            14:  *     Usage: width font [ point_size ]
        !            15:  *             where font is the file name of the versatec font and
        !            16:  *             point_size is it point size.
        !            17:  *     If the point size is omitted it is taken from the suffix of
        !            18:  *     the font name, as bocklin.14 => 14 point.
        !            19:  *     It is better to use as large a point size font as possible 
        !            20:  *     to avoid round off.
        !            21:  */
        !            22: 
        !            23: #include <stdio.h>
        !            24: 
        !            25: struct wtable {
        !            26:        char    charloc;
        !            27:        char    *name;
        !            28: } wtable[] = {
        !            29:        '\214', "space",
        !            30:        '!',    "!",
        !            31:        '"',    "\"",
        !            32:        '#',    "#",
        !            33:        '$',    "$",
        !            34:        '%',    "%",
        !            35:        '&',    "&",
        !            36:        '\'',   "'",
        !            37:        '(',    "(",
        !            38:        ')',    ")",
        !            39:        '*',    "*",
        !            40:        '+',    "+",
        !            41:        ',',    ",",
        !            42:        '-',    "- hyphen",
        !            43:        '.',    ".",
        !            44:        '/',    "/",
        !            45:        '0',    "0",
        !            46:        '1',    "1",
        !            47:        '2',    "2",
        !            48:        '3',    "3",
        !            49:        '4',    "4",
        !            50:        '5',    "5",
        !            51:        '6',    "6",
        !            52:        '7',    "7",
        !            53:        '8',    "8",
        !            54:        '9',    "9",
        !            55:        ':',    ":",
        !            56:        ';',    ";",
        !            57:        '<',    "<",
        !            58:        '=',    "=",
        !            59:        '>',    ">",
        !            60:        '?',    "?",
        !            61:        '@',    "@",
        !            62:        'A',    "A",
        !            63:        'B',    "B",
        !            64:        'C',    "C",
        !            65:        'D',    "D",
        !            66:        'E',    "E",
        !            67:        'F',    "F",
        !            68:        'G',    "G",
        !            69:        'H',    "H",
        !            70:        'I',    "I",
        !            71:        'J',    "J",
        !            72:        'K',    "K",
        !            73:        'L',    "L",
        !            74:        'M',    "M",
        !            75:        'N',    "N",
        !            76:        'O',    "O",
        !            77:        'P',    "P",
        !            78:        'Q',    "Q",
        !            79:        'R',    "R",
        !            80:        'S',    "S",
        !            81:        'T',    "T",
        !            82:        'U',    "U",
        !            83:        'V',    "V",
        !            84:        'W',    "W",
        !            85:        'X',    "X",
        !            86:        'Y',    "Y",
        !            87:        'Z',    "Z",
        !            88:        '[',    "[",
        !            89:        '\\',   "\\",
        !            90:        ']',    "]",
        !            91:        '^',    "^",
        !            92:        '_',    "_",
        !            93:        '\`',   "\`",
        !            94:        'a',    "a",
        !            95:        'b',    "b",
        !            96:        'c',    "c",
        !            97:        'd',    "d",
        !            98:        'e',    "e",
        !            99:        'f',    "f",
        !           100:        'g',    "g",
        !           101:        'h',    "h",
        !           102:        'i',    "i",
        !           103:        'j',    "j",
        !           104:        'k',    "k",
        !           105:        'l',    "l",
        !           106:        'm',    "m",
        !           107:        'n',    "n",
        !           108:        'o',    "o",
        !           109:        'p',    "p",
        !           110:        'q',    "q",
        !           111:        'r',    "r",
        !           112:        's',    "s",
        !           113:        't',    "t",
        !           114:        'u',    "u",
        !           115:        'v',    "v",
        !           116:        'w',    "w",
        !           117:        'x',    "x",
        !           118:        'y',    "y",
        !           119:        'z',    "z",
        !           120:        '{',    "{",
        !           121:        '|',    "|",
        !           122:        '}',    "}",
        !           123:        '~',    "~",
        !           124:        '\206', "narrow space",
        !           125:        '-',    "hyphen",
        !           126:        '\07',  "bullet",
        !           127:        '\010', "square",
        !           128:        '\06',  "3/4 em dash",
        !           129:        '\05',  "rule",
        !           130:        '\021', "1/4",
        !           131:        '\022', "1/2",
        !           132:        '\023', "3/4",
        !           133:        '\04',  "minus",
        !           134:        '\01',  "fi",
        !           135:        '\02',  "fl",
        !           136:        '\03',  "ff",
        !           137:        '\011', "ffi",
        !           138:        '\012', "ffl",
        !           139:        '\013', "degree",
        !           140:        '\014', "dagger",
        !           141:        '\200', "section (unimplem)",
        !           142:        '\015', "foot mark",
        !           143:        '\200', "acute acc (unimplem)",
        !           144:        '\200', "grave acc (unimplem)",
        !           145:        '\200', "underrule (unimplem)",
        !           146:        '\200', "slash (unimplem)",
        !           147:        '\203', "half narrow space",
        !           148:        '\200', "null",
        !           149:        '\200', "null",
        !           150:        '\200', "null",
        !           151:        '\200', "null",
        !           152:        '\200', "null",
        !           153:        '\200', "null",
        !           154:        '\200', "null",
        !           155:        '\200', "null",
        !           156:        '\200', "null",
        !           157:        '\200', "null",
        !           158:        '\200', "null",
        !           159:        '\200', "null",
        !           160:        '\200', "null",
        !           161:        '\200', "null",
        !           162:        '\200', "null",
        !           163:        '\200', "null",
        !           164:        '\200', "null",
        !           165:        '\200', "null",
        !           166:        '\200', "null",
        !           167:        '\200', "null",
        !           168:        '\200', "null",
        !           169:        '\200', "null",
        !           170:        '\200', "null",
        !           171:        '\200', "null",
        !           172:        '\200', "null",
        !           173:        '\200', "null",
        !           174:        '\200', "null",
        !           175:        '\200', "null",
        !           176:        '\200', "null",
        !           177:        '\200', "null",
        !           178:        '\200', "null",
        !           179:        '\200', "null",
        !           180:        '\200', "null",
        !           181:        '\200', "null",
        !           182:        '\200', "null",
        !           183:        '\200', "null",
        !           184:        '\200', "null",
        !           185:        '\200', "null",
        !           186:        '\200', "null",
        !           187:        '\200', "null",
        !           188:        '\200', "null",
        !           189:        '\200', "null",
        !           190:        '\200', "null",
        !           191:        '\200', "null",
        !           192:        '\200', "null",
        !           193:        '\200', "null",
        !           194:        '\200', "null",
        !           195:        '\200', "null",
        !           196:        '\200', "null",
        !           197:        '\200', "null",
        !           198:        '\200', "null",
        !           199:        '\200', "null",
        !           200:        '\200', "null",
        !           201:        '\200', "null",
        !           202:        '\200', "null",
        !           203:        '\200', "null",
        !           204:        '\200', "null",
        !           205:        '\200', "null",
        !           206:        '\200', "null",
        !           207:        '\200', "null",
        !           208:        '\200', "null",
        !           209:        '\200', "null",
        !           210:        '\200', "null",
        !           211:        '\200', "null",
        !           212:        '\200', "null",
        !           213:        '\200', "null",
        !           214:        '\200', "null",
        !           215:        '\200', "null",
        !           216:        '\200', "null",
        !           217:        '\200', "null",
        !           218:        '\200', "null",
        !           219:        '\017', "registered",
        !           220:        '\016', "copyright",
        !           221:        '\200', "null",
        !           222:        '\020', "cent",
        !           223:        0,      0
        !           224: };
        !           225: 
        !           226: struct desc {
        !           227:        short   addr;
        !           228:        short   nbytes;
        !           229:        char    up;
        !           230:        char    down;
        !           231:        char    left;
        !           232:        char    right;
        !           233:        short   width;
        !           234: } desc[256];
        !           235: 
        !           236: main(argc, argv)
        !           237:        int argc;
        !           238:        char *argv[];
        !           239: {
        !           240:        register int cl;
        !           241:        register esc;
        !           242:        register w;
        !           243:        int i, psize;
        !           244:        int fd, high;
        !           245: 
        !           246:        if (argc != 3 && argc != 2) {
        !           247:                printf("Usage: vwidth font [pointsize] > font.c\n");
        !           248:                exit(1);
        !           249:        }
        !           250:        fd = open(argv[1], 0);
        !           251:        if (argc == 3)
        !           252:                psize = atoi(argv[2]);
        !           253:        else {
        !           254:                char *p;
        !           255:                for (p = argv[1]; *p && *p != '.'; p++)
        !           256:                        ;
        !           257:                if (*p == 0) {
        !           258:                        psize = 10;
        !           259:                        fprintf(stderr, "Assuming %d point\n", psize);
        !           260:                } else
        !           261:                        psize = atoi(p+1);
        !           262:        }
        !           263:        lseek(fd, 10L, 0);
        !           264:        read(fd, desc, sizeof desc);
        !           265:        high = desc['a'].up+1;
        !           266:        printf("char XXw[256-32] = {\n");
        !           267:        for (i = 0; wtable[i].charloc != 0; i++) {
        !           268:                cl = wtable[i].charloc & 0377;
        !           269:                if (cl & 0200)
        !           270:                        w = cl & 0177;
        !           271:                else
        !           272:                        w = desc[cl].width*(54./25.)*(6./psize)+.5;
        !           273:                esc = 0;
        !           274:                if ((cl >= '0' && cl <= '9') || (cl >= 'A' && cl <= 'Z') ||
        !           275:                    (cl >= 'a' && cl <= 'z')) {
        !           276:                        if (desc[cl].up > high)
        !           277:                                esc |= 0200;
        !           278:                        if (desc[cl].down > 0)
        !           279:                                esc |= 0100;
        !           280:                }
        !           281:                if (esc)
        !           282:                        printf("%d+0%o,\t/* %s */\n", w, esc, wtable[i].name);
        !           283:                else
        !           284:                        printf("%d,\t\t/* %s */\n", w, wtable[i].name);
        !           285:        }
        !           286:        printf("};\n");
        !           287: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.