nanogui: [LONG and TECHNICAL] RE: microwindows fonts


Previous by date: 28 Jun 1999 23:24:37 -0000 Re: microwindows fonts, Greg Haerr
Next by date: 28 Jun 1999 23:24:37 -0000 Re: [LONG and TECHNICAL] RE: microwindows fonts, Greg Haerr
Previous in thread:
Next in thread: 28 Jun 1999 23:24:37 -0000 Re: [LONG and TECHNICAL] RE: microwindows fonts, Greg Haerr

Subject: [LONG and TECHNICAL] RE: microwindows fonts
From: "Darran D. Rimron" ####@####.####
Date: 28 Jun 1999 23:24:37 -0000
Message-Id: <NCBBLCEDENCINNMFNPBCGEEECNAA.darran@rimron.co.uk>

> -----Original Message-----
> 	Does anyone know how to convert .pcf files to, say bdf?
> I've found bdftopcf, but I only know how to convert bdf files
> to micro-windows currently.

PCF files, like SNF files, are binary files, but the format is portable
across architectures. The data is stored in an SBFirst (Most Significant
Byte First) format. The table of contents is written first, followed by
each of the tables needed. Tables of variable length are preceded by a
count for the number of  entries for that particular table. Tables are
zero-padded to be a multiple of 32 bits. Here is the list of possible
tables:

	o table of contents

	o pcf properties

	o pcf accelerators

	o pcf metrics

	o pcf bitmaps

	o pcf ink metrics

	o pcf bdf encoding

	o pcf swidths

	o pcf glyph names

	o pcf bdf accelerators

The following sections describe each of these tables.
TABLE OF CONTENTS
The TOC consists of two 32-bit fields and a variable number of TOC entry
fields.

file version 	# currently "pcf1"
TOC_entries 	# number of entries to follow
TOC entry 		# up to TOC_entries of these

Each TOC entry consists of 4 32-bit fields.

type		# type of table entry (see below)
format	# format of table
size		# size in 32-bit words of this table
offset	# offset into file of this table

Some tables may have a special format associated with them.The default
format treats all data as 32-bit words. A format has meaning in
relationship to a type.

format				value
DEFAULT        			0x00000000
INKBOUNDS             		0x00000200
ACCELERATORS_W_INKBOUNDS 	0x00000l00
COMPRESSED_METRICS		0x00000l00

If another format is available for a type, use of the DEFAULT format
with that type may indicate that type's table is empty. Only four types
use anything besides the DEFAULT format in pcf1 files. Accelerators are
basically a set of hints about the font layout which allow certain parts
of the font drawing process to take p1ace faster.

type				format
pcf accelerators		ACCELERATORS_W_INKBOUNDS
pcf metrics			COMPRESSED_METRICS
pcf ink metrics		COMPRESSED METRICS
pcf bdf accelerators	ACCELERATORS_W_INKBOUNDS

PCF PROPERTIES

The properties table consists of the number of properties and the
properties themselves, followed by the string table for the properties.

format			32 bits 	# format of property table
num-props               32 bits 	# number of properties
property			72 bits 	# property data (num_props
						# entries)
string table size 	32 bits 	# length of strin table in
						# 8-bit chars
string table 		variable 	# property names and values

The property data consists of three fields and is zero-padded to be a
multiple of 32 bits.

name		32 bits 	# property atom
is_string 	 8 bits  	# true if the property value is a
				# string
value 	32 bits 	# property value (string or int)

The string table includes all property names and their values (when
those values are strings). The strings are NULL-terminated.

PCF ACCELERATORS

The accelerators consist of 8 8-bit fields, 3 32 bit fields, 2 metric
fields (described below) and (if format is ACCELERATORS_W_INKBOUNDS) 2
optional metric fields. Metric field formats are discussed later.

noOverlap		8 bits
constantMetrics 	8 bits
terminalFont	8 bits
constantWidth 	8 bits
inkInside 		8 bits
inkMetrics 		8 bits
drawDirection 	8 bits
pad 			8 bits # always 0
fontAscent 		32 bits
fontDescent 	32 bits
maxOverlap 		32 bits
minbounds 		96 bits # (metric field type)
maxbounds 		96 bits # (metric field type)
ink_minbounds 	96 bits # (optional metric field type)
ink_maxbounds 	96 bits # (optional metric field type)

METRIC FIELD FORMATS

Uncompressed metric fields require 96 bits each. Compressed metric
fields
require 56 bytes.

size
field 	compressed/uncompressed
num chars 		16/32 # number of characters in font
leftSideBearing 	8[16] # left-most filled pixel x coordinate
rightSideBearing	8[16] # right-most fiIIed pixel y coordinate
characterWidth 	8[l6] # character width
ascent		8[l6] # height above baseline
descent 		8[l6] # depth below baseline
attributes		N/A[l6]

