亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? format for x11 pcf bitmap font files.txt

?? linux 下X window系統pcf字庫文件格式
?? TXT
字號:
Format for X11 pcf bitmap font files
This file is based on the X11 sources. If something here disagrees with what is found in the sources, my statement is incorrect. The sources are definitive.

The pcf (portable compiled format) file format is a binary representation of a bitmap font used by the XServer. It consists of a file header followed by a series of tables, with the header containing pointers to all the tables.

File Header
The file header contains 32 bit integers stored with the least significant byte first.

char header[4];			/* always "\1fcp" */
lsbint32 table_count;
struct toc_entry {
    lsbint32 type;		/* See below, indicates which table */
    lsbint32 format;		/* See below, indicates how the data are formatted in the table */
    lsbint32 size;		/* In bytes */
    lsbint32 offset;		/* from start of file */
} tables[table_count];

The type field may be one of:

#define PCF_PROPERTIES		    (1<<0)
#define PCF_ACCELERATORS	    (1<<1)
#define PCF_METRICS		    (1<<2)
#define PCF_BITMAPS		    (1<<3)
#define PCF_INK_METRICS		    (1<<4)
#define	PCF_BDF_ENCODINGS	    (1<<5)
#define PCF_SWIDTHS		    (1<<6)
#define PCF_GLYPH_NAMES		    (1<<7)
#define PCF_BDF_ACCELERATORS	    (1<<8)

The format field may be one of:

#define PCF_DEFAULT_FORMAT	0x00000000
#define PCF_INKBOUNDS		0x00000200
#define PCF_ACCEL_W_INKBOUNDS	0x00000100
#define PCF_COMPRESSED_METRICS	0x00000100

The format field may be modified by:

#define PCF_GLYPH_PAD_MASK	(3<<0)		/* See the bitmap table for explanation */
#define PCF_BYTE_MASK		(1<<2)		/* If set then Most Sig Byte First */
#define PCF_BIT_MASK		(1<<3)		/* If set then Most Sig Bit First */
#define PCF_SCAN_UNIT_MASK	(3<<4)		/* See the bitmap table for explanation */

The format will be repeated as the first word in each table. Most tables only have one format (default), but some have alternates. The high order three bytes of the format describe the gross format. The way integers and bits are stored can be altered by adding one of the mask bits above.

All tables begin on a 32bit boundary (and will be padded with zeroes).

Properties Table
lsbint32 format; 		/* Always stored with least significant byte first! */
int32 nprops;			/* Stored in whatever byte order is specified in the format */
struct props {
    int32 name_offset;		/* Offset into the following string table */
    int8 isStringProp;
    int32 value;		/* The value for integer props, the offset for string props */
} props[nprops];
char padding[(nprops&3)==0?0:(4-(nprops&3))];	/* pad to next int32 boundary */
int string_size;		/* total size of all strings (including their terminating NULs) */
char strings[string_size];
char padding2[];

These properties are the Font Atoms that X provides to users. Many are described in xc/doc/specs/XLFD/xlfd.tbl.ms or here (the X protocol does not limit these atoms so others could be defined for some fonts).

To find the name of a property: strings + props[i].name_offset

