Erik van Blokland 3646055ea2 initial import
git-svn-id: http://svn.robofab.com/trunk@1 b5fa9d6c-a76f-4ffd-b3cb-f825fc41095c
2008-01-07 17:40:34 +00:00

491 lines
14 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>RoboFab UFO</title>
<link href="../default.css" type="text/css" rel="stylesheet" />
</head><body>
<script type="text/javascript" src="http://www.google-analytics.com/urchin.js"></script>
<script type="text/javascript">
_uacct = "UA-2044310-2";
urchinTracker();
</script>
<div id="modellogo">
<img src="../img/drawmodel_header.jpg" width="595" height="112" />
</div>
<div class="leftcontent">
<h1 class="crb-seealso">
RoboFab
</h1>
<p class="menu">
<a href="../index.html">
Home
</a>
<br />
<a href="../download/index.html">
Download v1.1.1
</a>
<br />
<a href="../intro.html">
Intro
</a>
<br />
<a href="../install.html">
Install Notes
</a>
<br />
<a href="../history.html">
History
</a>
<br />
<a href="../executive.html">
Summary
</a>
</p>
<p class="menu">
<a href="../howto/index.html">
How to's
</a>
<br />
<a href="../talks/index.html">
Step by step
</a>
<br />
<a href="../tools/dialogs.html">
Fab Dialogs
</a>
<br />
<a href="../objects/index.html">
Object reference
</a>
<br />
<a href="../objects/model.html">
Object map
</a>
<br />
<a href="../tools/index.html">
Tools
</a>
<br />
<a href="index.html">
UFO Overview
</a>
<br />
<span class="selected"><a href="specification.html">
UFO Spec
</a></span>
<br />
<a href="../limitations.html">
Fab Limitations
</a>
<a href="../links/index.html">
Links
</a>
<br />
<a href="../credits.html">
Credits
</a>
</p>
<h1 class="crb-seealso">
Support RoboFab
</h1>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
</form>
<h2 class="crb-seealso">
Up
</h2>
<p class="menu">
<p class="bonbon_uplink"><a href="index.html">Back to UFO</a></p>
</p>
<h2 class="crb-seealso">
See also
</h2>
<p class="menu">
</p>
</div>
<div class="footer">
<a href="../feedback.html">
Feedback
</a>
<br />
<a href="../map.html">
Sitemap
</a>
<br />
Please also refer to the
<a href="../download/license.html">
Legal
</a>
<br />
Copyright 2003-2006 RoboFab
<br />
version 1.1.1
</div>
<div class="google">
<h2>RoboFab Mailinglist</h2>
<p>
Join the RoboFab users community at Google groups.
</p>
<img src="http://groups.google.com/groups/img/3nb/groups_bar.gif" alt="Google Groups" height="26" width="132" />
<p>
<form action="http://groups.google.com/group/robofab/boxsubscribe">
Email: <input type="text" name="../email" />
<input type="submit" name="../sub" value="Subscribe" />
</form>
</p>
<p>
<a href="http://groups.google.com/group/robofab">Visit this group</a>
</p>
<h2>RoboFab Sponsors</h2>
<script type="text/javascript">
google_ad_client = "pub-3703953449723704";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</div>
<div class="content">
<h1><span class="caps">UFO</span> file format specification 1.0</h1>
<p>The Unified Font Object (or <span class="caps">UFO</span>) is a file format for font and glyph related data. <span class="caps">UFO</span> intends to store all font related data in readable, standardised <span class="caps">XML</span> files.</p>
<p>The <span class="caps">UFO</span> format is:</p>
<ul>
<li>a format for storing font sources during development</li>
<li>an interchange format for various font applications where compiled binary formats do not retain enough information</li>
<li>a future proof format for archiving font projects, independent of a specific application or tool</li>
<li>extensible: arbitrary data can be stored on glyph and font level</li>
<li>can easily be used with cvs or svn based versioning tools</li>
<li>not intended to be compact</li>
<li>not intended to be used as a new font format in itself</li>
</ul>
<h1>*.ufo/</h1>
<table>
<tr>
<th>file name</th>
<th>description</th>
<th>required</th>
</tr>
<tr>
<td>metainfo.plist</td>
<td>contains format version, save date, etc.</td>
<td>yes</td>
</tr>
<tr>
<td>fontinfo.plist</td>
<td>contains various font info data</td>
<td>yes</td>
</tr>
<tr>
<td>groups.plist</td>
<td>contains glyph group definitions</td>
<td>no</td>
</tr>
<tr>
<td>kerning.plist</td>
<td>contains kerning info</td>
<td>no</td>
</tr>
<tr>
<td>lib.plist</td>
<td>custom data, this is the FontLib</td>
<td>no</td>
</tr>
<tr>
<td>glyphs/</td>
<td>a folder containing .glif files and a contents.plist file. See <a href="glif.html">Glyph Interchange Format</a></td>
<td>yes</td>
</tr>
</table>
<h1>metainfo.plist</h1>
<p>A <a href="plist.html-formatted">Property List</a> file, with a dictionary at the top level. Currently defined key/value pairs:</p>
<table>
<tr>
<th>field name</th>
<th>description</th>
</tr>
<tr>
<td>creator</td>
<td>fileCreator, a string identifying the software that create the ufo file.</td>
</tr>
<tr>
<td>formatVersion</td>
<td>the version number of the ufo format as an integer. Currently 1.</td>
</tr>
</table>
<h1>fontinfo.plist</h1>
<p>A <a href="plist.html-formatted">Property List</a> file, with a dictionary at the top level. Tentatively defined key/value pairs:</p>
<table>
<tr>
<th>field name</th>
<th>description</th>
</tr>
<tr>
<td>ascender</td>
<td>ascender value, an integer</td>
</tr>
<tr>
<td>capHeight</td>
<td>cap height value, an integer</td>
</tr>
<tr>
<td>copyright</td>
<td>copyright string, a string</td>
</tr>
<tr>
<td>createdBy</td>
<td>field for the creator for the font, i.e. the foundry</td>
</tr>
<tr>
<td>defaultWidth</td>
<td>value for default width of missing glyphs, an integer</td>
</tr>
<tr>
<td>designer</td>
<td>name of the designer, a string</td>
</tr>
<tr>
<td>designerURL</td>
<td>web address for the designer, a <span class="caps">URL</span></td>
</tr>
<tr>
<td>familyName</td>
<td>family name of the font, a string</td>
</tr>
<tr>
<td>fondID</td>
<td>MacOS <span class="caps">FOND</span> resource number, an integer</td>
</tr>
<tr>
<td>fondName</td>
<td>MacOS <span class="caps">FOND</span> name, a string</td>
</tr>
<tr>
<td>fontName</td>
<td>font name, a string</td>
</tr>
<tr>
<td>fontStyle</td>
<td>the font style code, integer</td>
</tr>
<tr>
<td>fullName</td>
<td>the full name of the font, a string</td>
</tr>
<tr>
<td>parent</td>
<td>reference to the parent object (a font usually)</td>
</tr>
<tr>
<td>italicAngle</td>
<td>the italic angle, integer</td>
</tr>
<tr>
<td>license</td>
<td>the font license text, a string</td>
</tr>
<tr>
<td>licenseURL</td>
<td>web address for the license agreement, a <span class="caps">URL</span></td>
</tr>
<tr>
<td>menuName</td>
<td>one of the menu names, a string</td>
</tr>
<tr>
<td>msCharSet</td>
<td>flag for windows fonts</td>
</tr>
<tr>
<td>note</td>
<td>the font note, a string</td>
</tr>
<tr>
<td>notice</td>
<td>a notice about the font, different from note and copyrright, a string</td>
</tr>
<tr>
<td>otFamilyName</td>
<td>family name specific for OpenType fonts a string</td>
</tr>
<tr>
<td>otStyleName</td>
<td>style name specific for OpenType fonts, a string</td>
</tr>
<tr>
<td>otMacName</td>
<td>Mac name specific for OpenType fonts, a string</td>
</tr>
<tr>
<td>selected</td>
<td>whether or not the font is selected, a boolean</td>
</tr>
<tr>
<td>slantAngle</td>
<td>slant angle, different from italic angle, an integer</td>
</tr>
<tr>
<td>styleName</td>
<td>the style name, a string</td>
</tr>
<tr>
<td>trademark</td>
<td>the trademark statement, a string</td>
</tr>
<tr>
<td>ttUniqueID</td>
<td>unique ID for TrueType fonts, an integer</td>
</tr>
<tr>
<td>ttVendor</td>
<td>Microsoft vendor code, a 4 character string</td>
</tr>
<tr>
<td>ttVersion</td>
<td>which truetype version</td>
</tr>
<tr>
<td>uniqueID</td>
<td>unique PostScript ID number, an integer</td>
</tr>
<tr>
<td>unitsPerEm</td>
<td>units per em, integer</td>
</tr>
<tr>
<td>vendorURL</td>
<td>web address for the fonts vendor, a <span class="caps">URL</span></td>
</tr>
<tr>
<td>versionMajor</td>
<td>value for major version</td>
</tr>
<tr>
<td>versionMinor</td>
<td>value for minor version</td>
</tr>
<tr>
<td>weightName</td>
<td>the name of the weight, i.e. “Semi Bold”, used in naming stuff.</td>
</tr>
<tr>
<td>weightValue</td>
<td>value for the weight. FontLab calls Regular 500 (or something like that)</td>
</tr>
<tr>
<td>widthName</td>
<td>the name of the width, i.e. “Condensed”</td>
</tr>
<tr>
<td>year</td>
<td>the year in which the font was produced</td>
</tr>
</table>
<p>Version 2 of fontInfo.plist is being sketched out over at [“UFOFontInfo2”].</p>
<h1>groups.plist</h1>
<p>A <a href="plist.html-formatted">Property List</a> file, with a dictionary at the top level. Keys are group names, values are arrays containing glyph name strings. This file is optional.</p>
<h1>kerning.plist</h1>
<p>A <a href="plist.html-formatted">Property List</a> file, with a dictionary at the top level. Keys are “first glyph” glyph names, values are dictionaries that contain “right glyph” glyph names as keys, and the kern value as the value, which may be an integer or a float. Names defined in the groups.plist may also be used in place of glyph names. This file is optional.</p>
<h1>lib.plist</h1>
<p>This is the FontLib; its a <a href="plist.html-formatted">Property List</a> file, with a dictionary at the top level. Top-level keys must follow the ReverseDomainName convention. This file is optional.</p>
<h1>glyphs/</h1>
<p>Folder containing .glif files. Must also contain a contents.plist file. See <a href="glif.html">Glyph Interchange Format</a>.</p>
<h1>glyphs/contents.plist</h1>
<p>All .glif files for a font files are usually kept together inside a directory.<br />
Such a directory may contain a file named “contents.plist”, which contains<br />
a dictionary that maps glyph names to file names. Those file names must<br />
plain file names, not absolute or relative paths in the file system. Care<br />
must be taken when choosing file names: glyph names are case sensitive, yet<br />
many file systems are not. A simple scheme that appears to work in practice<br />
for Adobe-style glyph names, is to take the glyphs base name, and add an<br />
underscore if the name starts with a cap. Where “base name” means the first<br />
component when split on ”.”. Examples: a.glif, A_.glif, a.alt.glyph,<br />
A_.alt.glyph.</p>
</div>
</body></html>