PCF METRICS

If the metrics can be compressed, the format is COMPRESSED_METRICS.
Otherwise
the format is DEFAULT.

size
field 		compressed/uncompressed
num_chars 		l6/32 	# number of characters
metric field 	56[96]  	# per character

PCF BIIMAPS

num_chars 		32bits 	# number of glyphs
offsets		32bits 	# offset into glyph bitmap data
					# (l per character)
bitmap_size 	32bits 	# extra bitmap size info
					# (1, 2, 4 or 8 (4 in pcfl)
bitmaps 		variable 	# bitmap data

PCF INK METRICES

These are formated like the pcf metrics referenced above. Uncompressed
metric fields require 96 bits each. Compressed metric fields require 56
bytes.

size
field	compressed/uncompressed

num_chars 		16/32   # number of characters
leftSideBearing 	8[16]   # left_most filled pixel x coordinate
rightSideBearing 	8[16]   # right_most filled pixel x
				  # coordinate
characterWidth 	8[16]   # character cell width
ascent		8[l6]   # height above baseline
descent		8[16]   # depth below baseline
attributes 		N/A[l6]

PCF INK METRICS

If the metrics can be compressed, the format is COMPRESSED-MEIRICS.
Otherwise the format is DEFALUT.

size
field 		compressed/uncompressed
num_chars		16/32   # number of characters
metric field 	56[96]  # 1 per character

PCF BDF ENCODINGS

These are related to the bdf format. They relate to characters in the
Row/column matrix which are actually used.

firstCol 		l6 bits # 1st character column (typ. 0)
lastCol      	16 bits # last character column (typ.l27)
firstRow 		16 bits # last character row (typ. 0)
lastRow         	l6 bits # last character row (typ. 0)
				  # most ISO-Latin fonts are l row
				  # of chars, but most large
				  # oriental fonts have many rows
				  # Typical values are for ISO-
				  # Latin fonts on the mit tapes.
defaultCh		16 bits # default character
nencodings      	l6 bits # number of encoded characters
encoding metrics 	16 bits # 1 per encoded character, defaults
				  # to 0xFFFF

PCF SWIDTHS

These are the same as the BDF scalable widths.

num chars		32 bits # number of characters
swidths         	32 bits # 1 per character

PCF GLYPH NAMES

Yet another string table, this contains the names of the glyphs as
described under the BDF glyph_names field.

num_chars 		32 bits # number of characters in font
offsets         	32 bits # offsets into strings, l per
				  # character
strings size    	32 bits # size of string table in 8 bit
				  # characters
strings variable 		  # NULL_delineated glyph names

PCF BDF ACCELERATORS
Formatted like the pcf accelerators, this data includes the same
information but as included  in the BDF file. Accelerators consist of 8
8-bit fields, 3 32 bit fields, 2 metric fields and (if format is
ACCELERATORS_W_INKBOUNDS) 2 optional

MEIRTIC FIELD

noOverlap 		8 bits # true if characters don't overlap
constantMetrics 	8 bits # metrics apply to all characters
terminalFont 	8 bits # outdated - true if font metrics
		       	 # work well with a terminal
constantWidth 	8bits  # true if all characters have the same
				 # width
inkInside 		8bits  # true if all ink inside bounding box
inkMetrics 		8bits  # true if ink metrics != font metrics
		       	 # (used with terminal fonts)
drawDirection   	8 bits # direction to draw (eg, Left To
				 # Right)
pad			8 bits # always 0
fontAscent 		32bits # minimum for quality typography
fontDescent 	32bits # minimum for quality typography
maxOverlap 		32bits # maximum this character may be
				 # overlapped
minbounds 		96bits # (metric field type)
maxbounds 		96bits # (metric field type)
ink_minbounds 	96bits # (optional metric field type)
ink maxbounds 	96bits # (optional metric field type)

I'm not sure about a converter, but this should give you something to
build upon, I hope.

	-Darran (minefiled of useless information)

--
Darran D. Rimron                              ####@####.####
Mobile: +44 7808 49 25 49                  Pager: +44 76543 07647
Rimron Design & Consultancy              http://www.rimron.co.uk/
Phone: +44 1708 766 959                     Fax: +44 1708 766 959


Previous by date: 28 Jun 1999 23:24:37 -0000 Re: microwindows fonts, Greg Haerr
Next by date: 28 Jun 1999 23:24:37 -0000 Re: [LONG and TECHNICAL] RE: microwindows fonts, Greg Haerr
Previous in thread:
Next in thread: 28 Jun 1999 23:24:37 -0000 Re: [LONG and TECHNICAL] RE: microwindows fonts, Greg Haerr


Powered by ezmlm-browse 0.20.