FON文件格式.doc_第1页
FON文件格式.doc_第2页
FON文件格式.doc_第3页
FON文件格式.doc_第4页
FON文件格式.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FON文件格式From Vault-Tec LabsFallout的FON文件格式本文主要介绍FON文件的格式。这些信息都是来自于Mapper2.exe上相关功能的复习过程。下面所使用的结构体名称以及结构体中变量的名称都是参照于在Mapper2.exe的调试信息。背景介绍FON文件上的字体是用在Fallout worldmap(译者按:查不到这两个单词的合适意思,应该是一种平台什么的,或者是游戏,曾经有游戏个叫做Fallout的)上显示信息的(依照荒地幽灵(the Wasteland Ghost)的资料)。这种格式的字体不支持缩放、光栅并且不包含反锯齿信息。文件格式FON文件的格式在表2.1中给出偏移量大小类型说明0x00004int文件头文件中字符映像的个数。在下面的代码中使用标识符num。说明:某些映射可能被忽略了0x00044int字体高度(点)0x00084int相邻字符间距(点)0x000C4FontInfo*一个指向描述字符的结构体数组的指针。说明:这个字段只是在计算机内存中有重要作用,在文件中它没有含义。0x00104unsigned char*一个指向字符数据映像的数组的指针。说明:这个字段只是在计算机内存中有重要作用,在文件中它没有0x00144int一个对字符进行描述的数组第0个字符的宽度0x00184int第0个字符在数据块中的位置0x001C4int第1个字符的宽度0x00204int第0个字符在数据块中的位置.0x0014 + 8 * num1unsigned char字符映像数据.表2.1为了对FON文件进行映射,Fallout中采用下面的结构体:文件头typedef struct int num; /文件包含的字符数目int height; /字体高度int spacing; /字体相邻字符间距FontInfo* info; /指向结构数组的指针,描述字体unsigned char* data;/指向结构数组的指针,描述符号 Font;字符描述typedef struct int width;/字符宽度int offset;/字符在数据块中的映射位置 FontInfo;下面这些是决定字符数据块大小的因素:last = font.num-1;/ 最后一个字符的索引size = last.offset + (last.width + 7) / 8 * font.height;通过结构体来计算:(last.width + 7) / 8决定于需要储存的在同一行上的字符映像多少。可将映像信息当作一个点阵来储存。例子一个8x16像素的符号的映像数据表示如下00 00 7e 81 a5 81 81 bd 99 81 81 7e 00 00 00 00需要储存的同一行的符号映像信息的字节数bytesPerLine = (8 + 7) / 8 = 1点阵采取如下的形式:00 00000000 .00 00000000 . 7e 01111110 .#. 81 10000001 #.# a5 10100101 #.#.#.# 81 10000001 #.# 81 10000001 #.# bd = 10111101 = #.#.# 99 10011001 #.#.# 81 10000001 #.# 81 10000001 #.# 7e 01111110 .#. 00 00000000 . 00 00000000 . 00 00000000 . 00 00000000 .FON-viewer的源代码该程序在MSVS 2003. NET下编译通过/ Fallout FON-file viewer#include #include #pragma pack(1) / Struct memory alignment - 1 bytestypedef struct int width; int offset; FontInfo;typedef struct int num; int height; int spacing; FontInfo* info; unsigned char* data; Font;int main(int argc, char* argv) FILE* fp; Font font; int last; int size; int i; printf(Fallout FON-files viewer, version 1.0n); printf(Copyright (C) Anchorite (TeamX), 2005n); printf(anchorite2001yandex.run); printf(n); if (argc 2) printf(Usage: %s file.fonn, argv0); return 1; / Read file fp = fopen(argv1, rb); if (!fp) printf(Error: Unable open %sn, argv1); return -1; if (fread(&font, sizeof(font), 1, fp) != 1) printf(Error: Unable read FON-file headern); fclose(fp); return -1; = malloc(font.num * sizeof(FontInfo); if ( = NULL) printf(Error: Unable allocate memory for glyphs infon); fclose(fp); return -1; if (fread(, sizeof(FontInfo), font.num, fp) != font.num) printf(Error: Unable read info about glyphsn); free(); fclose(fp); return -1; last = font.num - 1; size = last.offset + (last.width + 7) / 8 * font.height; font.data = malloc(size); if (font.data = NULL) printf(Error: Unable allocate memory for glyphsn); free(); fclose(fp); return -1; if (fread(font.data, 1, size, fp) != size) printf(Error: Unable read glyphsn); free(font.data); free(); fclose(fp); return -1; fclose(fp); / Font info printf(Number of glyphs: %dn, font.num); printf(Height: %dn, font.height); printf(Spacing: %dn, font.spacing); printf(n); / Glyphs for(i = 0; i font.num; i+) printf(Glyph %d (0x%02X)n, i, i); printf(=n); printf(Width: %dn, i.width); printf(Offset: 0x%08X (%d)n, i.offset, i.offset); printf(Offset from begin of file: 0x%08X (%d)n, sizeof(font) + sizeof(FontInfo) * font.num + i.offset, sizeof(font) + sizeof(FontInfo) * font.num + i.offset); printf(n); if (font.height * i.width != 0) int offset = i.offset; int bytesPerLine = (i.width + 7) / 8; int j; int h; for(h = 0; h font.height; h+) for(j = 0; j i.width; j+) if (font.dataoffset + h * bytesPerLine + (j / 8) & (1 (7 - (j % 8) printf(#); else printf(.); printf(n); printf(n); printf(n); el

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论