Metrics Data
Several of the tables (PCF_METRICS, PCF_INK_METRICS, and within the accelerator tables) contain metrics data which may be in either compressed (PCF_COMPRESSED_METRICS) or uncompressed (DEFAULT) formats. The compressed format uses bytes to contain values, while the uncompressed uses shorts. The (compressed) bytes are unsigned bytes which are offset by 0x80 (so the actual value will be (getc(pcf_file)-0x80). The data are stored as:
Compressed

uint8 left_sided_bearing;
uint8 right_side_bearing;
uint8 character_width;
uint8 character_ascent;
uint8 character_descent;
 /* Implied character attributes field = 0 */

Uncompressed

int16 left_sided_bearing;
int16 right_side_bearing;
int16 character_width;
int16 character_ascent;
int16 character_descent;
uint16 character_attributes;

This provides the data needed for an XCharStruct.

Accelerator Tables
These data provide various bits of information about the font as a whole. This data structure is used by two tables PCF_ACCELERATORS and PCF_BDF_ACCELERATORS. The tables may either be in DEFAULT format or in PCF_ACCEL_W_INKBOUNDS (in which case they will have some extra metrics data at the end.

The accelerator tables look like:

lsbint32 format; 		/* Always stored with least significant byte first! */
uint8 noOverlap;		/* if for all i, max(metrics[i].rightSideBearing - metrics[i].characterWidth) */
				/* 	<= minbounds.leftSideBearing */
uint8 constantMetrics;		/* Means the perchar field of the XFontStruct can be NULL */
uint8 terminalFont;		/* constantMetrics true and forall characters: */
				/* 	the left side bearing==0 */
				/*	the right side bearing== the character's width */
				/*	the character's ascent==the font's ascent */
				/*	the character's descent==the font's descent */
uint8 constantWidth;		/* monospace font like courier */
uint8 inkInside;		/* Means that all inked bits are within the rectangle with x between [0,charwidth] */
				/*  and y between [-descent,ascent]. So no ink overlaps another char when drawing */
uint8 inkMetrics;		/* true if the ink metrics differ from the metrics somewhere */
uint8 drawDirection;		/* 0=>left to right, 1=>right to left */
uint8 padding;
int32 fontAscent;		/* byte order as specified in format */
int32 fontDescent;
int32 maxOverlap;		/* ??? */
Uncompressed_Metrics minbounds;
Uncompressed_Metrics maxbounds;
/* If format is PCF_ACCEL_W_INKBOUNDS then include the following fields */
    Uncompressed_Metrics ink_minbounds;
    Uncompressed_Metrics ink_maxbounds;
/* Otherwise those fields are not in the file and should be filled by duplicating min/maxbounds above */

BDF Accelerators should be preferred to plain Accelerators if both tables are present. BDF Accelerators contain data that refers only to the encoded characters in the font (while the simple Accelerator table includes all glyphs), therefore the BDF Accelerators are more accurate.

Metrics Tables
There are two different metrics tables, PCF_METRICS and PCF_INK_METRICS, the former contains the size of the stored bitmaps, while the latter contains the minimum bounding box. The two may contain the same data, but many CJK fonts pad the bitmaps so all bitmaps are the same size. The table format may be either DEFAULT or PCF_COMPRESSED_METRICS (see the section on Metrics Data for an explanation).

lsbint32 format; 		/* Always stored with least significant byte first! */
/* if the format is compressed */
    int16 metrics_count;
    Compressed_Metrics metrics[metrics_count];
/* else if format is default (uncompressed) */
    int32 metrics_count;
    Uncompressed_Metrics metrics[metrics_count];
/* endif */

The Bitmap Table
The bitmap table has type PCF_BITMAPS. Its format must be PCF_DEFAULT.

lsbint32 format; 		/* Always stored with least significant byte first! */
int32 glyph_count;		/* byte ordering depends on format, should be the same as the metrics count */
int32 offsets[glyph_count];	/* byte offsets to bitmap data */
int32 bitmapSizes[4];		/* the size the bitmap data will take up depending on various padding options */
				/*  which one is actually used in the file is given by (format&3) */
char bitmap_data[bitmapsizes[format&3]];	/* the bitmap data. format contains flags that indicate: */
				/* the byte order (format&4 => LSByte first)*/
				/* the bit order (format&8 => LSBit first) */
				/* how each row in each glyph's bitmap is padded (format&3) */
				/*  0=>bytes, 1=>shorts, 2=>ints */
				/* what the bits are stored in (bytes, shorts, ints) (format>>4)&3 */
				/*  0=>bytes, 1=>shorts, 2=>ints */


The Encoding Table
The encoding table has type PCF_BDF_ENCODINGS. Its format must be PCF_DEFAULT.

lsbint32 format; 		/* Always stored with least significant byte first! */
int16 min_char_or_byte2;	/* As in XFontStruct */
int16 max_char_or_byte2;	/* As in XFontStruct */
int16 min_byte1;		/* As in XFontStruct */
int16 max_byte1;		/* As in XFontStruct */
int16 default_char;		/* As in XFontStruct */
int16 glyphindeces[(max_char_or_byte2-min_char_or_byte2+1)*(max_byte1-min_byte1+1)];
				/* Gives the glyph index that corresponds to each encoding value */
				/* a value of 0xffff means no glyph for that encoding */

For single byte encodings min_byte1==max_byte1==0, and encoded values are between [min_char_or_byte2,max_char_or_byte2]. The glyph index corresponding to an encoding is glyphindex[encoding-min_char_or_byte2].

Otherwise [min_byte1,max_byte1] specifies the range allowed for the first (high order) byte of a two byte encoding, while [min_char_or_byte2,max_char_or_byte2] is the range of the second byte. The glyph index corresponding to a double byte encoding (enc1,enc2) is glyph_index[(enc1-min_byte1)*(max_char_or_byte2-min_char_or_byte2+1)+ enc2-min_char_or_byte2].

Not all glyphs need to be encoded. Not all encodings need to be associated with glyphs.

The Scalable Widths Table
The encoding table has type PCF_SWIDTHS. Its format must be PCF_DEFAULT.

lsbint32 format; 		/* Always stored with least significant byte first! */
int32 glyph_count;		/* byte ordering depends on format, should be the same as the metrics count */
int32 swidths[glyph_count];	/* byte offsets to bitmap data */

The scalable width of a character is the width of the corresponding postscript character in em-units (1/1000ths of an em).

The Glyph Names Table
The encoding table has type PCF_GLYPH_NAMES. Its format must be PCF_DEFAULT.

lsbint32 format; 		/* Always stored with least significant byte first! */
int32 glyph_count;		/* byte ordering depends on format, should be the same as the metrics count */
int32 offsets[glyph_count];	/* byte offsets to string data */
int32 string_size;
char string[string_size];

The postscript name associated with each character.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久不见久久见中文字幕免费| 欧美日韩国产精选| 欧美丝袜自拍制服另类| 中文一区一区三区高中清不卡| 亚洲精品乱码久久久久久日本蜜臀| 免费观看一级欧美片| 欧洲精品一区二区三区在线观看| 久久九九久精品国产免费直播| 亚洲成人免费av| 91丨九色丨尤物| 久久久亚洲精华液精华液精华液 | 色综合久久久久综合| 久久精品夜色噜噜亚洲aⅴ| 午夜精品福利一区二区三区av| 99精品久久久久久| 久久精品男人天堂av| 精品亚洲成a人| 在线不卡的av| 亚洲一区在线看| 日本韩国一区二区三区| 中文字幕视频一区| 国产a视频精品免费观看| 欧美r级在线观看| 日韩综合一区二区| 欧美浪妇xxxx高跟鞋交| 亚洲国产日日夜夜| 欧美性猛片aaaaaaa做受| 国产精品灌醉下药二区| 国产成人亚洲综合色影视| 欧美精品一区二区久久久| 蜜臀av在线播放一区二区三区| 欧美图片一区二区三区| 亚洲精品精品亚洲| 色天天综合色天天久久| 亚洲嫩草精品久久| 91精彩视频在线观看| 一区二区欧美视频| 欧美日韩亚洲综合一区 | 国产精品天干天干在线综合| 免费久久精品视频| 欧美成人国产一区二区| 精品一区二区三区的国产在线播放| 日韩女优视频免费观看| 久久99久久99| 久久久久久久综合狠狠综合| 国产成人超碰人人澡人人澡| 成人免费一区二区三区视频| 日本高清不卡在线观看| 午夜精品成人在线| 日韩欧美国产高清| 丰满岳乱妇一区二区三区| 国产精品黄色在线观看| 色中色一区二区| 日韩成人av影视| 久久久久国产精品麻豆| 99精品久久只有精品| 亚洲成人福利片| 欧美精品一区二区三| 成人精品一区二区三区四区| 尤物视频一区二区| 国产精品免费久久| 91黄色免费看| 加勒比av一区二区| 1000部国产精品成人观看| 欧美日韩精品一区二区三区 | 欧美日韩国产大片| 青草av.久久免费一区| 国产欧美日韩麻豆91| 欧洲视频一区二区| 国产一区二区三区国产| 怡红院av一区二区三区| 2023国产一二三区日本精品2022| 波多野结衣精品在线| 日韩va欧美va亚洲va久久| 欧美经典三级视频一区二区三区| 欧美伊人精品成人久久综合97 | 亚洲一二三区不卡| 久久久蜜桃精品| 欧美在线制服丝袜| 国产99久久精品| 日韩不卡在线观看日韩不卡视频| 中文字幕一区二区在线观看 | 欧美视频在线一区二区三区| 国产精品 欧美精品| 天天操天天干天天综合网| 国产精品电影院| 久久色.com| 欧美一区午夜视频在线观看| 色哟哟在线观看一区二区三区| 国产自产高清不卡| 日本中文字幕不卡| 亚洲精品国产视频| 国产精品美女www爽爽爽| 日韩精品一区二区三区视频| 欧美视频在线一区| 色综合久久综合网| 国产91富婆露脸刺激对白| 久久精品国产99久久6| 亚洲五月六月丁香激情| 日韩伦理电影网| 国产精品美女久久久久久久| 久久人人97超碰com| 欧美一区二区三区日韩| 欧美亚洲综合久久| 色婷婷久久一区二区三区麻豆| 成人激情小说网站| 国产成人免费在线观看| 国产一区中文字幕| 国内精品在线播放| 狠狠色丁香久久婷婷综合_中 | 国产美女精品一区二区三区| 日韩精品一二三四| 日本成人中文字幕在线视频| 精品亚洲成a人| 日韩国产欧美三级| 日本麻豆一区二区三区视频| 视频一区二区三区在线| 人禽交欧美网站| 琪琪久久久久日韩精品| 免费看欧美美女黄的网站| 男人的天堂亚洲一区| 久久精品国产第一区二区三区| 久久机这里只有精品| 国产一区二区三区四区五区入口| 精品一区二区三区视频| 国产成人精品免费视频网站| 成人免费毛片高清视频| 91在线免费播放| 欧美性高清videossexo| 欧美一级在线免费| 久久久亚洲精品一区二区三区 | 欧美日本在线观看| 欧美精品xxxxbbbb| 精品福利一二区| 欧美激情在线一区二区三区| 国产精品久久久久久久久快鸭| 中文字幕一区二区在线播放| 一区二区激情视频| 蜜臀av国产精品久久久久| 国产精品资源站在线| 97精品电影院| 欧美精品成人一区二区三区四区| 精品91自产拍在线观看一区| 国产精品理论片| 午夜视频在线观看一区| 国产在线精品一区二区不卡了| 从欧美一区二区三区| 欧美性三三影院| 久久免费美女视频| 亚洲男人的天堂av| 精品一区二区三区免费毛片爱| 波多野结衣中文字幕一区二区三区| 欧美性受xxxx| 国产丝袜欧美中文另类| 亚洲一卡二卡三卡四卡| 国产在线播放一区| 欧美性做爰猛烈叫床潮| 国产午夜精品在线观看| 亚洲一区二区视频在线| 国产91在线观看| 欧美日韩二区三区| 国产精品久久久久久久久动漫| 午夜激情一区二区| 99久久国产综合精品色伊| 欧美一区日韩一区| 亚洲色图欧洲色图| 国产精品99久久久久久久女警 | wwww国产精品欧美| 一区二区三区四区不卡在线| 色综合久久88色综合天天6 | 91成人在线免费观看| 精品卡一卡二卡三卡四在线| 亚洲综合激情另类小说区| 国产精品18久久久久| 91精品视频网| 一区二区三区久久| 不卡的av在线| 国产丝袜欧美中文另类| 久久精品国产精品亚洲精品| 欧美天天综合网| 亚洲免费观看高清完整版在线| 国产精品一区二区视频| 日韩欧美一区在线| 亚洲国产欧美在线| 一本色道久久综合精品竹菊| 中文字幕乱码日本亚洲一区二区 | 成人精品国产福利| 2021久久国产精品不只是精品| 午夜精品123| 欧美色精品在线视频| 亚洲精品乱码久久久久久日本蜜臀| 国产成人高清视频| 国产三级三级三级精品8ⅰ区| 久久99精品久久久久久久久久久久| 欧美日韩国产高清一区二区三区| 亚洲一区二区三区四区五区黄 | 不卡的电影网站| 国产精品久久久久影院亚瑟| 国产成人免费在线视频| 国产视频911|