FINAL suepr merge step : added all modules to this super repos

This commit is contained in:
Bachir Soussi Chiadmi
2015-04-19 16:46:59 +02:00
7585 changed files with 1723356 additions and 18 deletions

View File

@@ -0,0 +1,10 @@
# PHP-font-lib
To use DOMPDF you must copy PHP-font-lib to this directory.
PHP-font-lib is available here: https://github.com/PhenX/php-font-lib
If you installed DOMPDF using composer, PHP-font-lib will already be
installed as a dependency, and you can leave this directory empty.
For more details on composer, please visit http://getcomposer.org/

View File

@@ -0,0 +1,201 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/encoding_map.cls.php";
/**
* Adobe Font Metrics file creation utility class.
*
* @package php-font-lib
*/
class Adobe_Font_Metrics {
private $f;
/**
* @var Font_TrueType
*/
private $font;
function __construct(Font_TrueType $font) {
$this->font = $font;
}
function write($file, $encoding = null){
if ($encoding) {
$encoding = preg_replace("/[^a-z0-9-_]/", "", $encoding);
$map_file = dirname(__FILE__)."/../maps/$encoding.map";
if (!file_exists($map_file)) {
throw new Exception("Unkown encoding ($encoding)");
}
$map = new Encoding_Map($map_file);
$map_data = $map->parse();
}
$this->f = fopen($file, "w+");
$font = $this->font;
$this->startSection("FontMetrics", 4.1);
$this->addPair("Notice", "Converted by PHP-font-lib");
$this->addPair("Comment", "http://php-font-lib.googlecode.com/");
$encoding_scheme = ($encoding ? $encoding : "FontSpecific");
$this->addPair("EncodingScheme", $encoding_scheme);
$records = $font->getData("name", "records");
foreach($records as $id => $record) {
if (!isset(Font_TrueType::$nameIdCodes[$id]) || preg_match("/[\r\n]/", $record->string)) {
continue;
}
$this->addPair(Font_TrueType::$nameIdCodes[$id], $record->string);
}
$os2 = $font->getData("OS/2");
$this->addPair("Weight", ($os2["usWeightClass"] > 400 ? "Bold" : "Medium"));
$post = $font->getData("post");
$this->addPair("ItalicAngle", $post["italicAngle"]);
$this->addPair("IsFixedPitch", ($post["isFixedPitch"] ? "true" : "false"));
$this->addPair("UnderlineThickness", $font->normalizeFUnit($post["underlineThickness"]));
$this->addPair("UnderlinePosition", $font->normalizeFUnit($post["underlinePosition"]));
$hhea = $font->getData("hhea");
if (isset($hhea["ascent"])) {
$this->addPair("FontHeightOffset", $font->normalizeFUnit($hhea["lineGap"]));
$this->addPair("Ascender", $font->normalizeFUnit($hhea["ascent"]));
$this->addPair("Descender", $font->normalizeFUnit($hhea["descent"]));
}
else {
$this->addPair("FontHeightOffset", $font->normalizeFUnit($os2["typoLineGap"]));
$this->addPair("Ascender", $font->normalizeFUnit($os2["typoAscender"]));
$this->addPair("Descender", -abs($font->normalizeFUnit($os2["typoDescender"])));
}
$head = $font->getData("head");
$this->addArray("FontBBox", array(
$font->normalizeFUnit($head["xMin"]),
$font->normalizeFUnit($head["yMin"]),
$font->normalizeFUnit($head["xMax"]),
$font->normalizeFUnit($head["yMax"]),
));
$glyphIndexArray = $font->getUnicodeCharMap();
if ($glyphIndexArray) {
$hmtx = $font->getData("hmtx");
$names = $font->getData("post", "names");
$this->startSection("CharMetrics", count($hmtx));
if ($encoding) {
foreach($map_data as $code => $value) {
list($c, $name) = $value;
if (!isset($glyphIndexArray[$c])) continue;
$g = $glyphIndexArray[$c];
if (!isset($hmtx[$g])) {
$hmtx[$g] = $hmtx[0];
}
$this->addMetric(array(
"C" => ($code > 255 ? -1 : $code),
"WX" => $font->normalizeFUnit($hmtx[$g][0]),
"N" => $name,
));
}
}
else {
foreach($glyphIndexArray as $c => $g) {
if (!isset($hmtx[$g])) {
$hmtx[$g] = $hmtx[0];
}
$this->addMetric(array(
"U" => $c,
"WX" => $font->normalizeFUnit($hmtx[$g][0]),
"N" => (isset($names[$g]) ? $names[$g] : sprintf("uni%04x", $c)),
"G" => $g,
));
}
}
$this->endSection("CharMetrics");
$kern = $font->getData("kern", "subtable");
$tree = $kern["tree"];
if (!$encoding && is_array($tree)) {
$this->startSection("KernData");
$this->startSection("KernPairs", count($tree, COUNT_RECURSIVE) - count($tree));
foreach($tree as $left => $values) {
if (!is_array($values)) continue;
if (!isset($glyphIndexArray[$left])) continue;
$left_gid = $glyphIndexArray[$left];
if (!isset($names[$left_gid])) continue;
$left_name = $names[$left_gid];
$this->addLine("");
foreach($values as $right => $value) {
if (!isset($glyphIndexArray[$right])) continue;
$right_gid = $glyphIndexArray[$right];
if (!isset($names[$right_gid])) continue;
$right_name = $names[$right_gid];
$this->addPair("KPX", "$left_name $right_name $value");
}
}
$this->endSection("KernPairs");
$this->endSection("KernData");
}
}
$this->endSection("FontMetrics");
}
function addLine($line) {
fwrite($this->f, "$line\n");
}
function addPair($key, $value) {
$this->addLine("$key $value");
}
function addArray($key, $array) {
$this->addLine("$key ".implode(" ", $array));
}
function addMetric($data) {
$array = array();
foreach($data as $key => $value) {
$array[] = "$key $value";
}
$this->addLine(implode(" ; ", $array));
}
function startSection($name, $value = "") {
$this->addLine("Start$name $value");
}
function endSection($name) {
$this->addLine("End$name");
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Encoding map used to map a code point to a Unicode char.
*
* @package php-font-lib
*/
class Encoding_Map {
private $f;
function __construct($file) {
$this->f = fopen($file, "r");
}
function parse(){
$map = array();
while($line = fgets($this->f)) {
if (preg_match("/^[\!\=]([0-9A-F]{2,})\s+U\+([0-9A-F]{2})([0-9A-F]{2})\s+([^\s]+)/", $line, $matches)) {
$unicode = (hexdec($matches[2]) << 8) + hexdec($matches[3]);
$map[hexdec($matches[1])] = array($unicode, $matches[4]);
}
}
ksort($map);
return $map;
}
}

View File

@@ -0,0 +1,72 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Generic font file.
*
* @package php-font-lib
*/
class Font {
static $debug = false;
/**
* @param string $file The font file
* @return Font_TrueType $file
*/
public static function load($file) {
$header = file_get_contents($file, false, null, null, 4);
$class = null;
switch($header) {
case "\x00\x01\x00\x00":
case "true":
case "typ1":
$class = "Font_TrueType"; break;
case "OTTO":
$class = "Font_OpenType"; break;
case "wOFF":
$class = "Font_WOFF"; break;
case "ttcf":
$class = "Font_TrueType_Collection"; break;
// Unknown type or EOT
default:
$magicNumber = file_get_contents($file, false, null, 34, 2);
if ($magicNumber === "LP") {
$class = "Font_EOT";
}
}
if ($class) {
require_once dirname(__FILE__)."/".strtolower($class).".cls.php";
$obj = new $class;
$obj->load($file);
return $obj;
}
}
static function d($str) {
if (!self::$debug) return;
echo "$str\n";
}
static function UTF16ToUTF8($str) {
return mb_convert_encoding($str, "utf-8", "utf-16");
}
static function UTF8ToUTF16($str) {
return mb_convert_encoding($str, "utf-16", "utf-8");
}
}

View File

@@ -0,0 +1,358 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Generic font file binary stream.
*
* @package php-font-lib
*/
class Font_Binary_Stream {
/**
* @var resource The file pointer
*/
protected $f;
const uint8 = 1;
const int8 = 2;
const uint16 = 3;
const int16 = 4;
const uint32 = 5;
const int32 = 6;
const shortFrac = 7;
const Fixed = 8;
const FWord = 9;
const uFWord = 10;
const F2Dot14 = 11;
const longDateTime = 12;
const char = 13;
private static $sizes = array(
self::uint8 => 1,
self::int8 => 1,
self::uint16 => 2,
self::int16 => 2,
self::uint32 => 4,
self::int32 => 4,
self::shortFrac => 4,
self::Fixed => 4,
self::FWord => 2,
self::uFWord => 2,
self::F2Dot14 => 2,
self::longDateTime => 8,
self::char => 1,
);
const modeRead = "rb";
const modeWrite = "wb";
const modeReadWrite = "rb+";
static function backtrace(){
var_dump(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
}
/**
* Open a font file in read mode
*
* @param string $filename The file name of the font to open
*/
public function load($filename) {
return $this->open($filename, self::modeRead);
}
/**
* Open a font file in a chosen mode
*
* @param string $filename The file name of the font to open
* @param string $mode The opening mode
*/
public function open($filename, $mode = self::modeRead) {
if (!in_array($mode, array(self::modeRead, self::modeWrite, self::modeReadWrite))) {
throw new Exception("Unkown file open mode");
}
$this->f = fopen($filename, $mode);
return $this->f != false;
}
/**
* Close the internal file pointer
*/
public function close() {
return fclose($this->f) != false;
}
/**
* Change the internal file pointer
*
* @param resource $fp
*/
public function setFile($fp) {
if (!is_resource($fp)) {
throw new Exception('$fp is not a valid resource');
}
$this->f = $fp;
}
/**
* Create a temporary file in write mode
*
* @return resource the temporary file pointer resource
*/
public static function getTempFile($allow_memory = true) {
$f = null;
if ($allow_memory) {
// PHP 5.1+
@fopen("php://temp", "rb+");
}
if (!$f) {
$f = fopen(tempnam(sys_get_temp_dir(), "fnt"), "rb+");
}
return $f;
}
/**
* Move the internal file pinter to $offset bytes
*
* @param int $offset
* @return bool True if the $offset position exists in the file
*/
public function seek($offset) {
return fseek($this->f, $offset, SEEK_SET) == 0;
}
/**
* Gives the current position in the file
*
* @return int The current position
*/
public function pos() {
return ftell($this->f);
}
public function skip($n) {
fseek($this->f, $n, SEEK_CUR);
}
public function read($n) {
if ($n < 1) return "";
return fread($this->f, $n);
}
public function write($data, $length = null) {
if ($data === null || $data === "") return;
return fwrite($this->f, $data, $length);
}
public function readUInt8() {
return ord($this->read(1));
}
public function writeUInt8($data) {
return $this->write(chr($data), 1);
}
public function readInt8() {
$v = $this->readUInt8();
if ($v >= 0x80) {
$v -= 0x100;
}
return $v;
}
public function writeInt8($data) {
if ($data < 0) {
$data += 0x100;
}
return $this->writeUInt8($data);
}
public function readUInt16() {
$a = unpack("nn", $this->read(2));
return $a["n"];
}
public function readUFWord(){
return $this->readUInt16();
}
public function writeUInt16($data) {
return $this->write(pack("n", $data), 2);
}
public function writeUFWord($data){
return $this->writeUInt16($data);
}
public function readInt16() {
$v = $this->readUInt16();
if ($v >= 0x8000) {
$v -= 0x10000;
}
return $v;
}
public function readFWord(){
return $this->readInt16();
}
public function writeInt16($data) {
if ($data < 0) {
$data += 0x10000;
}
return $this->writeUInt16($data);
}
public function writeFWord($data){
return $this->writeInt16($data);
}
public function readUInt32() {
$a = unpack("NN", $this->read(4));
return $a["N"];
}
public function writeUInt32($data) {
return $this->write(pack("N", $data), 4);
}
public function readFixed() {
$d = $this->readInt16();
$d2 = $this->readUInt16();
return round($d + $d2 / 0x10000, 4);
}
public function writeFixed($data) {
$left = floor($data);
$right = ($data - $left) * 0x10000;
return $this->writeInt16($left) + $this->writeUInt16($right);
}
public function readLongDateTime() {
$this->readUInt32(); // ignored
$date = $this->readUInt32() - 2082844800;
return strftime("%Y-%m-%d %H:%M:%S", $date);
}
public function writeLongDateTime($data) {
$date = strtotime($data);
$date += 2082844800;
return $this->writeUInt32(0) + $this->writeUInt32($date);
}
public function unpack($def) {
$d = array();
foreach($def as $name => $type) {
$d[$name] = $this->r($type);
}
return $d;
}
public function pack($def, $data) {
$bytes = 0;
foreach($def as $name => $type) {
$bytes += $this->w($type, $data[$name]);
}
return $bytes;
}
/**
* Read a data of type $type in the file from the current position
*
* @param mixed $type The data type to read
* @return mixed The data that was read
*/
public function r($type) {
switch($type) {
case self::uint8: return $this->readUInt8();
case self::int8: return $this->readInt8();
case self::uint16: return $this->readUInt16();
case self::int16: return $this->readInt16();
case self::uint32: return $this->readUInt32();
case self::int32: return $this->readUInt32();
case self::shortFrac: return $this->readFixed();
case self::Fixed: return $this->readFixed();
case self::FWord: return $this->readInt16();
case self::uFWord: return $this->readUInt16();
case self::F2Dot14: return $this->readInt16();
case self::longDateTime: return $this->readLongDateTime();
case self::char: return $this->read(1);
default:
if ( is_array($type) ) {
if ($type[0] == self::char) {
return $this->read($type[1]);
}
$ret = array();
for($i = 0; $i < $type[1]; $i++) {
$ret[] = $this->r($type[0]);
}
return $ret;
}
}
}
/**
* Write $data of type $type in the file from the current position
*
* @param mixed $type The data type to write
* @param mixed $data The data to write
* @return int The number of bytes read
*/
public function w($type, $data) {
switch($type) {
case self::uint8: return $this->writeUInt8($data);
case self::int8: return $this->writeInt8($data);
case self::uint16: return $this->writeUInt16($data);
case self::int16: return $this->writeInt16($data);
case self::uint32: return $this->writeUInt32($data);
case self::int32: return $this->writeUInt32($data);
case self::shortFrac: return $this->writeFixed($data);
case self::Fixed: return $this->writeFixed($data);
case self::FWord: return $this->writeInt16($data);
case self::uFWord: return $this->writeUInt16($data);
case self::F2Dot14: return $this->writeInt16($data);
case self::longDateTime: return $this->writeLongDateTime($data);
case self::char: return $this->write($data, 1);
default:
if ( is_array($type) ) {
if ($type[0] == self::char) {
return $this->write($data, $type[1]);
}
$ret = 0;
for($i = 0; $i < $type[1]; $i++) {
$ret += $this->w($type[0], $data[$i]);
}
return $ret;
}
}
}
/**
* Converts a Uint32 value to string
*
* @param int $uint32
* @return string The string
*/
public function convertUInt32ToStr($uint32) {
return chr(($uint32 >> 24) & 0xFF).chr(($uint32 >> 16) & 0xFF).chr(($uint32 >> 8) & 0xFF).chr($uint32 & 0xFF);
}
}

View File

@@ -0,0 +1,68 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_truetype.cls.php";
/**
* EOT font file.
*
* @package php-font-lib
*/
class Font_EOT extends Font_TrueType {
private $origF;
private $fileOffset = 0;
public $header;
function parseHeader(){
$this->header = $this->unpack(array(
"EOTSize" => self::uint32,
"FontDataSize" => self::uint32,
"Version" => self::uint32,
"Flags" => self::uint32,
));
$this->header["FontPANOSE"] = $this->read(10);
$this->header += $this->unpack(array(
"Charset" => self::uint8,
"Italic" => self::uint8,
"Weight" => self::uint32,
"fsType" => self::uint16,
"MagicNumber" => self::uint16,
"UnicodeRange1" => self::uint32,
"UnicodeRange2" => self::uint32,
"UnicodeRange3" => self::uint32,
"UnicodeRange4" => self::uint32,
"CodePageRange1" => self::uint32,
"CodePageRange2" => self::uint32,
"CheckSumAdjustment" => self::uint32,
"Reserved1" => self::uint32,
"Reserved2" => self::uint32,
"Reserved3" => self::uint32,
"Reserved4" => self::uint32,
"Padding1" => self::uint16,
"FamilyNameSize" => self::uint16,
));
}
function parse() {
exit("EOT not supported yet");
}
public function readUInt16() {
$a = unpack('vv', $this->read(2));
return $a['v'];
}
public function readUInt32() {
$a = unpack('VV', $this->read(4));
return $a['V'];
}
}

View File

@@ -0,0 +1,109 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id: font_table_glyf.cls.php 46 2012-04-02 20:22:38Z fabien.menager $
*/
require_once dirname(__FILE__)."/font_glyph_outline_simple.cls.php";
require_once dirname(__FILE__)."/font_glyph_outline_composite.cls.php";
/**
* `glyf` font table.
*
* @package php-font-lib
*/
class Font_Glyph_Outline extends Font_Binary_Stream {
const ARG_1_AND_2_ARE_WORDS = 0x0001;
const ARGS_ARE_XY_VALUES = 0x0002;
const ROUND_XY_TO_GRID = 0x0004;
const WE_HAVE_A_SCALE = 0x0008;
const MORE_COMPONENTS = 0x0020;
const WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;
const WE_HAVE_A_TWO_BY_TWO = 0x0080;
const WE_HAVE_INSTRUCTIONS = 0x0100;
const USE_MY_METRICS = 0x0200;
const OVERLAP_COMPOUND = 0x0400;
/**
* @var Font_Table_glyf
*/
protected $table;
protected $offset;
protected $size;
// Data
public $numberOfContours;
public $xMin;
public $yMin;
public $xMax;
public $yMax;
public $raw;
/**
* @return Font_Glyph_Outline
*/
static function init(Font_Table_glyf $table, $offset, $size) {
$font = $table->getFont();
$font->seek($offset);
/**
* @var Font_Glyph_Outline
*/
$glyph;
if ($font->readInt16() > -1) {
$glyph = new Font_Glyph_Outline_Simple($table, $offset, $size);
}
else {
$glyph = new Font_Glyph_Outline_Composite($table, $offset, $size);
}
$glyph->parse();
return $glyph;
}
/**
* @return Font_TrueType
*/
function getFont() {
return $this->table->getFont();
}
function __construct(Font_Table_glyf $table, $offset = null, $size = null) {
$this->table = $table;
$this->offset = $offset;
$this->size = $size;
}
function parse() {
$font = $this->getFont();
$font->seek($this->offset);
if (!$this->size) {
return;
}
$this->raw = $font->read($this->size);
}
function parseData(){
$font = $this->getFont();
$font->seek($this->offset);
$this->numberOfContours = $font->readInt16();
$this->xMin = $font->readFWord();
$this->yMin = $font->readFWord();
$this->xMax = $font->readFWord();
$this->yMax = $font->readFWord();
}
function encode(){
$font = $this->getFont();
return $font->write($this->raw, strlen($this->raw));
}
}

View File

@@ -0,0 +1,27 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id: font_table_glyf.cls.php 46 2012-04-02 20:22:38Z fabien.menager $
*/
/**
* `glyf` font table.
*
* @package php-font-lib
*/
class Font_Glyph_Outline_Composite extends Font_Glyph_Outline {
public $flags;
public $glyphIndex;
function parseData(){
parent::parseData();
$font = $this->getFont();
$this->flags = $font->readUInt16();
$this->glyphIndex = $font->readUInt16();
}
}

View File

@@ -0,0 +1,327 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id: font_table_glyf.cls.php 46 2012-04-02 20:22:38Z fabien.menager $
*/
/**
* `glyf` font table.
*
* @package php-font-lib
*/
class Font_Glyph_Outline_Simple extends Font_Glyph_Outline {
const ON_CURVE = 0x01;
const X_SHORT_VECTOR = 0x02;
const Y_SHORT_VECTOR = 0x04;
const REPEAT = 0x08;
const THIS_X_IS_SAME = 0x10;
const THIS_Y_IS_SAME = 0x20;
public $instructions;
public $points;
function parseData(){
parent::parseData();
if (!$this->size) {
return;
}
$font = $this->getFont();
$noc = $this->numberOfContours;
if ($noc == 0) {
return;
}
$endPtsOfContours = $font->r(array(self::uint16, $noc));
$instructionLength = $font->readUInt16();
$this->instructions = $font->r(array(self::uint8, $instructionLength));
$count = $endPtsOfContours[$noc-1] + 1;
// Flags
$flags = array();
for ($index = 0; $index < $count; $index++) {
$flags[$index] = $font->readUInt8();
if ($flags[$index] & self::REPEAT) {
$repeats = $font->readUInt8();
for ($i = 1; $i <= $repeats; $i++) {
$flags[$index+$i] = $flags[$index];
}
$index += $repeats;
}
}
$points = array();
foreach ($flags as $i => $flag) {
$points[$i]["onCurve"] = $flag & self::ON_CURVE;
$points[$i]["endOfContour"] = in_array($i, $endPtsOfContours);
}
// X Coords
$x = 0;
for($i = 0; $i < $count; $i++) {
$flag = $flags[$i];
if ($flag & self::THIS_X_IS_SAME) {
if ($flag & self::X_SHORT_VECTOR) {
$x += $font->readUInt8();
}
}
else {
if ($flag & self::X_SHORT_VECTOR) {
$x -= $font->readUInt8();
}
else {
$x += $font->readInt16();
}
}
$points[$i]["x"] = $x;
}
// Y Coords
$y = 0;
for($i = 0; $i < $count; $i++) {
$flag = $flags[$i];
if ($flag & self::THIS_Y_IS_SAME) {
if ($flag & self::Y_SHORT_VECTOR) {
$y += $font->readUInt8();
}
}
else {
if ($flag & self::Y_SHORT_VECTOR) {
$y -= $font->readUInt8();
}
else {
$y += $font->readInt16();
}
}
$points[$i]["y"] = $y;
}
$this->points = $points;
}
public function splitSVGPath($path) {
preg_match_all('/([a-z])|(-?\d+(?:\.\d+)?)/i', $path, $matches, PREG_PATTERN_ORDER);
return $matches[0];
}
public function makePoints($path) {
$path = $this->splitSVGPath($path);
$l = count($path);
$i = 0;
$points = array();
while($i < $l) {
switch($path[$i]) {
// moveTo
case "M":
$points[] = array(
"onCurve" => true,
"x" => $path[++$i],
"y" => $path[++$i],
"endOfContour" => false,
);
break;
// lineTo
case "L":
$points[] = array(
"onCurve" => true,
"x" => $path[++$i],
"y" => $path[++$i],
"endOfContour" => false,
);
break;
// quadraticCurveTo
case "Q":
$points[] = array(
"onCurve" => false,
"x" => $path[++$i],
"y" => $path[++$i],
"endOfContour" => false,
);
$points[] = array(
"onCurve" => true,
"x" => $path[++$i],
"y" => $path[++$i],
"endOfContour" => false,
);
break;
// closePath
case "z":
$points[count($points)-1]["endOfContour"] = true;
default:
$i++;
break;
}
}
return $points;
}
function encode(){
if (empty($this->points)) {
return parent::encode();
}
return $this->size = $this->encodePoints($this->points);
}
public function encodePoints($points) {
$endPtsOfContours = array();
$flags = array();
$coords_x = array();
$coords_y = array();
$last_x = 0;
$last_y = 0;
$xMin = $yMin = 0xFFFF;
$xMax = $yMax = -0xFFFF;
foreach($points as $i => $point) {
$flag = 0;
if ($point["onCurve"]) {
$flag |= self::ON_CURVE;
}
if ($point["endOfContour"]) {
$endPtsOfContours[] = $i;
}
// Simplified, we could do some optimizations
if ($point["x"] == $last_x) {
$flag |= self::THIS_X_IS_SAME;
}
else {
$x = intval($point["x"]);
$xMin = min($x, $xMin);
$xMax = max($x, $xMax);
$coords_x[] = $x-$last_x; // int16
}
// Simplified, we could do some optimizations
if ($point["y"] == $last_y) {
$flag |= self::THIS_Y_IS_SAME;
}
else {
$y = intval($point["y"]);
$yMin = min($y, $yMin);
$yMax = max($y, $yMax);
$coords_y[] = $y-$last_y; // int16
}
$flags[] = $flag;
$last_x = $point["x"];
$last_y = $point["y"];
}
$font = $this->getFont();
$l = 0;
$l += $font->writeInt16(count($endPtsOfContours)); // endPtsOfContours
$l += $font->writeFWord(isset($this->xMin) ? $this->xMin : $xMin); // xMin
$l += $font->writeFWord(isset($this->yMin) ? $this->yMin : $yMin); // yMin
$l += $font->writeFWord(isset($this->xMax) ? $this->xMax : $xMax); // xMax
$l += $font->writeFWord(isset($this->yMax) ? $this->yMax : $yMax); // yMax
// Simple glyf
$l += $font->w(array(self::uint16, count($endPtsOfContours)), $endPtsOfContours); // endPtsOfContours
$l += $font->writeUInt16(0); // instructionLength
$l += $font->w(array(self::uint8, count($flags)), $flags); // flags
$l += $font->w(array(self::int16, count($coords_x)), $coords_x); // xCoordinates
$l += $font->w(array(self::int16, count($coords_y)), $coords_y); // yCoordinates
return $l;
}
public function getSVGContours($points = null){
$path = "";
if (!$points) {
$points = $this->points;
}
$length = count($points);
$firstIndex = 0;
$count = 0;
for($i = 0; $i < $length; $i++) {
$count++;
if ($points[$i]["endOfContour"]) {
$path .= $this->getSVGPath($points, $firstIndex, $count);
$firstIndex = $i + 1;
$count = 0;
}
}
return $path;
}
protected function getSVGPath($points, $startIndex, $count) {
$offset = 0;
$path = "";
while($offset < $count) {
$point = $points[ $startIndex + $offset %$count ];
$point_p1 = $points[ $startIndex + ($offset+1)%$count ];
if($offset == 0) {
$path .= "M{$point['x']},{$point['y']} ";
}
if ($point["onCurve"]) {
if ($point_p1["onCurve"]) {
$path .= "L{$point_p1['x']},{$point_p1['y']} ";
$offset++;
}
else {
$point_p2 = $points[ $startIndex + ($offset+2)%$count ];
if ($point_p2["onCurve"]){
$path .= "Q{$point_p1['x']},{$point_p1['y']},{$point_p2['x']},{$point_p2['y']} ";
}
else {
$path .= "Q{$point_p1['x']},{$point_p1['y']},".$this->midValue($point_p1['x'], $point_p2['x']).",".$this->midValue($point_p1['y'], $point_p2['y'])." ";
}
$offset += 2;
}
}
else {
if ($point_p1["onCurve"]) {
$path .= "Q{$point['x']},{$point['y']},{$point_p1['x']},{$point_p1['y']} ";
}
else {
$path .= "Q{$point['x']},{$point['y']},".$this->midValue($point['x'], $point_p1['x']).",".$this->midValue($point['y'], $point_p1['y'])." ";
}
$offset++;
}
}
$path .= "z ";
return $path;
}
function midValue($a, $b){
return $a + ($b - $a)/2;
}
}

View File

@@ -0,0 +1,35 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Font header container.
*
* @package php-font-lib
*/
abstract class Font_Header extends Font_Binary_Stream {
/**
* @var Font_TrueType
*/
protected $font;
protected $def = array();
public $data;
public function __construct(Font_TrueType $font) {
$this->font = $font;
}
public function encode(){
return $this->font->pack($this->def, $this->data);
}
public function parse(){
$this->data = $this->font->unpack($this->def);
}
}

View File

@@ -0,0 +1,20 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_truetype.cls.php";
require_once dirname(__FILE__)."/font_opentype_table_directory_entry.cls.php";
/**
* Open Type font, the same as a TrueType one.
*
* @package php-font-lib
*/
class Font_OpenType extends Font_TrueType {
//
}

View File

@@ -0,0 +1,19 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_truetype_table_directory_entry.cls.php";
/**
* Open Type Table directory entry, the same as a TrueType one.
*
* @package php-font-lib
*/
class Font_OpenType_Table_Directory_Entry extends Font_TrueType_Table_Directory_Entry {
}

View File

@@ -0,0 +1,88 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Generic font table.
*
* @package php-font-lib
*/
class Font_Table extends Font_Binary_Stream {
/**
* @var Font_Table_Directory_Entry
*/
protected $entry;
protected $def = array();
public $data;
final public function __construct(Font_Table_Directory_Entry $entry) {
$this->entry = $entry;
$entry->setTable($this);
}
/**
* @return Font_TrueType
*/
public function getFont(){
return $this->entry->getFont();
}
protected function _encode(){
if (empty($this->data)) {
Font::d(" >> Table is empty");
return 0;
}
return $this->getFont()->pack($this->def, $this->data);
}
protected function _parse(){
$this->data = $this->getFont()->unpack($this->def);
}
protected function _parseRaw(){
$this->data = $this->getFont()->read($this->entry->length);
}
protected function _encodeRaw(){
return $this->getFont()->write($this->data, $this->entry->length);
}
public function toHTML(){
return "<pre>".var_export($this->data, true)."</pre>";
}
final public function encode(){
$this->entry->startWrite();
if (false && empty($this->def)) {
$length = $this->_encodeRaw();
}
else {
$length = $this->_encode();
}
$this->entry->endWrite();
return $length;
}
final public function parse(){
$this->entry->startRead();
if (false && empty($this->def)) {
$this->_parseRaw();
}
else {
$this->_parse();
}
$this->entry->endRead();
}
}

View File

@@ -0,0 +1,240 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `cmap` font table.
*
* @package php-font-lib
*/
class Font_Table_cmap extends Font_Table {
private static $header_format = array(
"version" => self::uint16,
"numberSubtables" => self::uint16,
);
private static $subtable_header_format = array(
"platformID" => self::uint16,
"platformSpecificID" => self::uint16,
"offset" => self::uint32,
);
private static $subtable_v4_format = array(
"length" => self::uint16,
"language" => self::uint16,
"segCountX2" => self::uint16,
"searchRange" => self::uint16,
"entrySelector" => self::uint16,
"rangeShift" => self::uint16,
);
protected function _parse(){
$font = $this->getFont();
$cmap_offset = $font->pos();
$data = $font->unpack(self::$header_format);
$subtables = array();
for($i = 0; $i < $data["numberSubtables"]; $i++){
$subtables[] = $font->unpack(self::$subtable_header_format);
}
$data["subtables"] = $subtables;
foreach($data["subtables"] as $i => &$subtable) {
$font->seek($cmap_offset + $subtable["offset"]);
$subtable["format"] = $font->readUInt16();
// @todo Only CMAP version 4
if($subtable["format"] != 4) {
unset($data["subtables"][$i]);
$data["numberSubtables"]--;
continue;
}
$subtable += $font->unpack(self::$subtable_v4_format);
$segCount = $subtable["segCountX2"] / 2;
$subtable["segCount"] = $segCount;
$endCode = $font->r(array(self::uint16, $segCount));
$font->readUInt16(); // reservedPad
$startCode = $font->r(array(self::uint16, $segCount));
$idDelta = $font->r(array(self::int16, $segCount));
$ro_start = $font->pos();
$idRangeOffset = $font->r(array(self::uint16, $segCount));
$glyphIndexArray = array();
for($i = 0; $i < $segCount; $i++) {
$c1 = $startCode[$i];
$c2 = $endCode[$i];
$d = $idDelta[$i];
$ro = $idRangeOffset[$i];
if($ro > 0)
$font->seek($subtable["offset"] + 2 * $i + $ro);
for($c = $c1; $c <= $c2; $c++) {
if ($ro == 0)
$gid = ($c + $d) & 0xFFFF;
else {
$offset = ($c - $c1) * 2 + $ro;
$offset = $ro_start + 2 * $i + $offset;
$font->seek($offset);
$gid = $font->readUInt16();
if ($gid != 0)
$gid = ($gid + $d) & 0xFFFF;
}
if($gid > 0) {
$glyphIndexArray[$c] = $gid;
}
}
}
$subtable += array(
"endCode" => $endCode,
"startCode" => $startCode,
"idDelta" => $idDelta,
"idRangeOffset" => $idRangeOffset,
"glyphIndexArray" => $glyphIndexArray,
);
}
$this->data = $data;
}
function _encode(){
$font = $this->getFont();
$subset = $font->getSubset();
$segments = array();
$i = count($segments)-1;
$j = $i+1;
$prevCode = 0;
$glyphIndexArray = array();
foreach($subset as $code => $gid) {
if ($prevCode + 1 != $code) {
$i++;
$segments[$i] = array();
}
$segments[$i][] = array($code, $j);
$glyphIndexArray[] = $code;
$j++;
$prevCode = $code;
}
$segments[][] = array(0xFFFF, 0xFFFF);
$startCode = array();
$endCode = array();
$idDelta = array();
foreach($segments as $codes){
$start = reset($codes);
$end = end($codes);
$startCode[] = $start[0];
$endCode[] = $end[0];
$idDelta[] = $start[1] - $start[0];
}
$segCount = count($startCode);
$idRangeOffset = array_fill(0, $segCount, 0);
$searchRange = 1;
$entrySelector = 0;
while ($searchRange * 2 <= $segCount) {
$searchRange *= 2;
$entrySelector++;
}
$searchRange *= 2;
$rangeShift = $segCount * 2 - $searchRange;
$subtables = array(
array(
// header
"platformID" => 3, // Unicode
"platformSpecificID" => 1,
"offset" => null,
// subtable
"format" => 4,
"length" => null,
"language" => 0,
"segCount" => $segCount,
"segCountX2" => $segCount * 2,
"searchRange" => $searchRange,
"entrySelector" => $entrySelector,
"rangeShift" => $rangeShift,
"startCode" => $startCode,
"endCode" => $endCode,
"idDelta" => $idDelta,
"idRangeOffset" => $idRangeOffset,
"glyphIndexArray" => $glyphIndexArray,
)
);
$data = array(
"version" => 0,
"numberSubtables" => count($subtables),
"subtables" => $subtables,
);
$length = $font->pack(self::$header_format, $data);
$subtable_headers_size = $data["numberSubtables"] * 8; // size of self::$subtable_header_format
$subtable_headers_offset = $font->pos();
$length += $font->write(str_repeat("\0", $subtable_headers_size), $subtable_headers_size);
// write subtables data
foreach($data["subtables"] as $i => $subtable) {
$length_before = $length;
$data["subtables"][$i]["offset"] = $length;
$length += $font->writeUInt16($subtable["format"]);
$before_subheader = $font->pos();
$length += $font->pack(self::$subtable_v4_format, $subtable);
$segCount = $subtable["segCount"];
$length += $font->w(array(self::uint16, $segCount), $subtable["endCode"]);
$length += $font->writeUInt16(0); // reservedPad
$length += $font->w(array(self::uint16, $segCount), $subtable["startCode"]);
$length += $font->w(array(self::int16, $segCount), $subtable["idDelta"]);
$length += $font->w(array(self::uint16, $segCount), $subtable["idRangeOffset"]);
$length += $font->w(array(self::uint16, $segCount), $subtable["glyphIndexArray"]);
$after_subtable = $font->pos();
$subtable["length"] = $length - $length_before;
$font->seek($before_subheader);
$length += $font->pack(self::$subtable_v4_format, $subtable);
$font->seek($after_subtable);
}
// write subtables headers
$font->seek($subtable_headers_offset);
foreach($data["subtables"] as $subtable) {
$font->pack(self::$subtable_header_format, $subtable);
}
return $length;
}
}

View File

@@ -0,0 +1,125 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Generic Font table directory entry.
*
* @package php-font-lib
*/
class Font_Table_Directory_Entry extends Font_Binary_Stream {
/**
* @var Font_TrueType
*/
protected $font;
/**
* @var Font_Table
*/
protected $font_table;
public $entryLength = 4;
var $tag;
var $checksum;
var $offset;
var $length;
protected $origF;
static function computeChecksum($data){
$len = strlen($data);
$mod = $len % 4;
if ($mod) {
$data = str_pad($data, $len + (4 - $mod), "\0");
}
$len = strlen($data);
$hi = 0x0000;
$lo = 0x0000;
for ($i = 0; $i < $len; $i += 4) {
$hi += (ord($data[$i] ) << 8) + ord($data[$i+1]);
$lo += (ord($data[$i+2]) << 8) + ord($data[$i+3]);
$hi += $lo >> 16;
$lo = $lo & 0xFFFF;
$hi = $hi & 0xFFFF;
}
return ($hi << 8) + $lo;
}
function __construct(Font_TrueType $font) {
$this->font = $font;
$this->f = $font->f;
}
function parse() {
$this->tag = $this->font->read(4);
}
function open($filename, $mode = self::modeRead) {
// void
}
function setTable(Font_Table $font_table) {
$this->font_table = $font_table;
}
function encode($entry_offset){
Font::d("\n==== $this->tag ====");
//Font::d("Entry offset = $entry_offset");
$data = $this->font_table;
$font = $this->font;
$table_offset = $font->pos();
$this->offset = $table_offset;
$table_length = $data->encode();
$font->seek($table_offset);
$table_data = $font->read($table_length);
$font->seek($entry_offset);
$font->write($this->tag, 4);
$font->writeUInt32(self::computeChecksum($table_data));
$font->writeUInt32($table_offset);
$font->writeUInt32($table_length);
Font::d("Bytes written = $table_length");
$font->seek($table_offset + $table_length);
}
/**
* @return Font_TrueType
*/
function getFont() {
return $this->font;
}
function startRead() {
$this->font->seek($this->offset);
}
function endRead() {
//
}
function startWrite() {
$this->font->seek($this->offset);
}
function endWrite() {
//
}
}

View File

@@ -0,0 +1,138 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_glyph_outline.cls.php";
/**
* `glyf` font table.
*
* @package php-font-lib
*/
class Font_Table_glyf extends Font_Table {
protected function _parse(){
$font = $this->getFont();
$offset = $font->pos();
$loca = $font->getData("loca");
$real_loca = array_slice($loca, 0, -1); // Not the last dummy loca entry
$data = array();
foreach($real_loca as $gid => $location) {
$_offset = $offset + $loca[$gid];
$_size = $loca[$gid+1] - $loca[$gid];
$data[$gid] = Font_Glyph_Outline::init($this, $_offset, $_size);
}
$this->data = $data;
}
public function toHTML(){
$max = 160;
$font = $this->getFont();
$head = $font->getData("head");
$head_json = json_encode($head);
$os2 = $font->getData("OS/2");
$os2_json = json_encode($os2);
$hmtx = $font->getData("hmtx");
$hmtx_json = json_encode($hmtx);
$names = $font->getData("post", "names");
$glyphIndexArray = array_flip($font->getUnicodeCharMap());
$width = (abs($head["xMin"]) + $head["xMax"]);
$height = (abs($head["yMin"]) + $head["yMax"]);
$ratio = 1;
if ($width > $max || $height > $max) {
$ratio = max($width, $height) / $max;
$width = round($width/$ratio);
$height = round($height/$ratio);
}
$n = 100;
$s = "<h3>Only the first $n simple glyphs are shown</h3>
<script>
Glyph.ratio = $ratio;
Glyph.head = $head_json;
Glyph.os2 = $os2_json;
Glyph.hmtx = $hmtx_json;
</script>";
foreach($this->data as $g => $glyph) {
if (!$glyph instanceof Font_Glyph_Outline_Simple) {
continue;
}
if ($n-- <= 0) {
break;
}
$glyph->parseData();
$shape = array(
"SVGContours" => $glyph->getSVGContours(),
"xMin" => $glyph->xMin,
"yMin" => $glyph->yMin,
"xMax" => $glyph->xMax,
"yMax" => $glyph->yMax,
);
$shape_json = json_encode($shape);
$char = isset($glyphIndexArray[$g]) ? $glyphIndexArray[$g] : 0;
$name = isset($names[$g]) ? $names[$g] : sprintf("uni%04x", $char);
$char = $char ? "&#{$glyphIndexArray[$g]};" : "";
$s .= "<div class='glyph-view'>
<span class='glyph-id'>$g</span>
<span class='char'>$char</span>
<span class='char-name'>$name</span>
<br />
<canvas width='$width' height='$height' id='glyph-$g'></canvas>
</div>
<script>Glyph.draw(\$('#glyph-$g'), $shape_json, $g)</script>";
}
return $s;
}
protected function _encode() {
$font = $this->getFont();
$subset = $font->getSubset();
$compoundGlyphOffsets = $font->compound_glyph_offsets;
$data = $this->data;
$loca = array();
$length = 0;
foreach($subset as $gid) {
$loca[] = $length;
$glyph = $data[$gid];
if ($glyph instanceof Font_Glyph_Outline_Composite && isset($compoundGlyphOffsets[$gid])) {
$offsets = $compoundGlyphOffsets[$gid];
foreach($offsets as $offset => $newGid) {
list($glyph->raw[$offset], $glyph->raw[$offset+1]) = pack("n", $newGid);
}
}
$length += $glyph->encode();
}
$loca[] = $length; // dummy loca
$font->getTableObject("loca")->data = $loca;
return $length;
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `head` font table.
*
* @package php-font-lib
*/
class Font_Table_head extends Font_Table {
protected $def = array(
"tableVersion" => self::Fixed,
"fontRevision" => self::Fixed,
"checkSumAdjustment" => self::uint32,
"magicNumber" => self::uint32,
"flags" => self::uint16,
"unitsPerEm" => self::uint16,
"created" => self::longDateTime,
"modified" => self::longDateTime,
"xMin" => self::FWord,
"yMin" => self::FWord,
"xMax" => self::FWord,
"yMax" => self::FWord,
"macStyle" => self::uint16,
"lowestRecPPEM" => self::uint16,
"fontDirectionHint" => self::int16,
"indexToLocFormat" => self::int16,
"glyphDataFormat" => self::int16,
);
protected function _parse(){
parent::_parse();
if($this->data["magicNumber"] != 0x5F0F3CF5) {
throw new Exception("Incorrect magic number (".dechex($this->data["magicNumber"]).")");
}
}
}

View File

@@ -0,0 +1,42 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `hhea` font table.
*
* @package php-font-lib
*/
class Font_Table_hhea extends Font_Table {
protected $def = array(
"version" => self::Fixed,
"ascent" => self::FWord,
"descent" => self::FWord,
"lineGap" => self::FWord,
"advanceWidthMax" => self::uFWord,
"minLeftSideBearing" => self::FWord,
"minRightSideBearing" => self::FWord,
"xMaxExtent" => self::FWord,
"caretSlopeRise" => self::int16,
"caretSlopeRun" => self::int16,
"caretOffset" => self::FWord,
self::int16,
self::int16,
self::int16,
self::int16,
"metricDataFormat" => self::int16,
"numOfLongHorMetrics" => self::uint16,
);
function _encode(){
$font = $this->getFont();
$this->data["numOfLongHorMetrics"] = count($font->getSubset());
return parent::_encode();
}
}

View File

@@ -0,0 +1,54 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `hmtx` font table.
*
* @package php-font-lib
*/
class Font_Table_hmtx extends Font_Table {
protected function _parse(){
$font = $this->getFont();
$offset = $font->pos();
$numOfLongHorMetrics = $font->getData("hhea", "numOfLongHorMetrics");
$numGlyphs = $font->getData("maxp", "numGlyphs");
$font->seek($offset);
$data = array();
for($gid = 0; $gid < $numOfLongHorMetrics; $gid++) {
$advanceWidth = $font->readUInt16();
$leftSideBearing = $font->readUInt16();
$data[$gid] = array($advanceWidth, $leftSideBearing);
}
if($numOfLongHorMetrics < $numGlyphs){
$lastWidth = end($data);
$data = array_pad($data, $numGlyphs, $lastWidth);
}
$this->data = $data;
}
protected function _encode() {
$font = $this->getFont();
$subset = $font->getSubset();
$data = $this->data;
$length = 0;
foreach($subset as $gid) {
$length += $font->writeUInt16($data[$gid][0]);
$length += $font->writeUInt16($data[$gid][1]);
}
return $length;
}
}

View File

@@ -0,0 +1,73 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `kern` font table.
*
* @package php-font-lib
*/
class Font_Table_kern extends Font_Table {
protected function _parse(){
$font = $this->getFont();
$data = $font->unpack(array(
"version" => self::uint16,
"nTables" => self::uint16,
// only the first subtable will be parsed
"subtableVersion" => self::uint16,
"length" => self::uint16,
"coverage" => self::uint16,
));
$data["format"] = ($data["coverage"] >> 8);
$subtable = array();
switch($data["format"]) {
case 0:
$subtable = $font->unpack(array(
"nPairs" => self::uint16,
"searchRange" => self::uint16,
"entrySelector" => self::uint16,
"rangeShift" => self::uint16,
));
$pairs = array();
$tree = array();
for ($i = 0; $i < $subtable["nPairs"]; $i++) {
$left = $font->readUInt16();
$right = $font->readUInt16();
$value = $font->readInt16();
$pairs[] = array(
"left" => $left,
"right" => $right,
"value" => $value,
);
$tree[$left][$right] = $value;
}
//$subtable["pairs"] = $pairs;
$subtable["tree"] = $tree;
break;
case 1:
case 2:
case 3:
break;
}
$data["subtable"] = $subtable;
$this->data = $data;
}
}

View File

@@ -0,0 +1,74 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `loca` font table.
*
* @package php-font-lib
*/
class Font_Table_loca extends Font_Table {
protected function _parse(){
$font = $this->getFont();
$offset = $font->pos();
$indexToLocFormat = $font->getData("head", "indexToLocFormat");
$numGlyphs = $font->getData("maxp", "numGlyphs");
$font->seek($offset);
$data = array();
// 2 bytes
if ($indexToLocFormat == 0) {
$d = $font->read(($numGlyphs + 1) * 2);
$loc = unpack("n*", $d);
for ($i = 0; $i <= $numGlyphs; $i++) {
$data[] = $loc[$i+1] * 2;
}
}
// 4 bytes
else if ($indexToLocFormat == 1) {
$d = $font->read(($numGlyphs + 1) * 4);
$loc = unpack("N*", $d);
for ($i = 0; $i <= $numGlyphs; $i++) {
$data[] = $loc[$i+1];
}
}
$this->data = $data;
}
function _encode(){
$font = $this->getFont();
$data = $this->data;
$indexToLocFormat = $font->getData("head", "indexToLocFormat");
$numGlyphs = $font->getData("maxp", "numGlyphs");
$length = 0;
// 2 bytes
if ($indexToLocFormat == 0) {
for ($i = 0; $i <= $numGlyphs; $i++) {
$length += $font->writeUInt16($data[$i] / 2);
}
}
// 4 bytes
else if ($indexToLocFormat == 1) {
for ($i = 0; $i <= $numGlyphs; $i++) {
$length += $font->writeUInt32($data[$i]);
}
}
return $length;
}
}

View File

@@ -0,0 +1,40 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `maxp` font table.
*
* @package php-font-lib
*/
class Font_Table_maxp extends Font_Table {
protected $def = array(
"version" => self::Fixed,
"numGlyphs" => self::uint16,
"maxPoints" => self::uint16,
"maxContours" => self::uint16,
"maxComponentPoints" => self::uint16,
"maxComponentContours" => self::uint16,
"maxZones" => self::uint16,
"maxTwilightPoints" => self::uint16,
"maxStorage" => self::uint16,
"maxFunctionDefs" => self::uint16,
"maxInstructionDefs" => self::uint16,
"maxStackElements" => self::uint16,
"maxSizeOfInstructions" => self::uint16,
"maxComponentElements" => self::uint16,
"maxComponentDepth" => self::uint16,
);
function _encode(){
$font = $this->getFont();
$this->data["numGlyphs"] = count($font->getSubset());
return parent::_encode();
}
}

View File

@@ -0,0 +1,79 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_table_name_record.cls.php";
/**
* `name` font table.
*
* @package php-font-lib
*/
class Font_Table_name extends Font_Table {
private static $header_format = array(
"format" => self::uint16,
"count" => self::uint16,
"stringOffset" => self::uint16,
);
protected function _parse(){
$font = $this->getFont();
$tableOffset = $font->pos();
$data = $font->unpack(self::$header_format);
$records = array();
for($i = 0; $i < $data["count"]; $i++) {
$record = new Font_Table_name_Record();
$record_data = $font->unpack(Font_Table_name_Record::$format);
$record->map($record_data);
$records[] = $record;
}
$names = array();
foreach($records as $record) {
$font->seek($tableOffset + $data["stringOffset"] + $record->offset);
$s = $font->read($record->length);
$record->string = Font::UTF16ToUTF8($s);
$names[$record->nameID] = $record;
}
$data["records"] = $names;
$this->data = $data;
}
protected function _encode(){
$font = $this->getFont();
$records = $this->data["records"];
$count_records = count($records);
$this->data["count"] = $count_records;
$this->data["stringOffset"] = 6 + $count_records * 12; // 6 => uint16 * 3, 12 => sizeof self::$record_format
$length = $font->pack(self::$header_format, $this->data);
$offset = 0;
foreach($records as $record) {
$record->length = mb_strlen($record->getUTF16(), "8bit");
$record->offset = $offset;
$offset += $record->length;
$length += $font->pack(Font_Table_name_Record::$format, (array)$record);
}
foreach($records as $record) {
$str = $record->getUTF16();
$length += $font->write($str, mb_strlen($str, "8bit"));
}
return $length;
}
}

View File

@@ -0,0 +1,50 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* Font table name record.
*
* @package php-font-lib
*/
class Font_Table_name_Record extends Font_Binary_Stream {
public $platformID;
public $platformSpecificID;
public $languageID;
public $nameID;
public $length;
public $offset;
public $string;
public static $format = array(
"platformID" => self::uint16,
"platformSpecificID" => self::uint16,
"languageID" => self::uint16,
"nameID" => self::uint16,
"length" => self::uint16,
"offset" => self::uint16,
);
public function map($data) {
foreach($data as $key => $value) {
$this->$key = $value;
}
}
public function getUTF8() {
return $this->string;
}
public function getUTF16() {
return Font::UTF8ToUTF16($this->string);
}
function __toString(){
return $this->string;
}
}

View File

@@ -0,0 +1,45 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `OS/2` font table.
*
* @package php-font-lib
*/
class Font_Table_os2 extends Font_Table {
protected $def = array(
"version" => self::uint16,
"xAvgCharWidth" => self::int16,
"usWeightClass" => self::uint16,
"usWidthClass" => self::uint16,
"fsType" => self::int16,
"ySubscriptXSize" => self::int16,
"ySubscriptYSize" => self::int16,
"ySubscriptXOffset" => self::int16,
"ySubscriptYOffset" => self::int16,
"ySuperscriptXSize" => self::int16,
"ySuperscriptYSize" => self::int16,
"ySuperscriptXOffset" => self::int16,
"ySuperscriptYOffset" => self::int16,
"yStrikeoutSize" => self::int16,
"yStrikeoutPosition" => self::int16,
"sFamilyClass" => self::int16,
"panose" => array(self::uint8, 10),
"ulCharRange" => array(self::uint32, 4),
"achVendID" => array(self::char, 4),
"fsSelection" => self::uint16,
"fsFirstCharIndex" => self::uint16,
"fsLastCharIndex" => self::uint16,
"typoAscender" => self::int16,
"typoDescender" => self::int16,
"typoLineGap" => self::int16,
"winAscent" => self::int16,
"winDescent" => self::int16,
);
}

View File

@@ -0,0 +1,141 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
/**
* `post` font table.
*
* @package php-font-lib
*/
class Font_Table_post extends Font_Table {
protected $def = array(
"format" => self::Fixed,
"italicAngle" => self::Fixed,
"underlinePosition" => self::FWord,
"underlineThickness" => self::FWord,
"isFixedPitch" => self::uint32,
"minMemType42" => self::uint32,
"maxMemType42" => self::uint32,
"minMemType1" => self::uint32,
"maxMemType1" => self::uint32,
);
protected function _parse(){
$font = $this->getFont();
$data = $font->unpack($this->def);
$names = array();
switch($data["format"]) {
case 1:
$names = Font_TrueType::$macCharNames;
break;
case 2:
$data["numberOfGlyphs"] = $font->readUInt16();
$glyphNameIndex = array();
for($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
$glyphNameIndex[] = $font->readUInt16();
}
$data["glyphNameIndex"] = $glyphNameIndex;
$namesPascal = array();
for($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
$len = $font->readUInt8();
$namesPascal[] = $font->read($len);
}
foreach($glyphNameIndex as $g => $index) {
if ($index < 258) {
$names[$g] = Font_TrueType::$macCharNames[$index];
}
else {
$names[$g] = $namesPascal[$index - 258];
}
}
break;
case 2.5:
// TODO
break;
case 3:
// nothing
break;
case 4:
// TODO
break;
}
$data["names"] = $names;
$this->data = $data;
}
function _encode(){
$font = $this->getFont();
$data = $this->data;
$data["format"] = 3;
$length = $font->pack($this->def, $data);
return $length;
$subset = $font->getSubset();
switch($data["format"]) {
case 1:
// nothing to do
break;
case 2:
$old_names = $data["names"];
$glyphNameIndex = range(0, count($subset));
$names = array();
foreach($subset as $gid) {
$names[] = $data["names"][$data["glyphNameIndex"][$gid]];
}
$numberOfGlyphs = count($names);
$length += $font->writeUInt16($numberOfGlyphs);
foreach($glyphNameIndex as $gni) {
$length += $font->writeUInt16($gni);
}
//$names = array_slice($names, 257);
foreach($names as $name) {
$len = strlen($name);
$length += $font->writeUInt8($len);
$length += $font->write($name, $len);
}
break;
case 2.5:
// TODO
break;
case 3:
// nothing
break;
case 4:
// TODO
break;
}
return $length;
}
}

View File

@@ -0,0 +1,514 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
$dir = dirname(__FILE__);
require_once "$dir/font_binary_stream.cls.php";
require_once "$dir/font_truetype_table_directory_entry.cls.php";
require_once "$dir/font_truetype_header.cls.php";
require_once "$dir/font_table.cls.php";
require_once "$dir/adobe_font_metrics.cls.php";
/**
* TrueType font file.
*
* @package php-font-lib
*/
class Font_TrueType extends Font_Binary_Stream {
/**
* @var Font_TrueType_Header
*/
public $header = array();
private $tableOffset = 0; // Used for TTC
private static $raw = false;
protected $directory = array();
protected $data = array();
protected $glyph_subset = array();
public $glyph_all = array();
public $compound_glyph_offsets = array();
static $nameIdCodes = array(
0 => "Copyright",
1 => "FontName",
2 => "FontSubfamily",
3 => "UniqueID",
4 => "FullName",
5 => "Version",
6 => "PostScriptName",
7 => "Trademark",
8 => "Manufacturer",
9 => "Designer",
10 => "Description",
11 => "FontVendorURL",
12 => "FontDesignerURL",
13 => "LicenseDescription",
14 => "LicenseURL",
// 15
16 => "PreferredFamily",
17 => "PreferredSubfamily",
18 => "CompatibleFullName",
19 => "SampleText",
);
static $platforms = array(
0 => "Unicode",
1 => "Macintosh",
// 2 => Reserved
3 => "Microsoft",
);
static $plaformSpecific = array(
// Unicode
0 => array(
0 => "Default semantics",
1 => "Version 1.1 semantics",
2 => "ISO 10646 1993 semantics (deprecated)",
3 => "Unicode 2.0 or later semantics",
),
// Macintosh
1 => array(
0 => "Roman",
1 => "Japanese",
2 => "Traditional Chinese",
3 => "Korean",
4 => "Arabic",
5 => "Hebrew",
6 => "Greek",
7 => "Russian",
8 => "RSymbol",
9 => "Devanagari",
10 => "Gurmukhi",
11 => "Gujarati",
12 => "Oriya",
13 => "Bengali",
14 => "Tamil",
15 => "Telugu",
16 => "Kannada",
17 => "Malayalam",
18 => "Sinhalese",
19 => "Burmese",
20 => "Khmer",
21 => "Thai",
22 => "Laotian",
23 => "Georgian",
24 => "Armenian",
25 => "Simplified Chinese",
26 => "Tibetan",
27 => "Mongolian",
28 => "Geez",
29 => "Slavic",
30 => "Vietnamese",
31 => "Sindhi",
),
// Microsoft
3 => array(
0 => "Symbol",
1 => "Unicode BMP (UCS-2)",
2 => "ShiftJIS",
3 => "PRC",
4 => "Big5",
5 => "Wansung",
6 => "Johab",
// 7 => Reserved
// 8 => Reserved
// 9 => Reserved
10 => "Unicode UCS-4",
),
);
static $macCharNames = array(
".notdef", ".null", "CR",
"space", "exclam", "quotedbl", "numbersign",
"dollar", "percent", "ampersand", "quotesingle",
"parenleft", "parenright", "asterisk", "plus",
"comma", "hyphen", "period", "slash",
"zero", "one", "two", "three",
"four", "five", "six", "seven",
"eight", "nine", "colon", "semicolon",
"less", "equal", "greater", "question",
"at", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T", "U", "V", "W",
"X", "Y", "Z", "bracketleft",
"backslash", "bracketright", "asciicircum", "underscore",
"grave", "a", "b", "c", "d", "e", "f", "g",
"h", "i", "j", "k", "l", "m", "n", "o",
"p", "q", "r", "s", "t", "u", "v", "w",
"x", "y", "z", "braceleft",
"bar", "braceright", "asciitilde", "Adieresis",
"Aring", "Ccedilla", "Eacute", "Ntilde",
"Odieresis", "Udieresis", "aacute", "agrave",
"acircumflex", "adieresis", "atilde", "aring",
"ccedilla", "eacute", "egrave", "ecircumflex",
"edieresis", "iacute", "igrave", "icircumflex",
"idieresis", "ntilde", "oacute", "ograve",
"ocircumflex", "odieresis", "otilde", "uacute",
"ugrave", "ucircumflex", "udieresis", "dagger",
"degree", "cent", "sterling", "section",
"bullet", "paragraph", "germandbls", "registered",
"copyright", "trademark", "acute", "dieresis",
"notequal", "AE", "Oslash", "infinity",
"plusminus", "lessequal", "greaterequal", "yen",
"mu", "partialdiff", "summation", "product",
"pi", "integral", "ordfeminine", "ordmasculine",
"Omega", "ae", "oslash", "questiondown",
"exclamdown", "logicalnot", "radical", "florin",
"approxequal", "increment", "guillemotleft", "guillemotright",
"ellipsis", "nbspace", "Agrave", "Atilde",
"Otilde", "OE", "oe", "endash",
"emdash", "quotedblleft", "quotedblright", "quoteleft",
"quoteright", "divide", "lozenge", "ydieresis",
"Ydieresis", "fraction", "currency", "guilsinglleft",
"guilsinglright", "fi", "fl", "daggerdbl",
"periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
"Acircumflex", "Ecircumflex", "Aacute", "Edieresis",
"Egrave", "Iacute", "Icircumflex", "Idieresis",
"Igrave", "Oacute", "Ocircumflex", "applelogo",
"Ograve", "Uacute", "Ucircumflex", "Ugrave",
"dotlessi", "circumflex", "tilde", "macron",
"breve", "dotaccent", "ring", "cedilla",
"hungarumlaut", "ogonek", "caron", "Lslash",
"lslash", "Scaron", "scaron", "Zcaron",
"zcaron", "brokenbar", "Eth", "eth",
"Yacute", "yacute", "Thorn", "thorn",
"minus", "multiply", "onesuperior", "twosuperior",
"threesuperior", "onehalf", "onequarter", "threequarters",
"franc", "Gbreve", "gbreve", "Idot",
"Scedilla", "scedilla", "Cacute", "cacute",
"Ccaron", "ccaron", "dmacron"
);
function getTable(){
$this->parseTableEntries();
return $this->directory;
}
function setTableOffset($offset) {
$this->tableOffset = $offset;
}
function parse() {
$this->parseTableEntries();
$this->data = array();
foreach($this->directory as $tag => $table) {
if (empty($this->data[$tag])) {
$this->readTable($tag);
}
}
}
function utf8toUnicode($str) {
$len = strlen($str);
$out = array();
for ($i = 0; $i < $len; $i++) {
$uni = -1;
$h = ord($str[$i]);
if ( $h <= 0x7F ) {
$uni = $h;
}
elseif ( $h >= 0xC2 ) {
if ( ($h <= 0xDF) && ($i < $len -1) )
$uni = ($h & 0x1F) << 6 | (ord($str[++$i]) & 0x3F);
elseif ( ($h <= 0xEF) && ($i < $len -2) )
$uni = ($h & 0x0F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
elseif ( ($h <= 0xF4) && ($i < $len -3) )
$uni = ($h & 0x0F) << 18 | (ord($str[++$i]) & 0x3F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
}
if ($uni >= 0) {
$out[] = $uni;
}
}
return $out;
}
function getUnicodeCharMap() {
$subtable = null;
foreach($this->getData("cmap", "subtables") as $_subtable) {
if ($_subtable["platformID"] == 0 || $_subtable["platformID"] == 3 && $_subtable["platformSpecificID"] == 1) {
$subtable = $_subtable;
break;
}
}
if ($subtable) {
return $subtable["glyphIndexArray"];
}
}
function lookupGlyph($gid, &$gids, &$newGlyphOffsets, $glyfOffset, $indexToLoc, $gidToCid) {
$this->seek($glyfOffset + $indexToLoc[$gid]);
$numberOfContours = $this->readInt16();
if ($numberOfContours < 0) {
$this->skip(8);
$compoundOffset = 10; // 2 + 8
do {
$flags = $this->readUInt16();
$compoundOffset += 2;
$glyphIndex = $this->readUInt16();
$newGlyphOffsets[$compoundOffset] = $glyphIndex;
$compoundOffset += 2;
if (!in_array($glyphIndex, $gids) && isset($indexToLoc[$glyphIndex])) {
$code = $gidToCid[$glyphIndex];
$gids[$code] = $glyphIndex;
}
$pos = $this->pos();
$this->lookupGlyph($glyphIndex, $gids, $newGids, $glyfOffset, $indexToLoc, $gidToCid);
$this->seek($pos);
$offset = 0;
// skip some bytes by case
if ($flags & Font_Glyph_Outline::ARG_1_AND_2_ARE_WORDS) {
$offset += 4;
}
else {
$offset += 2;
}
if ($flags & Font_Glyph_Outline::WE_HAVE_A_SCALE) {
$offset += 2;
}
elseif ($flags & Font_Glyph_Outline::WE_HAVE_AN_X_AND_Y_SCALE) {
$offset += 4;
}
elseif ($flags & Font_Glyph_Outline::WE_HAVE_A_TWO_BY_TWO) {
$offset += 8;
}
$this->skip($offset);
$compoundOffset += $offset;
} while ($flags & Font_Glyph_Outline::MORE_COMPONENTS);
}
}
function setSubset($subset) {
if ( !is_array($subset) ) {
$subset = $this->utf8toUnicode($subset);
}
$subtable = null;
foreach($this->getData("cmap", "subtables") as $_subtable) {
if ($_subtable["platformID"] == 0 || $_subtable["platformID"] == 3 && $_subtable["platformSpecificID"] == 1) {
$subtable = $_subtable;
break;
}
}
if (!$subtable) return;
$gids = array(
0 => 0 // Required glyph
);
foreach($subset as $code) {
if (!isset($subtable["glyphIndexArray"][$code])) {
continue;
}
$gids[$code] = $subtable["glyphIndexArray"][$code];
}
// add compound glyphs
$indexToLoc = $this->getData("loca");
$glyfOffset = $this->directory["glyf"]->offset;
$cidToGid = $subtable["glyphIndexArray"];
$gidToCid = array_flip($cidToGid);
$newGlyphOffsets = array();
foreach($gids as $code => $gid) {
if ($gid === null) {
unset($gids[$code]);
continue;
}
$_newGlyphOffsets = array();
$this->lookupGlyph($gid, $gids, $_newGlyphOffsets, $glyfOffset, $indexToLoc, $gidToCid);
if (count($_newGlyphOffsets)) {
$newGlyphOffsets[$gid] = $_newGlyphOffsets;
}
}
ksort($gids);
foreach($newGlyphOffsets as $_gid => $compoundOffsets) {
foreach($compoundOffsets as $offset => $gid) {
$newGlyphOffsets[$_gid][$offset] = array_search($gid, array_values($gids));
}
}
$this->compound_glyph_offsets = $newGlyphOffsets;
$this->glyph_subset = $gids;
$this->glyph_all = $subtable["glyphIndexArray"];
}
function getSubset() {
if (empty($this->glyph_subset)) {
return $this->glyph_all;
}
return $this->glyph_subset;
}
function encode($tags = array()){
if (!self::$raw) {
$tags = array_merge(array("head", "hhea", "cmap", "hmtx", "maxp", "glyf", "loca", "name", "post"), $tags);
}
else {
$tags = array_keys($this->directory);
}
$num_tables = count($tags);
$n = 16;// @todo
Font::d("Tables : ".implode(", ", $tags));
$entries = array();
foreach($tags as $tag) {
if (!isset($this->directory[$tag])) {
Font::d(" >> '$tag' table doesn't exist");
continue;
}
$entries[$tag] = $this->directory[$tag];
}
$this->header->data["numTables"] = $num_tables;
$this->header->encode();
$directory_offset = $this->pos();
$offset = $directory_offset + $num_tables * $n;
$this->seek($offset);
$i = 0;
foreach($entries as $entry) {
$entry->encode($directory_offset + $i * $n);
$i++;
}
}
function parseHeader(){
if (!empty($this->header)) {
return;
}
$this->seek($this->tableOffset);
$this->header = new Font_TrueType_Header($this);
$this->header->parse();
}
function parseTableEntries(){
$this->parseHeader();
if (!empty($this->directory)) {
return;
}
$class = get_class($this)."_Table_Directory_Entry";
for($i = 0; $i < $this->header->data["numTables"]; $i++) {
$entry = new $class($this);
$entry->parse();
$this->directory[$entry->tag] = $entry;
}
}
function normalizeFUnit($value, $base = 1000){
return round($value * ($base / $this->getData("head", "unitsPerEm")));
}
protected function readTable($tag) {
$this->parseTableEntries();
if (!self::$raw) {
$name_canon = preg_replace("/[^a-z0-9]/", "", strtolower($tag));
$class_file = dirname(__FILE__)."/font_table_$name_canon.cls.php";
if (!isset($this->directory[$tag]) || !file_exists($class_file)) {
return;
}
require_once $class_file;
$class = "Font_Table_$name_canon";
}
else {
$class = "Font_Table";
}
$table = new $class($this->directory[$tag]);
$table->parse();
$this->data[$tag] = $table;
}
public function getTableObject($name) {
return $this->data[$name];
}
public function setTableObject($name, Font_Table $data) {
$this->data[$name] = $data;
}
public function getData($name, $key = null) {
$this->parseTableEntries();
if (empty($this->data[$name])) {
$this->readTable($name);
}
if (!isset($this->data[$name])) {
return null;
}
if (!$key) {
return $this->data[$name]->data;
}
else {
return $this->data[$name]->data[$key];
}
}
function addDirectoryEntry(Font_Table_Directory_Entry $entry) {
$this->directory[$entry->tag] = $entry;
}
function saveAdobeFontMetrics($file, $encoding = null) {
$afm = new Adobe_Font_Metrics($this);
$afm->write($file, $encoding);
}
function reduce(){
$names_to_keep = array(0, 1, 2, 3, 4, 5, 6);
foreach($this->data["name"]->data["records"] as $id => $rec) {
if (in_array($id, $names_to_keep)) continue;
unset($this->data["name"]->data["records"][$id]);
}
}
}

View File

@@ -0,0 +1,93 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_binary_stream.cls.php";
require_once dirname(__FILE__)."/font_truetype.cls.php";
/**
* TrueType collection font file.
*
* @package php-font-lib
*/
class Font_TrueType_Collection extends Font_Binary_Stream implements Iterator, Countable {
/**
* Current iterator position.
*
* @var integer
*/
private $position = 0;
protected $collectionOffsets = array();
protected $collection = array();
protected $version;
protected $numFonts;
function parse(){
if (isset($this->numFonts)) {
return;
}
$this->read(4); // tag name
$this->version = $this->readFixed();
$this->numFonts = $this->readUInt32();
for ($i = 0; $i < $this->numFonts; $i++) {
$this->collectionOffsets[] = $this->readUInt32();
}
}
/**
* @param int $fontId
* @return Font_TrueType
*/
function getFont($fontId) {
$this->parse();
if (!isset($this->collectionOffsets[$fontId])) {
throw new OutOfBoundsException();
}
if (isset($this->collection[$fontId])) {
return $this->collection[$fontId];
}
$font = new Font_TrueType();
$font->f = $this->f;
$font->setTableOffset($this->collectionOffsets[$fontId]);
return $this->collection[$fontId] = $font;
}
function current() {
return $this->getFont($this->position);
}
function key() {
return $this->position;
}
function next() {
return ++$this->position;
}
function rewind() {
$this->position = 0;
}
function valid() {
$this->parse();
return isset($this->collectionOffsets[$this->position]);
}
function count() {
$this->parse();
return $this->numFonts;
}
}

View File

@@ -0,0 +1,32 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_header.cls.php";
/**
* TrueType font file header.
*
* @package php-font-lib
*/
class Font_TrueType_Header extends Font_Header {
protected $def = array(
"format" => self::uint32,
"numTables" => self::uint16,
"searchRange" => self::uint16,
"entrySelector" => self::uint16,
"rangeShift" => self::uint16,
);
public function parse(){
parent::parse();
$format = $this->data["format"];
$this->data["formatText"] = $this->convertUInt32ToStr($format);
}
}

View File

@@ -0,0 +1,32 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_table_directory_entry.cls.php";
/**
* TrueType table directory entry.
*
* @package php-font-lib
*/
class Font_TrueType_Table_Directory_Entry extends Font_Table_Directory_Entry {
function __construct(Font_TrueType $font) {
parent::__construct($font);
}
function parse(){
parent::parse();
$font = $this->font;
$this->checksum = $font->readUInt32();
$this->offset = $font->readUInt32();
$this->length = $font->readUInt32();
$this->entryLength += 12;
}
}

View File

@@ -0,0 +1,80 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_truetype.cls.php";
require_once dirname(__FILE__)."/font_woff_table_directory_entry.cls.php";
require_once dirname(__FILE__)."/font_woff_header.cls.php";
/**
* WOFF font file.
*
* @package php-font-lib
*/
class Font_WOFF extends Font_TrueType {
function parseHeader(){
if (!empty($this->header)) {
return;
}
$this->header = new Font_WOFF_Header($this);
$this->header->parse();
}
public function load($file) {
parent::load($file);
$this->parseTableEntries();
$dataOffset = $this->pos() + count($this->directory) * 20;
$fw = $this->getTempFile(false);
$fr = $this->f;
$this->f = $fw;
$offset = $this->header->encode();
foreach($this->directory as $entry) {
// Read ...
$this->f = $fr;
$this->seek($entry->offset);
$data = $this->read($entry->length);
if ($entry->length < $entry->origLength) {
$data = gzuncompress($data);
}
// Prepare data ...
$length = strlen($data);
$entry->length = $entry->origLength = $length;
$entry->offset = $dataOffset;
// Write ...
$this->f = $fw;
// Woff Entry
$this->seek($offset);
$offset += $this->write($entry->tag, 4); // tag
$offset += $this->writeUInt32($dataOffset); // offset
$offset += $this->writeUInt32($length); // length
$offset += $this->writeUInt32($length); // origLength
$offset += $this->writeUInt32(Font_Table_Directory_Entry::computeChecksum($data)); // checksum
// Data
$this->seek($dataOffset);
$dataOffset += $this->write($data, $length);
}
$this->f = $fw;
$this->seek(0);
// Need to re-parse this, don't know why
$this->header = null;
$this->directory = array();
$this->parseTableEntries();
}
}

View File

@@ -0,0 +1,33 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_truetype_header.cls.php";
/**
* WOFF font file header.
*
* @package php-font-lib
*/
class Font_WOFF_Header extends Font_TrueType_Header {
protected $def = array(
"format" => self::uint32,
"flavor" => self::uint32,
"length" => self::uint32,
"numTables" => self::uint16,
self::uint16,
"totalSfntSize" => self::uint32,
"majorVersion" => self::uint16,
"minorVersion" => self::uint16,
"metaOffset" => self::uint32,
"metaLength" => self::uint32,
"metaOrigLength" => self::uint32,
"privOffset" => self::uint32,
"privLength" => self::uint32,
);
}

View File

@@ -0,0 +1,33 @@
<?php
/**
* @package php-font-lib
* @link http://php-font-lib.googlecode.com/
* @author Fabien Ménager <fabien.menager@gmail.com>
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @version $Id$
*/
require_once dirname(__FILE__)."/font_table_directory_entry.cls.php";
/**
* WOFF font file table directory entry.
*
* @package php-font-lib
*/
class Font_WOFF_Table_Directory_Entry extends Font_Table_Directory_Entry {
protected $origLength;
function __construct(Font_WOFF $font) {
parent::__construct($font);
}
function parse(){
parent::parse();
$font = $this->font;
$this->offset = $font->readUInt32();
$this->length = $font->readUInt32();
$this->origLength = $font->readUInt32();
$this->checksum = $font->readUInt32();
}
}

View File

@@ -0,0 +1,16 @@
{
"name": "phenx/php-font-lib",
"type": "library",
"description": "A library to read, parse, export and make subsets of different types of font files.",
"homepage": "https://github.com/PhenX/php-font-lib",
"license": "LGPL",
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"autoload": {
"classmap": ["classes/"]
}
}

View File

@@ -0,0 +1,231 @@
// Adobe Standard Encoding table for ttf2pt1
// Thomas Henlich <Thomas.Henlich@mailbox.tu-dresden.de>
=20 U+0020 SPACE
=21 U+0021 EXCLAMATION MARK
=22 U+0022 QUOTATION MARK
=23 U+0023 NUMBER SIGN
=24 U+0024 DOLLAR SIGN
=25 U+0025 PERCENT SIGN
=26 U+0026 AMPERSAND
=27 U+2019 RIGHT SINGLE QUOTATION MARK
=28 U+0028 LEFT PARENTHESIS
=29 U+0029 RIGHT PARENTHESIS
=2A U+002A ASTERISK
=2B U+002B PLUS SIGN
=2C U+002C COMMA
=2D U+002D HYPHEN-MINUS
=2E U+002E FULL STOP
=2F U+002F SOLIDUS
=30 U+0030 DIGIT ZERO
=31 U+0031 DIGIT ONE
=32 U+0032 DIGIT TWO
=33 U+0033 DIGIT THREE
=34 U+0034 DIGIT FOUR
=35 U+0035 DIGIT FIVE
=36 U+0036 DIGIT SIX
=37 U+0037 DIGIT SEVEN
=38 U+0038 DIGIT EIGHT
=39 U+0039 DIGIT NINE
=3A U+003A COLON
=3B U+003B SEMICOLON
=3C U+003C LESS-THAN SIGN
=3D U+003D EQUALS SIGN
=3E U+003E GREATER-THAN SIGN
=3F U+003F QUESTION MARK
=40 U+0040 COMMERCIAL AT
=41 U+0041 LATIN CAPITAL LETTER A
=42 U+0042 LATIN CAPITAL LETTER B
=43 U+0043 LATIN CAPITAL LETTER C
=44 U+0044 LATIN CAPITAL LETTER D
=45 U+0045 LATIN CAPITAL LETTER E
=46 U+0046 LATIN CAPITAL LETTER F
=47 U+0047 LATIN CAPITAL LETTER G
=48 U+0048 LATIN CAPITAL LETTER H
=49 U+0049 LATIN CAPITAL LETTER I
=4A U+004A LATIN CAPITAL LETTER J
=4B U+004B LATIN CAPITAL LETTER K
=4C U+004C LATIN CAPITAL LETTER L
=4D U+004D LATIN CAPITAL LETTER M
=4E U+004E LATIN CAPITAL LETTER N
=4F U+004F LATIN CAPITAL LETTER O
=50 U+0050 LATIN CAPITAL LETTER P
=51 U+0051 LATIN CAPITAL LETTER Q
=52 U+0052 LATIN CAPITAL LETTER R
=53 U+0053 LATIN CAPITAL LETTER S
=54 U+0054 LATIN CAPITAL LETTER T
=55 U+0055 LATIN CAPITAL LETTER U
=56 U+0056 LATIN CAPITAL LETTER V
=57 U+0057 LATIN CAPITAL LETTER W
=58 U+0058 LATIN CAPITAL LETTER X
=59 U+0059 LATIN CAPITAL LETTER Y
=5A U+005A LATIN CAPITAL LETTER Z
=5B U+005B LEFT SQUARE BRACKET
=5C U+005C REVERSE SOLIDUS
=5D U+005D RIGHT SQUARE BRACKET
=5E U+005E CIRCUMFLEX ACCENT
=5F U+005F LOW LINE
=60 U+2018 LEFT SINGLE QUOTATION MARK
=61 U+0061 LATIN SMALL LETTER A
=62 U+0062 LATIN SMALL LETTER B
=63 U+0063 LATIN SMALL LETTER C
=64 U+0064 LATIN SMALL LETTER D
=65 U+0065 LATIN SMALL LETTER E
=66 U+0066 LATIN SMALL LETTER F
=67 U+0067 LATIN SMALL LETTER G
=68 U+0068 LATIN SMALL LETTER H
=69 U+0069 LATIN SMALL LETTER I
=6A U+006A LATIN SMALL LETTER J
=6B U+006B LATIN SMALL LETTER K
=6C U+006C LATIN SMALL LETTER L
=6D U+006D LATIN SMALL LETTER M
=6E U+006E LATIN SMALL LETTER N
=6F U+006F LATIN SMALL LETTER O
=70 U+0070 LATIN SMALL LETTER P
=71 U+0071 LATIN SMALL LETTER Q
=72 U+0072 LATIN SMALL LETTER R
=73 U+0073 LATIN SMALL LETTER S
=74 U+0074 LATIN SMALL LETTER T
=75 U+0075 LATIN SMALL LETTER U
=76 U+0076 LATIN SMALL LETTER V
=77 U+0077 LATIN SMALL LETTER W
=78 U+0078 LATIN SMALL LETTER X
=79 U+0079 LATIN SMALL LETTER Y
=7A U+007A LATIN SMALL LETTER Z
=7B U+007B LEFT CURLY BRACKET
=7C U+007C VERTICAL LINE
=7D U+007D RIGHT CURLY BRACKET
=7E U+007E TILDE
=A1 U+00A1 INVERTED EXCLAMATION MARK
=A2 U+00A2 CENT SIGN
=A3 U+00A3 POUND SIGN
=A4 U+2044 FRACTION SLASH
=A5 U+00A5 YEN SIGN
=A6 U+0192 LATIN SMALL LETTER F WITH HOOK
=A7 U+00A7 SECTION SIGN
=A8 U+00A4 CURRENCY SIGN
=A9 U+0027 APOSTROPHE
=AA U+201C LEFT DOUBLE QUOTATION MARK
=AB U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
=AC U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
=AD U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
=AE U+FB01 LATIN SMALL LIGATURE FI
=AF U+FB02 LATIN SMALL LIGATURE FL
=B1 U+2013 EN DASH
=B2 U+2020 DAGGER
=B3 U+2021 DOUBLE DAGGER
=B4 U+00B7 MIDDLE DOT
=B6 U+00B6 PILCROW SIGN
=B7 U+2022 BULLET
=B8 U+201A SINGLE LOW-9 QUOTATION MARK
=B9 U+201E DOUBLE LOW-9 QUOTATION MARK
=BA U+201D RIGHT DOUBLE QUOTATION MARK
=BB U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
=BC U+2026 HORIZONTAL ELLIPSIS
=BD U+2030 PER MILLE SIGN
=BF U+00BF INVERTED QUESTION MARK
=C1 U+0060 GRAVE ACCENT
=C2 U+00B4 ACUTE ACCENT
=C3 U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT
=C4 U+02DC SMALL TILDE
=C5 U+00AF MACRON
=C6 U+02D8 BREVE
=C7 U+02D9 DOT ABOVE
=C8 U+00A8 DIAERESIS
=CA U+02DA RING ABOVE
=CB U+00B8 CEDILLA
=CD U+02DD DOUBLE ACUTE ACCENT
=CE U+02DB OGONEK
=CF U+02C7 CARON
=D0 U+2014 EM DASH
=E1 U+00C6 LATIN CAPITAL LETTER AE
=E3 U+00AA FEMININE ORDINAL INDICATOR
=E8 U+0141 LATIN CAPITAL LETTER L WITH STROKE
=E9 U+00D8 LATIN CAPITAL LETTER O WITH STROKE
=EA U+0152 LATIN CAPITAL LIGATURE OE
=EB U+00BA MASCULINE ORDINAL INDICATOR
=F1 U+00E6 LATIN SMALL LETTER AE
=F5 U+0131 LATIN SMALL LETTER DOTLESS I
=F8 U+0142 LATIN SMALL LETTER L WITH STROKE
=F9 U+00F8 LATIN SMALL LETTER O WITH STROKE
=FA U+0153 LATIN SMALL LIGATURE OE
=FB U+00DF LATIN SMALL LETTER SHARP S
// unencoded characters:
=100 U+00E7 LATIN SMALL LETTER C WITH CEDILLA
=101 U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
=102 U+00E3 LATIN SMALL LETTER A WITH TILDE
=103 U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
=104 U+00B3 SUPERSCRIPT THREE
=105 U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
=106 U+00FE LATIN SMALL LETTER THORN
=107 U+00E8 LATIN SMALL LETTER E WITH GRAVE
=108 U+00B2 SUPERSCRIPT TWO
=109 U+00E9 LATIN SMALL LETTER E WITH ACUTE
=10A U+00F5 LATIN SMALL LETTER O WITH TILDE
=10B U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
=10C U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
=10D U+00FD LATIN SMALL LETTER Y WITH ACUTE
=10E U+00FC LATIN SMALL LETTER U WITH DIAERESIS
=10F U+00BE VULGAR FRACTION THREE QUARTERS
=110 U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
=111 U+00D0 LATIN CAPITAL LETTER ETH
=112 U+00EB LATIN SMALL LETTER E WITH DIAERESIS
=113 U+00F9 LATIN SMALL LETTER U WITH GRAVE
=114 U+2122 TRADE MARK SIGN
=115 U+00F2 LATIN SMALL LETTER O WITH GRAVE
=116 U+0161 LATIN SMALL LETTER S WITH CARON
=117 U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
=118 U+00FA LATIN SMALL LETTER U WITH ACUTE
=119 U+00E0 LATIN SMALL LETTER A WITH GRAVE
=11A U+00F1 LATIN SMALL LETTER N WITH TILDE
=11B U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
=11C U+017E LATIN SMALL LETTER Z WITH CARON
=11D U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
=11E U+00D1 LATIN CAPITAL LETTER N WITH TILDE
=11F U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
=120 U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
=121 U+00CD LATIN CAPITAL LETTER I WITH ACUTE
=122 U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
=123 U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
=124 U+0160 LATIN CAPITAL LETTER S WITH CARON
=125 U+00CC LATIN CAPITAL LETTER I WITH GRAVE
=126 U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
=127 U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
=128 U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
=129 U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
=12A U+00AE REGISTERED SIGN
=12B U+00D5 LATIN CAPITAL LETTER O WITH TILDE
=12C U+00BC VULGAR FRACTION ONE QUARTER
=12D U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
=12E U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
=12F U+00DE LATIN CAPITAL LETTER THORN
=130 U+00F7 DIVISION SIGN
=131 U+00C3 LATIN CAPITAL LETTER A WITH TILDE
=132 U+00DA LATIN CAPITAL LETTER U WITH ACUTE
=133 U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
=134 U+00AC NOT SIGN
=135 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
=136 U+00EF LATIN SMALL LETTER I WITH DIAERESIS
=137 U+00ED LATIN SMALL LETTER I WITH ACUTE
=138 U+00E1 LATIN SMALL LETTER A WITH ACUTE
=139 U+00B1 PLUS-MINUS SIGN
=13A U+00D7 MULTIPLICATION SIGN
=13B U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
=13C U+2212 MINUS SIGN
=13D U+00B9 SUPERSCRIPT ONE
=13E U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
=13F U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
=140 U+00A9 COPYRIGHT SIGN
=141 U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
=142 U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
=143 U+00F3 LATIN SMALL LETTER O WITH ACUTE
=144 U+00B0 DEGREE SIGN
=145 U+00EC LATIN SMALL LETTER I WITH GRAVE
=146 U+00B5 MICRO SIGN
=147 U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
=148 U+00F0 LATIN SMALL LETTER ETH
=149 U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
=14A U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
=14B U+00A6 BROKEN BAR
=14C U+00BD VULGAR FRACTION ONE HALF

View File

@@ -0,0 +1,251 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!89 U+2030 perthousand
!8A U+0160 Scaron
!8B U+2039 guilsinglleft
!8C U+015A Sacute
!8D U+0164 Tcaron
!8E U+017D Zcaron
!8F U+0179 Zacute
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!99 U+2122 trademark
!9A U+0161 scaron
!9B U+203A guilsinglright
!9C U+015B sacute
!9D U+0165 tcaron
!9E U+017E zcaron
!9F U+017A zacute
!A0 U+00A0 space
!A1 U+02C7 caron
!A2 U+02D8 breve
!A3 U+0141 Lslash
!A4 U+00A4 currency
!A5 U+0104 Aogonek
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+015E Scedilla
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+017B Zdotaccent
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+02DB ogonek
!B3 U+0142 lslash
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00B8 cedilla
!B9 U+0105 aogonek
!BA U+015F scedilla
!BB U+00BB guillemotright
!BC U+013D Lcaron
!BD U+02DD hungarumlaut
!BE U+013E lcaron
!BF U+017C zdotaccent
!C0 U+0154 Racute
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+0102 Abreve
!C4 U+00C4 Adieresis
!C5 U+0139 Lacute
!C6 U+0106 Cacute
!C7 U+00C7 Ccedilla
!C8 U+010C Ccaron
!C9 U+00C9 Eacute
!CA U+0118 Eogonek
!CB U+00CB Edieresis
!CC U+011A Ecaron
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+010E Dcaron
!D0 U+0110 Dcroat
!D1 U+0143 Nacute
!D2 U+0147 Ncaron
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+0150 Ohungarumlaut
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+0158 Rcaron
!D9 U+016E Uring
!DA U+00DA Uacute
!DB U+0170 Uhungarumlaut
!DC U+00DC Udieresis
!DD U+00DD Yacute
!DE U+0162 Tcommaaccent
!DF U+00DF germandbls
!E0 U+0155 racute
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+0103 abreve
!E4 U+00E4 adieresis
!E5 U+013A lacute
!E6 U+0107 cacute
!E7 U+00E7 ccedilla
!E8 U+010D ccaron
!E9 U+00E9 eacute
!EA U+0119 eogonek
!EB U+00EB edieresis
!EC U+011B ecaron
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+010F dcaron
!F0 U+0111 dcroat
!F1 U+0144 nacute
!F2 U+0148 ncaron
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+0151 ohungarumlaut
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+0159 rcaron
!F9 U+016F uring
!FA U+00FA uacute
!FB U+0171 uhungarumlaut
!FC U+00FC udieresis
!FD U+00FD yacute
!FE U+0163 tcommaaccent
!FF U+02D9 dotaccent

View File

@@ -0,0 +1,255 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0402 afii10051
!81 U+0403 afii10052
!82 U+201A quotesinglbase
!83 U+0453 afii10100
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!88 U+20AC Euro
!89 U+2030 perthousand
!8A U+0409 afii10058
!8B U+2039 guilsinglleft
!8C U+040A afii10059
!8D U+040C afii10061
!8E U+040B afii10060
!8F U+040F afii10145
!90 U+0452 afii10099
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!99 U+2122 trademark
!9A U+0459 afii10106
!9B U+203A guilsinglright
!9C U+045A afii10107
!9D U+045C afii10109
!9E U+045B afii10108
!9F U+045F afii10193
!A0 U+00A0 space
!A1 U+040E afii10062
!A2 U+045E afii10110
!A3 U+0408 afii10057
!A4 U+00A4 currency
!A5 U+0490 afii10050
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+0401 afii10023
!A9 U+00A9 copyright
!AA U+0404 afii10053
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+0407 afii10056
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+0406 afii10055
!B3 U+0456 afii10103
!B4 U+0491 afii10098
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+0451 afii10071
!B9 U+2116 afii61352
!BA U+0454 afii10101
!BB U+00BB guillemotright
!BC U+0458 afii10105
!BD U+0405 afii10054
!BE U+0455 afii10102
!BF U+0457 afii10104
!C0 U+0410 afii10017
!C1 U+0411 afii10018
!C2 U+0412 afii10019
!C3 U+0413 afii10020
!C4 U+0414 afii10021
!C5 U+0415 afii10022
!C6 U+0416 afii10024
!C7 U+0417 afii10025
!C8 U+0418 afii10026
!C9 U+0419 afii10027
!CA U+041A afii10028
!CB U+041B afii10029
!CC U+041C afii10030
!CD U+041D afii10031
!CE U+041E afii10032
!CF U+041F afii10033
!D0 U+0420 afii10034
!D1 U+0421 afii10035
!D2 U+0422 afii10036
!D3 U+0423 afii10037
!D4 U+0424 afii10038
!D5 U+0425 afii10039
!D6 U+0426 afii10040
!D7 U+0427 afii10041
!D8 U+0428 afii10042
!D9 U+0429 afii10043
!DA U+042A afii10044
!DB U+042B afii10045
!DC U+042C afii10046
!DD U+042D afii10047
!DE U+042E afii10048
!DF U+042F afii10049
!E0 U+0430 afii10065
!E1 U+0431 afii10066
!E2 U+0432 afii10067
!E3 U+0433 afii10068
!E4 U+0434 afii10069
!E5 U+0435 afii10070
!E6 U+0436 afii10072
!E7 U+0437 afii10073
!E8 U+0438 afii10074
!E9 U+0439 afii10075
!EA U+043A afii10076
!EB U+043B afii10077
!EC U+043C afii10078
!ED U+043D afii10079
!EE U+043E afii10080
!EF U+043F afii10081
!F0 U+0440 afii10082
!F1 U+0441 afii10083
!F2 U+0442 afii10084
!F3 U+0443 afii10085
!F4 U+0444 afii10086
!F5 U+0445 afii10087
!F6 U+0446 afii10088
!F7 U+0447 afii10089
!F8 U+0448 afii10090
!F9 U+0449 afii10091
!FA U+044A afii10092
!FB U+044B afii10093
!FC U+044C afii10094
!FD U+044D afii10095
!FE U+044E afii10096
!FF U+044F afii10097

View File

@@ -0,0 +1,251 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!83 U+0192 florin
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!88 U+02C6 circumflex
!89 U+2030 perthousand
!8A U+0160 Scaron
!8B U+2039 guilsinglleft
!8C U+0152 OE
!8E U+017D Zcaron
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!98 U+02DC tilde
!99 U+2122 trademark
!9A U+0161 scaron
!9B U+203A guilsinglright
!9C U+0153 oe
!9E U+017E zcaron
!9F U+0178 Ydieresis
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+00AA ordfeminine
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00B8 cedilla
!B9 U+00B9 onesuperior
!BA U+00BA ordmasculine
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00BF questiondown
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+00C3 Atilde
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+00CC Igrave
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+00D0 Eth
!D1 U+00D1 Ntilde
!D2 U+00D2 Ograve
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+00DD Yacute
!DE U+00DE Thorn
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+00E3 atilde
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+00EC igrave
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+00F0 eth
!F1 U+00F1 ntilde
!F2 U+00F2 ograve
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+00FD yacute
!FE U+00FE thorn
!FF U+00FF ydieresis

View File

@@ -0,0 +1,239 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!83 U+0192 florin
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!89 U+2030 perthousand
!8B U+2039 guilsinglleft
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!99 U+2122 trademark
!9B U+203A guilsinglright
!A0 U+00A0 space
!A1 U+0385 dieresistonos
!A2 U+0386 Alphatonos
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+2015 afii00208
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+0384 tonos
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+0388 Epsilontonos
!B9 U+0389 Etatonos
!BA U+038A Iotatonos
!BB U+00BB guillemotright
!BC U+038C Omicrontonos
!BD U+00BD onehalf
!BE U+038E Upsilontonos
!BF U+038F Omegatonos
!C0 U+0390 iotadieresistonos
!C1 U+0391 Alpha
!C2 U+0392 Beta
!C3 U+0393 Gamma
!C4 U+0394 Delta
!C5 U+0395 Epsilon
!C6 U+0396 Zeta
!C7 U+0397 Eta
!C8 U+0398 Theta
!C9 U+0399 Iota
!CA U+039A Kappa
!CB U+039B Lambda
!CC U+039C Mu
!CD U+039D Nu
!CE U+039E Xi
!CF U+039F Omicron
!D0 U+03A0 Pi
!D1 U+03A1 Rho
!D3 U+03A3 Sigma
!D4 U+03A4 Tau
!D5 U+03A5 Upsilon
!D6 U+03A6 Phi
!D7 U+03A7 Chi
!D8 U+03A8 Psi
!D9 U+03A9 Omega
!DA U+03AA Iotadieresis
!DB U+03AB Upsilondieresis
!DC U+03AC alphatonos
!DD U+03AD epsilontonos
!DE U+03AE etatonos
!DF U+03AF iotatonos
!E0 U+03B0 upsilondieresistonos
!E1 U+03B1 alpha
!E2 U+03B2 beta
!E3 U+03B3 gamma
!E4 U+03B4 delta
!E5 U+03B5 epsilon
!E6 U+03B6 zeta
!E7 U+03B7 eta
!E8 U+03B8 theta
!E9 U+03B9 iota
!EA U+03BA kappa
!EB U+03BB lambda
!EC U+03BC mu
!ED U+03BD nu
!EE U+03BE xi
!EF U+03BF omicron
!F0 U+03C0 pi
!F1 U+03C1 rho
!F2 U+03C2 sigma1
!F3 U+03C3 sigma
!F4 U+03C4 tau
!F5 U+03C5 upsilon
!F6 U+03C6 phi
!F7 U+03C7 chi
!F8 U+03C8 psi
!F9 U+03C9 omega
!FA U+03CA iotadieresis
!FB U+03CB upsilondieresis
!FC U+03CC omicrontonos
!FD U+03CD upsilontonos
!FE U+03CE omegatonos

View File

@@ -0,0 +1,249 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!83 U+0192 florin
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!88 U+02C6 circumflex
!89 U+2030 perthousand
!8A U+0160 Scaron
!8B U+2039 guilsinglleft
!8C U+0152 OE
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!98 U+02DC tilde
!99 U+2122 trademark
!9A U+0161 scaron
!9B U+203A guilsinglright
!9C U+0153 oe
!9F U+0178 Ydieresis
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+00AA ordfeminine
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00B8 cedilla
!B9 U+00B9 onesuperior
!BA U+00BA ordmasculine
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00BF questiondown
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+00C3 Atilde
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+00CC Igrave
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+011E Gbreve
!D1 U+00D1 Ntilde
!D2 U+00D2 Ograve
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+0130 Idotaccent
!DE U+015E Scedilla
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+00E3 atilde
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+00EC igrave
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+011F gbreve
!F1 U+00F1 ntilde
!F2 U+00F2 ograve
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+0131 dotlessi
!FE U+015F scedilla
!FF U+00FF ydieresis

View File

@@ -0,0 +1,233 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!83 U+0192 florin
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!88 U+02C6 circumflex
!89 U+2030 perthousand
!8B U+2039 guilsinglleft
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!98 U+02DC tilde
!99 U+2122 trademark
!9B U+203A guilsinglright
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+20AA afii57636
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+00D7 multiply
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD sfthyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 middot
!B8 U+00B8 cedilla
!B9 U+00B9 onesuperior
!BA U+00F7 divide
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00BF questiondown
!C0 U+05B0 afii57799
!C1 U+05B1 afii57801
!C2 U+05B2 afii57800
!C3 U+05B3 afii57802
!C4 U+05B4 afii57793
!C5 U+05B5 afii57794
!C6 U+05B6 afii57795
!C7 U+05B7 afii57798
!C8 U+05B8 afii57797
!C9 U+05B9 afii57806
!CB U+05BB afii57796
!CC U+05BC afii57807
!CD U+05BD afii57839
!CE U+05BE afii57645
!CF U+05BF afii57841
!D0 U+05C0 afii57842
!D1 U+05C1 afii57804
!D2 U+05C2 afii57803
!D3 U+05C3 afii57658
!D4 U+05F0 afii57716
!D5 U+05F1 afii57717
!D6 U+05F2 afii57718
!D7 U+05F3 gereshhebrew
!D8 U+05F4 gershayimhebrew
!E0 U+05D0 afii57664
!E1 U+05D1 afii57665
!E2 U+05D2 afii57666
!E3 U+05D3 afii57667
!E4 U+05D4 afii57668
!E5 U+05D5 afii57669
!E6 U+05D6 afii57670
!E7 U+05D7 afii57671
!E8 U+05D8 afii57672
!E9 U+05D9 afii57673
!EA U+05DA afii57674
!EB U+05DB afii57675
!EC U+05DC afii57676
!ED U+05DD afii57677
!EE U+05DE afii57678
!EF U+05DF afii57679
!F0 U+05E0 afii57680
!F1 U+05E1 afii57681
!F2 U+05E2 afii57682
!F3 U+05E3 afii57683
!F4 U+05E4 afii57684
!F5 U+05E5 afii57685
!F6 U+05E6 afii57686
!F7 U+05E7 afii57687
!F8 U+05E8 afii57688
!F9 U+05E9 afii57689
!FA U+05EA afii57690
!FD U+200E afii299
!FE U+200F afii300

View File

@@ -0,0 +1,244 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!89 U+2030 perthousand
!8B U+2039 guilsinglleft
!8D U+00A8 dieresis
!8E U+02C7 caron
!8F U+00B8 cedilla
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!99 U+2122 trademark
!9B U+203A guilsinglright
!9D U+00AF macron
!9E U+02DB ogonek
!A0 U+00A0 space
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00D8 Oslash
!A9 U+00A9 copyright
!AA U+0156 Rcommaaccent
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00C6 AE
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00F8 oslash
!B9 U+00B9 onesuperior
!BA U+0157 rcommaaccent
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00E6 ae
!C0 U+0104 Aogonek
!C1 U+012E Iogonek
!C2 U+0100 Amacron
!C3 U+0106 Cacute
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+0118 Eogonek
!C7 U+0112 Emacron
!C8 U+010C Ccaron
!C9 U+00C9 Eacute
!CA U+0179 Zacute
!CB U+0116 Edotaccent
!CC U+0122 Gcommaaccent
!CD U+0136 Kcommaaccent
!CE U+012A Imacron
!CF U+013B Lcommaaccent
!D0 U+0160 Scaron
!D1 U+0143 Nacute
!D2 U+0145 Ncommaaccent
!D3 U+00D3 Oacute
!D4 U+014C Omacron
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+0172 Uogonek
!D9 U+0141 Lslash
!DA U+015A Sacute
!DB U+016A Umacron
!DC U+00DC Udieresis
!DD U+017B Zdotaccent
!DE U+017D Zcaron
!DF U+00DF germandbls
!E0 U+0105 aogonek
!E1 U+012F iogonek
!E2 U+0101 amacron
!E3 U+0107 cacute
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+0119 eogonek
!E7 U+0113 emacron
!E8 U+010D ccaron
!E9 U+00E9 eacute
!EA U+017A zacute
!EB U+0117 edotaccent
!EC U+0123 gcommaaccent
!ED U+0137 kcommaaccent
!EE U+012B imacron
!EF U+013C lcommaaccent
!F0 U+0161 scaron
!F1 U+0144 nacute
!F2 U+0146 ncommaaccent
!F3 U+00F3 oacute
!F4 U+014D omacron
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+0173 uogonek
!F9 U+0142 lslash
!FA U+015B sacute
!FB U+016B umacron
!FC U+00FC udieresis
!FD U+017C zdotaccent
!FE U+017E zcaron
!FF U+02D9 dotaccent

View File

@@ -0,0 +1,247 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!82 U+201A quotesinglbase
!83 U+0192 florin
!84 U+201E quotedblbase
!85 U+2026 ellipsis
!86 U+2020 dagger
!87 U+2021 daggerdbl
!88 U+02C6 circumflex
!89 U+2030 perthousand
!8B U+2039 guilsinglleft
!8C U+0152 OE
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!98 U+02DC tilde
!99 U+2122 trademark
!9B U+203A guilsinglright
!9C U+0153 oe
!9F U+0178 Ydieresis
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+00AA ordfeminine
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00B8 cedilla
!B9 U+00B9 onesuperior
!BA U+00BA ordmasculine
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00BF questiondown
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+0102 Abreve
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+0300 gravecomb
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+0110 Dcroat
!D1 U+00D1 Ntilde
!D2 U+0309 hookabovecomb
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+01A0 Ohorn
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+01AF Uhorn
!DE U+0303 tildecomb
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+0103 abreve
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+0301 acutecomb
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+0111 dcroat
!F1 U+00F1 ntilde
!F2 U+0323 dotbelowcomb
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+01A1 ohorn
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+01B0 uhorn
!FE U+20AB dong
!FF U+00FF ydieresis

View File

@@ -0,0 +1,225 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+20AC Euro
!85 U+2026 ellipsis
!91 U+2018 quoteleft
!92 U+2019 quoteright
!93 U+201C quotedblleft
!94 U+201D quotedblright
!95 U+2022 bullet
!96 U+2013 endash
!97 U+2014 emdash
!A0 U+00A0 space
!A1 U+0E01 kokaithai
!A2 U+0E02 khokhaithai
!A3 U+0E03 khokhuatthai
!A4 U+0E04 khokhwaithai
!A5 U+0E05 khokhonthai
!A6 U+0E06 khorakhangthai
!A7 U+0E07 ngonguthai
!A8 U+0E08 chochanthai
!A9 U+0E09 chochingthai
!AA U+0E0A chochangthai
!AB U+0E0B sosothai
!AC U+0E0C chochoethai
!AD U+0E0D yoyingthai
!AE U+0E0E dochadathai
!AF U+0E0F topatakthai
!B0 U+0E10 thothanthai
!B1 U+0E11 thonangmonthothai
!B2 U+0E12 thophuthaothai
!B3 U+0E13 nonenthai
!B4 U+0E14 dodekthai
!B5 U+0E15 totaothai
!B6 U+0E16 thothungthai
!B7 U+0E17 thothahanthai
!B8 U+0E18 thothongthai
!B9 U+0E19 nonuthai
!BA U+0E1A bobaimaithai
!BB U+0E1B poplathai
!BC U+0E1C phophungthai
!BD U+0E1D fofathai
!BE U+0E1E phophanthai
!BF U+0E1F fofanthai
!C0 U+0E20 phosamphaothai
!C1 U+0E21 momathai
!C2 U+0E22 yoyakthai
!C3 U+0E23 roruathai
!C4 U+0E24 ruthai
!C5 U+0E25 lolingthai
!C6 U+0E26 luthai
!C7 U+0E27 wowaenthai
!C8 U+0E28 sosalathai
!C9 U+0E29 sorusithai
!CA U+0E2A sosuathai
!CB U+0E2B hohipthai
!CC U+0E2C lochulathai
!CD U+0E2D oangthai
!CE U+0E2E honokhukthai
!CF U+0E2F paiyannoithai
!D0 U+0E30 saraathai
!D1 U+0E31 maihanakatthai
!D2 U+0E32 saraaathai
!D3 U+0E33 saraamthai
!D4 U+0E34 saraithai
!D5 U+0E35 saraiithai
!D6 U+0E36 sarauethai
!D7 U+0E37 saraueethai
!D8 U+0E38 sarauthai
!D9 U+0E39 sarauuthai
!DA U+0E3A phinthuthai
!DF U+0E3F bahtthai
!E0 U+0E40 saraethai
!E1 U+0E41 saraaethai
!E2 U+0E42 saraothai
!E3 U+0E43 saraaimaimuanthai
!E4 U+0E44 saraaimaimalaithai
!E5 U+0E45 lakkhangyaothai
!E6 U+0E46 maiyamokthai
!E7 U+0E47 maitaikhuthai
!E8 U+0E48 maiekthai
!E9 U+0E49 maithothai
!EA U+0E4A maitrithai
!EB U+0E4B maichattawathai
!EC U+0E4C thanthakhatthai
!ED U+0E4D nikhahitthai
!EE U+0E4E yamakkanthai
!EF U+0E4F fongmanthai
!F0 U+0E50 zerothai
!F1 U+0E51 onethai
!F2 U+0E52 twothai
!F3 U+0E53 threethai
!F4 U+0E54 fourthai
!F5 U+0E55 fivethai
!F6 U+0E56 sixthai
!F7 U+0E57 seventhai
!F8 U+0E58 eightthai
!F9 U+0E59 ninethai
!FA U+0E5A angkhankhuthai
!FB U+0E5B khomutthai

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+00AA ordfeminine
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00B8 cedilla
!B9 U+00B9 onesuperior
!BA U+00BA ordmasculine
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00BF questiondown
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+00C3 Atilde
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+00CC Igrave
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+00D0 Eth
!D1 U+00D1 Ntilde
!D2 U+00D2 Ograve
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+00DD Yacute
!DE U+00DE Thorn
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+00E3 atilde
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+00EC igrave
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+00F0 eth
!F1 U+00F1 ntilde
!F2 U+00F2 ograve
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+00FD yacute
!FE U+00FE thorn
!FF U+00FF ydieresis

View File

@@ -0,0 +1,248 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+0E01 kokaithai
!A2 U+0E02 khokhaithai
!A3 U+0E03 khokhuatthai
!A4 U+0E04 khokhwaithai
!A5 U+0E05 khokhonthai
!A6 U+0E06 khorakhangthai
!A7 U+0E07 ngonguthai
!A8 U+0E08 chochanthai
!A9 U+0E09 chochingthai
!AA U+0E0A chochangthai
!AB U+0E0B sosothai
!AC U+0E0C chochoethai
!AD U+0E0D yoyingthai
!AE U+0E0E dochadathai
!AF U+0E0F topatakthai
!B0 U+0E10 thothanthai
!B1 U+0E11 thonangmonthothai
!B2 U+0E12 thophuthaothai
!B3 U+0E13 nonenthai
!B4 U+0E14 dodekthai
!B5 U+0E15 totaothai
!B6 U+0E16 thothungthai
!B7 U+0E17 thothahanthai
!B8 U+0E18 thothongthai
!B9 U+0E19 nonuthai
!BA U+0E1A bobaimaithai
!BB U+0E1B poplathai
!BC U+0E1C phophungthai
!BD U+0E1D fofathai
!BE U+0E1E phophanthai
!BF U+0E1F fofanthai
!C0 U+0E20 phosamphaothai
!C1 U+0E21 momathai
!C2 U+0E22 yoyakthai
!C3 U+0E23 roruathai
!C4 U+0E24 ruthai
!C5 U+0E25 lolingthai
!C6 U+0E26 luthai
!C7 U+0E27 wowaenthai
!C8 U+0E28 sosalathai
!C9 U+0E29 sorusithai
!CA U+0E2A sosuathai
!CB U+0E2B hohipthai
!CC U+0E2C lochulathai
!CD U+0E2D oangthai
!CE U+0E2E honokhukthai
!CF U+0E2F paiyannoithai
!D0 U+0E30 saraathai
!D1 U+0E31 maihanakatthai
!D2 U+0E32 saraaathai
!D3 U+0E33 saraamthai
!D4 U+0E34 saraithai
!D5 U+0E35 saraiithai
!D6 U+0E36 sarauethai
!D7 U+0E37 saraueethai
!D8 U+0E38 sarauthai
!D9 U+0E39 sarauuthai
!DA U+0E3A phinthuthai
!DF U+0E3F bahtthai
!E0 U+0E40 saraethai
!E1 U+0E41 saraaethai
!E2 U+0E42 saraothai
!E3 U+0E43 saraaimaimuanthai
!E4 U+0E44 saraaimaimalaithai
!E5 U+0E45 lakkhangyaothai
!E6 U+0E46 maiyamokthai
!E7 U+0E47 maitaikhuthai
!E8 U+0E48 maiekthai
!E9 U+0E49 maithothai
!EA U+0E4A maitrithai
!EB U+0E4B maichattawathai
!EC U+0E4C thanthakhatthai
!ED U+0E4D nikhahitthai
!EE U+0E4E yamakkanthai
!EF U+0E4F fongmanthai
!F0 U+0E50 zerothai
!F1 U+0E51 onethai
!F2 U+0E52 twothai
!F3 U+0E53 threethai
!F4 U+0E54 fourthai
!F5 U+0E55 fivethai
!F6 U+0E56 sixthai
!F7 U+0E57 seventhai
!F8 U+0E58 eightthai
!F9 U+0E59 ninethai
!FA U+0E5A angkhankhuthai
!FB U+0E5B khomutthai

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+20AC Euro
!A5 U+00A5 yen
!A6 U+0160 Scaron
!A7 U+00A7 section
!A8 U+0161 scaron
!A9 U+00A9 copyright
!AA U+00AA ordfeminine
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+017D Zcaron
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+017E zcaron
!B9 U+00B9 onesuperior
!BA U+00BA ordmasculine
!BB U+00BB guillemotright
!BC U+0152 OE
!BD U+0153 oe
!BE U+0178 Ydieresis
!BF U+00BF questiondown
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+00C3 Atilde
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+00CC Igrave
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+00D0 Eth
!D1 U+00D1 Ntilde
!D2 U+00D2 Ograve
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+00DD Yacute
!DE U+00DE Thorn
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+00E3 atilde
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+00EC igrave
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+00F0 eth
!F1 U+00F1 ntilde
!F2 U+00F2 ograve
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+00FD yacute
!FE U+00FE thorn
!FF U+00FF ydieresis

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+0104 Aogonek
!A2 U+0105 aogonek
!A3 U+0141 Lslash
!A4 U+20AC Euro
!A5 U+201E quotedblbase
!A6 U+0160 Scaron
!A7 U+00A7 section
!A8 U+0161 scaron
!A9 U+00A9 copyright
!AA U+0218 Scommaaccent
!AB U+00AB guillemotleft
!AC U+0179 Zacute
!AD U+00AD hyphen
!AE U+017A zacute
!AF U+017B Zdotaccent
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+010C Ccaron
!B3 U+0142 lslash
!B4 U+017D Zcaron
!B5 U+201D quotedblright
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+017E zcaron
!B9 U+010D ccaron
!BA U+0219 scommaaccent
!BB U+00BB guillemotright
!BC U+0152 OE
!BD U+0153 oe
!BE U+0178 Ydieresis
!BF U+017C zdotaccent
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+0102 Abreve
!C4 U+00C4 Adieresis
!C5 U+0106 Cacute
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+00CC Igrave
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+0110 Dcroat
!D1 U+0143 Nacute
!D2 U+00D2 Ograve
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+0150 Ohungarumlaut
!D6 U+00D6 Odieresis
!D7 U+015A Sacute
!D8 U+0170 Uhungarumlaut
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+0118 Eogonek
!DE U+021A Tcommaaccent
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+0103 abreve
!E4 U+00E4 adieresis
!E5 U+0107 cacute
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+00EC igrave
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+0111 dcroat
!F1 U+0144 nacute
!F2 U+00F2 ograve
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+0151 ohungarumlaut
!F6 U+00F6 odieresis
!F7 U+015B sacute
!F8 U+0171 uhungarumlaut
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+0119 eogonek
!FE U+021B tcommaaccent
!FF U+00FF ydieresis

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+0104 Aogonek
!A2 U+02D8 breve
!A3 U+0141 Lslash
!A4 U+00A4 currency
!A5 U+013D Lcaron
!A6 U+015A Sacute
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+0160 Scaron
!AA U+015E Scedilla
!AB U+0164 Tcaron
!AC U+0179 Zacute
!AD U+00AD hyphen
!AE U+017D Zcaron
!AF U+017B Zdotaccent
!B0 U+00B0 degree
!B1 U+0105 aogonek
!B2 U+02DB ogonek
!B3 U+0142 lslash
!B4 U+00B4 acute
!B5 U+013E lcaron
!B6 U+015B sacute
!B7 U+02C7 caron
!B8 U+00B8 cedilla
!B9 U+0161 scaron
!BA U+015F scedilla
!BB U+0165 tcaron
!BC U+017A zacute
!BD U+02DD hungarumlaut
!BE U+017E zcaron
!BF U+017C zdotaccent
!C0 U+0154 Racute
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+0102 Abreve
!C4 U+00C4 Adieresis
!C5 U+0139 Lacute
!C6 U+0106 Cacute
!C7 U+00C7 Ccedilla
!C8 U+010C Ccaron
!C9 U+00C9 Eacute
!CA U+0118 Eogonek
!CB U+00CB Edieresis
!CC U+011A Ecaron
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+010E Dcaron
!D0 U+0110 Dcroat
!D1 U+0143 Nacute
!D2 U+0147 Ncaron
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+0150 Ohungarumlaut
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+0158 Rcaron
!D9 U+016E Uring
!DA U+00DA Uacute
!DB U+0170 Uhungarumlaut
!DC U+00DC Udieresis
!DD U+00DD Yacute
!DE U+0162 Tcommaaccent
!DF U+00DF germandbls
!E0 U+0155 racute
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+0103 abreve
!E4 U+00E4 adieresis
!E5 U+013A lacute
!E6 U+0107 cacute
!E7 U+00E7 ccedilla
!E8 U+010D ccaron
!E9 U+00E9 eacute
!EA U+0119 eogonek
!EB U+00EB edieresis
!EC U+011B ecaron
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+010F dcaron
!F0 U+0111 dcroat
!F1 U+0144 nacute
!F2 U+0148 ncaron
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+0151 ohungarumlaut
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+0159 rcaron
!F9 U+016F uring
!FA U+00FA uacute
!FB U+0171 uhungarumlaut
!FC U+00FC udieresis
!FD U+00FD yacute
!FE U+0163 tcommaaccent
!FF U+02D9 dotaccent

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+0104 Aogonek
!A2 U+0138 kgreenlandic
!A3 U+0156 Rcommaaccent
!A4 U+00A4 currency
!A5 U+0128 Itilde
!A6 U+013B Lcommaaccent
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+0160 Scaron
!AA U+0112 Emacron
!AB U+0122 Gcommaaccent
!AC U+0166 Tbar
!AD U+00AD hyphen
!AE U+017D Zcaron
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+0105 aogonek
!B2 U+02DB ogonek
!B3 U+0157 rcommaaccent
!B4 U+00B4 acute
!B5 U+0129 itilde
!B6 U+013C lcommaaccent
!B7 U+02C7 caron
!B8 U+00B8 cedilla
!B9 U+0161 scaron
!BA U+0113 emacron
!BB U+0123 gcommaaccent
!BC U+0167 tbar
!BD U+014A Eng
!BE U+017E zcaron
!BF U+014B eng
!C0 U+0100 Amacron
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+00C3 Atilde
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+012E Iogonek
!C8 U+010C Ccaron
!C9 U+00C9 Eacute
!CA U+0118 Eogonek
!CB U+00CB Edieresis
!CC U+0116 Edotaccent
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+012A Imacron
!D0 U+0110 Dcroat
!D1 U+0145 Ncommaaccent
!D2 U+014C Omacron
!D3 U+0136 Kcommaaccent
!D4 U+00D4 Ocircumflex
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+0172 Uogonek
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+0168 Utilde
!DE U+016A Umacron
!DF U+00DF germandbls
!E0 U+0101 amacron
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+00E3 atilde
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+012F iogonek
!E8 U+010D ccaron
!E9 U+00E9 eacute
!EA U+0119 eogonek
!EB U+00EB edieresis
!EC U+0117 edotaccent
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+012B imacron
!F0 U+0111 dcroat
!F1 U+0146 ncommaaccent
!F2 U+014D omacron
!F3 U+0137 kcommaaccent
!F4 U+00F4 ocircumflex
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+0173 uogonek
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+0169 utilde
!FE U+016B umacron
!FF U+02D9 dotaccent

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+0401 afii10023
!A2 U+0402 afii10051
!A3 U+0403 afii10052
!A4 U+0404 afii10053
!A5 U+0405 afii10054
!A6 U+0406 afii10055
!A7 U+0407 afii10056
!A8 U+0408 afii10057
!A9 U+0409 afii10058
!AA U+040A afii10059
!AB U+040B afii10060
!AC U+040C afii10061
!AD U+00AD hyphen
!AE U+040E afii10062
!AF U+040F afii10145
!B0 U+0410 afii10017
!B1 U+0411 afii10018
!B2 U+0412 afii10019
!B3 U+0413 afii10020
!B4 U+0414 afii10021
!B5 U+0415 afii10022
!B6 U+0416 afii10024
!B7 U+0417 afii10025
!B8 U+0418 afii10026
!B9 U+0419 afii10027
!BA U+041A afii10028
!BB U+041B afii10029
!BC U+041C afii10030
!BD U+041D afii10031
!BE U+041E afii10032
!BF U+041F afii10033
!C0 U+0420 afii10034
!C1 U+0421 afii10035
!C2 U+0422 afii10036
!C3 U+0423 afii10037
!C4 U+0424 afii10038
!C5 U+0425 afii10039
!C6 U+0426 afii10040
!C7 U+0427 afii10041
!C8 U+0428 afii10042
!C9 U+0429 afii10043
!CA U+042A afii10044
!CB U+042B afii10045
!CC U+042C afii10046
!CD U+042D afii10047
!CE U+042E afii10048
!CF U+042F afii10049
!D0 U+0430 afii10065
!D1 U+0431 afii10066
!D2 U+0432 afii10067
!D3 U+0433 afii10068
!D4 U+0434 afii10069
!D5 U+0435 afii10070
!D6 U+0436 afii10072
!D7 U+0437 afii10073
!D8 U+0438 afii10074
!D9 U+0439 afii10075
!DA U+043A afii10076
!DB U+043B afii10077
!DC U+043C afii10078
!DD U+043D afii10079
!DE U+043E afii10080
!DF U+043F afii10081
!E0 U+0440 afii10082
!E1 U+0441 afii10083
!E2 U+0442 afii10084
!E3 U+0443 afii10085
!E4 U+0444 afii10086
!E5 U+0445 afii10087
!E6 U+0446 afii10088
!E7 U+0447 afii10089
!E8 U+0448 afii10090
!E9 U+0449 afii10091
!EA U+044A afii10092
!EB U+044B afii10093
!EC U+044C afii10094
!ED U+044D afii10095
!EE U+044E afii10096
!EF U+044F afii10097
!F0 U+2116 afii61352
!F1 U+0451 afii10071
!F2 U+0452 afii10099
!F3 U+0453 afii10100
!F4 U+0454 afii10101
!F5 U+0455 afii10102
!F6 U+0456 afii10103
!F7 U+0457 afii10104
!F8 U+0458 afii10105
!F9 U+0459 afii10106
!FA U+045A afii10107
!FB U+045B afii10108
!FC U+045C afii10109
!FD U+00A7 section
!FE U+045E afii10110
!FF U+045F afii10193

View File

@@ -0,0 +1,250 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+2018 quoteleft
!A2 U+2019 quoteright
!A3 U+00A3 sterling
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AF U+2015 afii00208
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+0384 tonos
!B5 U+0385 dieresistonos
!B6 U+0386 Alphatonos
!B7 U+00B7 periodcentered
!B8 U+0388 Epsilontonos
!B9 U+0389 Etatonos
!BA U+038A Iotatonos
!BB U+00BB guillemotright
!BC U+038C Omicrontonos
!BD U+00BD onehalf
!BE U+038E Upsilontonos
!BF U+038F Omegatonos
!C0 U+0390 iotadieresistonos
!C1 U+0391 Alpha
!C2 U+0392 Beta
!C3 U+0393 Gamma
!C4 U+0394 Delta
!C5 U+0395 Epsilon
!C6 U+0396 Zeta
!C7 U+0397 Eta
!C8 U+0398 Theta
!C9 U+0399 Iota
!CA U+039A Kappa
!CB U+039B Lambda
!CC U+039C Mu
!CD U+039D Nu
!CE U+039E Xi
!CF U+039F Omicron
!D0 U+03A0 Pi
!D1 U+03A1 Rho
!D3 U+03A3 Sigma
!D4 U+03A4 Tau
!D5 U+03A5 Upsilon
!D6 U+03A6 Phi
!D7 U+03A7 Chi
!D8 U+03A8 Psi
!D9 U+03A9 Omega
!DA U+03AA Iotadieresis
!DB U+03AB Upsilondieresis
!DC U+03AC alphatonos
!DD U+03AD epsilontonos
!DE U+03AE etatonos
!DF U+03AF iotatonos
!E0 U+03B0 upsilondieresistonos
!E1 U+03B1 alpha
!E2 U+03B2 beta
!E3 U+03B3 gamma
!E4 U+03B4 delta
!E5 U+03B5 epsilon
!E6 U+03B6 zeta
!E7 U+03B7 eta
!E8 U+03B8 theta
!E9 U+03B9 iota
!EA U+03BA kappa
!EB U+03BB lambda
!EC U+03BC mu
!ED U+03BD nu
!EE U+03BE xi
!EF U+03BF omicron
!F0 U+03C0 pi
!F1 U+03C1 rho
!F2 U+03C2 sigma1
!F3 U+03C3 sigma
!F4 U+03C4 tau
!F5 U+03C5 upsilon
!F6 U+03C6 phi
!F7 U+03C7 chi
!F8 U+03C8 psi
!F9 U+03C9 omega
!FA U+03CA iotadieresis
!FB U+03CB upsilondieresis
!FC U+03CC omicrontonos
!FD U+03CD upsilontonos
!FE U+03CE omegatonos

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+0080 .notdef
!81 U+0081 .notdef
!82 U+0082 .notdef
!83 U+0083 .notdef
!84 U+0084 .notdef
!85 U+0085 .notdef
!86 U+0086 .notdef
!87 U+0087 .notdef
!88 U+0088 .notdef
!89 U+0089 .notdef
!8A U+008A .notdef
!8B U+008B .notdef
!8C U+008C .notdef
!8D U+008D .notdef
!8E U+008E .notdef
!8F U+008F .notdef
!90 U+0090 .notdef
!91 U+0091 .notdef
!92 U+0092 .notdef
!93 U+0093 .notdef
!94 U+0094 .notdef
!95 U+0095 .notdef
!96 U+0096 .notdef
!97 U+0097 .notdef
!98 U+0098 .notdef
!99 U+0099 .notdef
!9A U+009A .notdef
!9B U+009B .notdef
!9C U+009C .notdef
!9D U+009D .notdef
!9E U+009E .notdef
!9F U+009F .notdef
!A0 U+00A0 space
!A1 U+00A1 exclamdown
!A2 U+00A2 cent
!A3 U+00A3 sterling
!A4 U+00A4 currency
!A5 U+00A5 yen
!A6 U+00A6 brokenbar
!A7 U+00A7 section
!A8 U+00A8 dieresis
!A9 U+00A9 copyright
!AA U+00AA ordfeminine
!AB U+00AB guillemotleft
!AC U+00AC logicalnot
!AD U+00AD hyphen
!AE U+00AE registered
!AF U+00AF macron
!B0 U+00B0 degree
!B1 U+00B1 plusminus
!B2 U+00B2 twosuperior
!B3 U+00B3 threesuperior
!B4 U+00B4 acute
!B5 U+00B5 mu
!B6 U+00B6 paragraph
!B7 U+00B7 periodcentered
!B8 U+00B8 cedilla
!B9 U+00B9 onesuperior
!BA U+00BA ordmasculine
!BB U+00BB guillemotright
!BC U+00BC onequarter
!BD U+00BD onehalf
!BE U+00BE threequarters
!BF U+00BF questiondown
!C0 U+00C0 Agrave
!C1 U+00C1 Aacute
!C2 U+00C2 Acircumflex
!C3 U+00C3 Atilde
!C4 U+00C4 Adieresis
!C5 U+00C5 Aring
!C6 U+00C6 AE
!C7 U+00C7 Ccedilla
!C8 U+00C8 Egrave
!C9 U+00C9 Eacute
!CA U+00CA Ecircumflex
!CB U+00CB Edieresis
!CC U+00CC Igrave
!CD U+00CD Iacute
!CE U+00CE Icircumflex
!CF U+00CF Idieresis
!D0 U+011E Gbreve
!D1 U+00D1 Ntilde
!D2 U+00D2 Ograve
!D3 U+00D3 Oacute
!D4 U+00D4 Ocircumflex
!D5 U+00D5 Otilde
!D6 U+00D6 Odieresis
!D7 U+00D7 multiply
!D8 U+00D8 Oslash
!D9 U+00D9 Ugrave
!DA U+00DA Uacute
!DB U+00DB Ucircumflex
!DC U+00DC Udieresis
!DD U+0130 Idotaccent
!DE U+015E Scedilla
!DF U+00DF germandbls
!E0 U+00E0 agrave
!E1 U+00E1 aacute
!E2 U+00E2 acircumflex
!E3 U+00E3 atilde
!E4 U+00E4 adieresis
!E5 U+00E5 aring
!E6 U+00E6 ae
!E7 U+00E7 ccedilla
!E8 U+00E8 egrave
!E9 U+00E9 eacute
!EA U+00EA ecircumflex
!EB U+00EB edieresis
!EC U+00EC igrave
!ED U+00ED iacute
!EE U+00EE icircumflex
!EF U+00EF idieresis
!F0 U+011F gbreve
!F1 U+00F1 ntilde
!F2 U+00F2 ograve
!F3 U+00F3 oacute
!F4 U+00F4 ocircumflex
!F5 U+00F5 otilde
!F6 U+00F6 odieresis
!F7 U+00F7 divide
!F8 U+00F8 oslash
!F9 U+00F9 ugrave
!FA U+00FA uacute
!FB U+00FB ucircumflex
!FC U+00FC udieresis
!FD U+0131 dotlessi
!FE U+015F scedilla
!FF U+00FF ydieresis

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+2500 SF100000
!81 U+2502 SF110000
!82 U+250C SF010000
!83 U+2510 SF030000
!84 U+2514 SF020000
!85 U+2518 SF040000
!86 U+251C SF080000
!87 U+2524 SF090000
!88 U+252C SF060000
!89 U+2534 SF070000
!8A U+253C SF050000
!8B U+2580 upblock
!8C U+2584 dnblock
!8D U+2588 block
!8E U+258C lfblock
!8F U+2590 rtblock
!90 U+2591 ltshade
!91 U+2592 shade
!92 U+2593 dkshade
!93 U+2320 integraltp
!94 U+25A0 filledbox
!95 U+2219 periodcentered
!96 U+221A radical
!97 U+2248 approxequal
!98 U+2264 lessequal
!99 U+2265 greaterequal
!9A U+00A0 space
!9B U+2321 integralbt
!9C U+00B0 degree
!9D U+00B2 twosuperior
!9E U+00B7 periodcentered
!9F U+00F7 divide
!A0 U+2550 SF430000
!A1 U+2551 SF240000
!A2 U+2552 SF510000
!A3 U+0451 afii10071
!A4 U+2553 SF520000
!A5 U+2554 SF390000
!A6 U+2555 SF220000
!A7 U+2556 SF210000
!A8 U+2557 SF250000
!A9 U+2558 SF500000
!AA U+2559 SF490000
!AB U+255A SF380000
!AC U+255B SF280000
!AD U+255C SF270000
!AE U+255D SF260000
!AF U+255E SF360000
!B0 U+255F SF370000
!B1 U+2560 SF420000
!B2 U+2561 SF190000
!B3 U+0401 afii10023
!B4 U+2562 SF200000
!B5 U+2563 SF230000
!B6 U+2564 SF470000
!B7 U+2565 SF480000
!B8 U+2566 SF410000
!B9 U+2567 SF450000
!BA U+2568 SF460000
!BB U+2569 SF400000
!BC U+256A SF540000
!BD U+256B SF530000
!BE U+256C SF440000
!BF U+00A9 copyright
!C0 U+044E afii10096
!C1 U+0430 afii10065
!C2 U+0431 afii10066
!C3 U+0446 afii10088
!C4 U+0434 afii10069
!C5 U+0435 afii10070
!C6 U+0444 afii10086
!C7 U+0433 afii10068
!C8 U+0445 afii10087
!C9 U+0438 afii10074
!CA U+0439 afii10075
!CB U+043A afii10076
!CC U+043B afii10077
!CD U+043C afii10078
!CE U+043D afii10079
!CF U+043E afii10080
!D0 U+043F afii10081
!D1 U+044F afii10097
!D2 U+0440 afii10082
!D3 U+0441 afii10083
!D4 U+0442 afii10084
!D5 U+0443 afii10085
!D6 U+0436 afii10072
!D7 U+0432 afii10067
!D8 U+044C afii10094
!D9 U+044B afii10093
!DA U+0437 afii10073
!DB U+0448 afii10090
!DC U+044D afii10095
!DD U+0449 afii10091
!DE U+0447 afii10089
!DF U+044A afii10092
!E0 U+042E afii10048
!E1 U+0410 afii10017
!E2 U+0411 afii10018
!E3 U+0426 afii10040
!E4 U+0414 afii10021
!E5 U+0415 afii10022
!E6 U+0424 afii10038
!E7 U+0413 afii10020
!E8 U+0425 afii10039
!E9 U+0418 afii10026
!EA U+0419 afii10027
!EB U+041A afii10028
!EC U+041B afii10029
!ED U+041C afii10030
!EE U+041D afii10031
!EF U+041E afii10032
!F0 U+041F afii10033
!F1 U+042F afii10049
!F2 U+0420 afii10034
!F3 U+0421 afii10035
!F4 U+0422 afii10036
!F5 U+0423 afii10037
!F6 U+0416 afii10024
!F7 U+0412 afii10019
!F8 U+042C afii10046
!F9 U+042B afii10045
!FA U+0417 afii10025
!FB U+0428 afii10042
!FC U+042D afii10047
!FD U+0429 afii10043
!FE U+0427 afii10041
!FF U+042A afii10044

View File

@@ -0,0 +1,256 @@
!00 U+0000 .notdef
!01 U+0001 .notdef
!02 U+0002 .notdef
!03 U+0003 .notdef
!04 U+0004 .notdef
!05 U+0005 .notdef
!06 U+0006 .notdef
!07 U+0007 .notdef
!08 U+0008 .notdef
!09 U+0009 .notdef
!0A U+000A .notdef
!0B U+000B .notdef
!0C U+000C .notdef
!0D U+000D .notdef
!0E U+000E .notdef
!0F U+000F .notdef
!10 U+0010 .notdef
!11 U+0011 .notdef
!12 U+0012 .notdef
!13 U+0013 .notdef
!14 U+0014 .notdef
!15 U+0015 .notdef
!16 U+0016 .notdef
!17 U+0017 .notdef
!18 U+0018 .notdef
!19 U+0019 .notdef
!1A U+001A .notdef
!1B U+001B .notdef
!1C U+001C .notdef
!1D U+001D .notdef
!1E U+001E .notdef
!1F U+001F .notdef
!20 U+0020 space
!21 U+0021 exclam
!22 U+0022 quotedbl
!23 U+0023 numbersign
!24 U+0024 dollar
!25 U+0025 percent
!26 U+0026 ampersand
!27 U+0027 quotesingle
!28 U+0028 parenleft
!29 U+0029 parenright
!2A U+002A asterisk
!2B U+002B plus
!2C U+002C comma
!2D U+002D hyphen
!2E U+002E period
!2F U+002F slash
!30 U+0030 zero
!31 U+0031 one
!32 U+0032 two
!33 U+0033 three
!34 U+0034 four
!35 U+0035 five
!36 U+0036 six
!37 U+0037 seven
!38 U+0038 eight
!39 U+0039 nine
!3A U+003A colon
!3B U+003B semicolon
!3C U+003C less
!3D U+003D equal
!3E U+003E greater
!3F U+003F question
!40 U+0040 at
!41 U+0041 A
!42 U+0042 B
!43 U+0043 C
!44 U+0044 D
!45 U+0045 E
!46 U+0046 F
!47 U+0047 G
!48 U+0048 H
!49 U+0049 I
!4A U+004A J
!4B U+004B K
!4C U+004C L
!4D U+004D M
!4E U+004E N
!4F U+004F O
!50 U+0050 P
!51 U+0051 Q
!52 U+0052 R
!53 U+0053 S
!54 U+0054 T
!55 U+0055 U
!56 U+0056 V
!57 U+0057 W
!58 U+0058 X
!59 U+0059 Y
!5A U+005A Z
!5B U+005B bracketleft
!5C U+005C backslash
!5D U+005D bracketright
!5E U+005E asciicircum
!5F U+005F underscore
!60 U+0060 grave
!61 U+0061 a
!62 U+0062 b
!63 U+0063 c
!64 U+0064 d
!65 U+0065 e
!66 U+0066 f
!67 U+0067 g
!68 U+0068 h
!69 U+0069 i
!6A U+006A j
!6B U+006B k
!6C U+006C l
!6D U+006D m
!6E U+006E n
!6F U+006F o
!70 U+0070 p
!71 U+0071 q
!72 U+0072 r
!73 U+0073 s
!74 U+0074 t
!75 U+0075 u
!76 U+0076 v
!77 U+0077 w
!78 U+0078 x
!79 U+0079 y
!7A U+007A z
!7B U+007B braceleft
!7C U+007C bar
!7D U+007D braceright
!7E U+007E asciitilde
!7F U+007F .notdef
!80 U+2500 SF100000
!81 U+2502 SF110000
!82 U+250C SF010000
!83 U+2510 SF030000
!84 U+2514 SF020000
!85 U+2518 SF040000
!86 U+251C SF080000
!87 U+2524 SF090000
!88 U+252C SF060000
!89 U+2534 SF070000
!8A U+253C SF050000
!8B U+2580 upblock
!8C U+2584 dnblock
!8D U+2588 block
!8E U+258C lfblock
!8F U+2590 rtblock
!90 U+2591 ltshade
!91 U+2592 shade
!92 U+2593 dkshade
!93 U+2320 integraltp
!94 U+25A0 filledbox
!95 U+2022 bullet
!96 U+221A radical
!97 U+2248 approxequal
!98 U+2264 lessequal
!99 U+2265 greaterequal
!9A U+00A0 space
!9B U+2321 integralbt
!9C U+00B0 degree
!9D U+00B2 twosuperior
!9E U+00B7 periodcentered
!9F U+00F7 divide
!A0 U+2550 SF430000
!A1 U+2551 SF240000
!A2 U+2552 SF510000
!A3 U+0451 afii10071
!A4 U+0454 afii10101
!A5 U+2554 SF390000
!A6 U+0456 afii10103
!A7 U+0457 afii10104
!A8 U+2557 SF250000
!A9 U+2558 SF500000
!AA U+2559 SF490000
!AB U+255A SF380000
!AC U+255B SF280000
!AD U+0491 afii10098
!AE U+255D SF260000
!AF U+255E SF360000
!B0 U+255F SF370000
!B1 U+2560 SF420000
!B2 U+2561 SF190000
!B3 U+0401 afii10023
!B4 U+0404 afii10053
!B5 U+2563 SF230000
!B6 U+0406 afii10055
!B7 U+0407 afii10056
!B8 U+2566 SF410000
!B9 U+2567 SF450000
!BA U+2568 SF460000
!BB U+2569 SF400000
!BC U+256A SF540000
!BD U+0490 afii10050
!BE U+256C SF440000
!BF U+00A9 copyright
!C0 U+044E afii10096
!C1 U+0430 afii10065
!C2 U+0431 afii10066
!C3 U+0446 afii10088
!C4 U+0434 afii10069
!C5 U+0435 afii10070
!C6 U+0444 afii10086
!C7 U+0433 afii10068
!C8 U+0445 afii10087
!C9 U+0438 afii10074
!CA U+0439 afii10075
!CB U+043A afii10076
!CC U+043B afii10077
!CD U+043C afii10078
!CE U+043D afii10079
!CF U+043E afii10080
!D0 U+043F afii10081
!D1 U+044F afii10097
!D2 U+0440 afii10082
!D3 U+0441 afii10083
!D4 U+0442 afii10084
!D5 U+0443 afii10085
!D6 U+0436 afii10072
!D7 U+0432 afii10067
!D8 U+044C afii10094
!D9 U+044B afii10093
!DA U+0437 afii10073
!DB U+0448 afii10090
!DC U+044D afii10095
!DD U+0449 afii10091
!DE U+0447 afii10089
!DF U+044A afii10092
!E0 U+042E afii10048
!E1 U+0410 afii10017
!E2 U+0411 afii10018
!E3 U+0426 afii10040
!E4 U+0414 afii10021
!E5 U+0415 afii10022
!E6 U+0424 afii10038
!E7 U+0413 afii10020
!E8 U+0425 afii10039
!E9 U+0418 afii10026
!EA U+0419 afii10027
!EB U+041A afii10028
!EC U+041B afii10029
!ED U+041C afii10030
!EE U+041D afii10031
!EF U+041E afii10032
!F0 U+041F afii10033
!F1 U+042F afii10049
!F2 U+0420 afii10034
!F3 U+0421 afii10035
!F4 U+0422 afii10036
!F5 U+0423 afii10037
!F6 U+0416 afii10024
!F7 U+0412 afii10019
!F8 U+042C afii10046
!F9 U+042B afii10045
!FA U+0417 afii10025
!FB U+0428 afii10042
!FC U+042D afii10047
!FD U+0429 afii10043
!FE U+0427 afii10041
!FF U+042A afii10044

View File

@@ -0,0 +1 @@
allow from all

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,568 @@
/*
* jQuery UI CSS Framework 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial,sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cc0000&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=15&borderColorHeader=e3a1a1&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=eeeeee&fcContent=333333&iconColorContent=cc0000&bgColorDefault=eeeeee&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=100&borderColorDefault=d8dcdf&fcDefault=004276&iconColorDefault=cc0000&bgColorHover=f6f6f6&bgTextureHover=04_highlight_hard.png&bgImgOpacityHover=100&borderColorHover=cdd5da&fcHover=111111&iconColorHover=cc0000&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=eeeeee&fcActive=cc0000&iconColorActive=cc0000&bgColorHighlight=fbf8ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcd3a1&fcHighlight=444444&iconColorHighlight=004276&bgColorError=f3d8d8&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=75&borderColorError=cc0000&fcError=2e2e2e&iconColorError=cc0000&bgColorOverlay=a6a6a6&bgTextureOverlay=09_dots_small.png&bgImgOpacityOverlay=65&opacityOverlay=40&bgColorShadow=333333&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=10&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #eeeeee; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
.ui-widget-header { border: 1px solid #e3a1a1; background: #cc0000 url(images/ui-bg_highlight-soft_15_cc0000_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d8dcdf; background: #eeeeee url(images/ui-bg_highlight-hard_100_eeeeee_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #004276; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #004276; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #cdd5da; background: #f6f6f6 url(images/ui-bg_highlight-hard_100_f6f6f6_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #111111; }
.ui-state-hover a, .ui-state-hover a:hover { color: #111111; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #eeeeee; background: #ffffff url(images/ui-bg_flat_65_ffffff_40x100.png) 50% 50% repeat-x; font-weight: bold; color: #cc0000; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #cc0000; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcd3a1; background: #fbf8ee url(images/ui-bg_glass_55_fbf8ee_1x400.png) 50% 50% repeat-x; color: #444444; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cc0000; background: #f3d8d8 url(images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png) 50% 50% repeat; color: #2e2e2e; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #2e2e2e; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #2e2e2e; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cc0000_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_cc0000_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_cc0000_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_cc0000_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_cc0000_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_004276_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cc0000_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
/* Overlays */
.ui-widget-overlay { background: #a6a6a6 url(images/ui-bg_dots-small_65_a6a6a6_2x2.png) 50% 50% repeat; opacity: .40;filter:Alpha(Opacity=40); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #333333 url(images/ui-bg_flat_0_333333_40x100.png) 50% 50% repeat-x; opacity: .10;filter:Alpha(Opacity=10); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Resizable 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.14
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

View File

@@ -0,0 +1,106 @@
body {
font-size: 12px;
font-family: tahoma, verdana, arial, sans-serif;
margin: 0.5em;
}
ul {
list-style-position: inside;
padding-left: 0.4em;
}
pre {
font-size: 11px;
}
h2 {
border-bottom: 1px solid #ccc;
}
hr {
clear: both;
}
.unicode-map {
line-height: 0px;
font-size: 3px;
width: 768px;
border: 1px solid #333;
font-family: unicode-map;
}
.unicode-map i, .unicode-map b {
display: inline-block;
width: 3px;
height: 3px;
position: relative;
}
.unicode-map i .info {
font-family: tahoma, verdana, arial, sans-serif;
font-size: 12px;
line-height: 14px;
}
.unicode-map i s, .unicode-map b s {
text-decoration: none;
font-style: normal;
text-align: center;
display: none;
position: absolute;
border: 1px solid #999;
font-size: 32px;
background: #fff;
padding: 3px;
line-height: 1.2;
z-index: 5000;
bottom: 5px;
left: -12px;
}
.unicode-map i:hover s, .unicode-map b:hover s {
display: inline-block;
}
.unicode-map i {
background: #0f0;
}
.unicode-map b {
background: #999;
}
.glyph-view {
display: inline-block;
background: #ddd;
padding: 3px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
text-align: center;
}
.glyph-view span {
display: inline-block;
padding: 1px;
min-width: 1em;
margin-bottom: 2px;
white-space: pre;
}
.glyph-view .char {
background: #bbb;
float: left;
}
.glyph-view .glyph-id {
float: right;
}
.glyph-view .char:empty {
display: none;
}
.glyph-view canvas {
background: #fff;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,568 @@
/*
* jQuery UI CSS Framework 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
* jQuery UI Resizable 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.14
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>PHP font lib - Font explorer</title>
</head>
<frameset rows="28,*">
<frame src="header.html" noresize></frame>
<frameset cols="250, *">
<frame src="font_list.php" />
<frame src="about:blank" id="font-info" name="font-info" />
</frameset>
</frameset>
</html>

Some files were not shown because too many files have changed in this diff Show More