157 lines
4.0 KiB
PHP
157 lines
4.0 KiB
PHP
<?php
|
|
/**
|
|
* @package php-font-lib
|
|
* @link https://github.com/PhenX/php-font-lib
|
|
* @author Fabien Ménager <fabien.menager@gmail.com>
|
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
|
*/
|
|
?><!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>Font information</title>
|
|
<link rel="stylesheet" href="css/style.css" />
|
|
<link rel="stylesheet" href="css/blitzer/jquery-ui-1.8.14.custom.css" />
|
|
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
|
|
<script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
|
|
<script type="text/javascript" src="js/glyph.js?v=5"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
$("#tabs").tabs({
|
|
select: function(event, ui) {
|
|
if (ui.panel.id == "tabs-unicode-map") {
|
|
$(ui.panel).load("<?php echo $_SERVER['REQUEST_URI']; ?>&unicodemap=1");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<?php
|
|
|
|
require_once "../classes/Font.php";
|
|
|
|
$fontfile = null;
|
|
if (isset($_GET["fontfile"])) {
|
|
$fontfile = basename($_GET["fontfile"]);
|
|
$fontfile = "../fonts/$fontfile";
|
|
}
|
|
|
|
$unicodemap = @$_GET["unicodemap"];
|
|
|
|
$t = microtime(true);
|
|
|
|
$font = Font::load($fontfile);
|
|
|
|
if ($font instanceof Font_TrueType_Collection) {
|
|
$font = $font->getFont(0);
|
|
}
|
|
|
|
if ($unicodemap) {
|
|
?>
|
|
<style type="text/css">
|
|
@font-face {
|
|
font-family: unicode-map;
|
|
font-weight: normal;
|
|
font-style: normal;
|
|
font-variant: normal;
|
|
src: url('<?php echo $fontfile; ?>');
|
|
}
|
|
</style>
|
|
<div class="unicode-map">
|
|
<?php
|
|
|
|
$subtable = null;
|
|
foreach($font->getData("cmap", "subtables") as $_subtable) {
|
|
if ($_subtable["platformID"] == 3 && $_subtable["platformSpecificID"] == 1) {
|
|
$subtable = $_subtable;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$empty = 0;
|
|
$names = $font->getData("post", "names");
|
|
|
|
for($c = 0; $c <= 0xFFFF; $c++) {
|
|
if (($c % 256 == 0 || $c == 0xFFFF) && $empty > 0) {
|
|
echo "<b style=\"width:".($empty*3)."px\"></b>";
|
|
$empty = 0;
|
|
}
|
|
|
|
if (isset($subtable["glyphIndexArray"][$c])) {
|
|
$g = $subtable["glyphIndexArray"][$c];
|
|
|
|
if ($empty > 0) {
|
|
echo "<b style=\"width:".($empty*3)."px\"></b>";
|
|
$empty = 0;
|
|
}
|
|
echo "<i><s>&#$c;<br /><div class=\"info\">$c<br />".(isset($names[$g]) ? $names[$g] : sprintf("uni%04x", $c))."</div></s></i>";
|
|
}
|
|
else {
|
|
$empty++;
|
|
}
|
|
} ?>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
else {
|
|
$font->parse();
|
|
|
|
//$font->saveAdobeFontMetrics("$fontfile.ufm");
|
|
?>
|
|
<span style="float: right;">
|
|
File size: <?php echo round(filesize($fontfile) / 1024, 3); ?>KB —
|
|
Memory: <?php echo (memory_get_peak_usage(true) / 1024); ?>KB —
|
|
Time: <?php echo round(microtime(true) - $t, 4); ?>s
|
|
<br />
|
|
<a href="make_subset.php?fontfile=<?php echo $fontfile; ?>&name=<?php echo urlencode($font->getFontSubfamilyID()); ?>">Make a subset of this font</a>
|
|
</span>
|
|
|
|
<h1><?php echo $font->getFontFullName(); ?></h1>
|
|
<h3><?php echo $font->getFontVersion(); ?></h3>
|
|
<hr />
|
|
|
|
<div id="tabs">
|
|
<ul>
|
|
<li><a href="#tabs-header">Header</a></li>
|
|
|
|
<?php foreach($font->getTable() as $entry) {
|
|
$tag = $entry->tag;
|
|
$data = $font->getData($tag);
|
|
|
|
?>
|
|
<li>
|
|
<a <?php if (!$data) { ?> style="color: #ccc;" <?php } ?> href="#tabs-<?php echo preg_replace("/[^a-z0-9]/i", "_", $tag); ?>"><?php echo $tag; ?></a>
|
|
</li>
|
|
<?php } ?>
|
|
<li><a href="#tabs-unicode-map">Unicode map</a></li>
|
|
</ul>
|
|
|
|
<div id="tabs-header"><pre><?php echo var_export($font->header->data, true); ?></pre></div>
|
|
|
|
<?php foreach($font->getTable() as $table) {
|
|
$tag = $table->tag;
|
|
$data = $font->getData($tag);
|
|
|
|
?>
|
|
<div id="tabs-<?php echo preg_replace("/[^a-z0-9]/i", "_", $tag); ?>">
|
|
<?php
|
|
if ($data) {
|
|
echo $font->getTableObject($tag)->toHTML();
|
|
}
|
|
else {
|
|
echo "Not yet implemented";
|
|
}
|
|
|
|
?>
|
|
</div>
|
|
|
|
<div id="tabs-unicode-map"></div>
|
|
<?php } ?>
|
|
</div>
|
|
|
|
<?php } ?>
|
|
</body>
|
|
</html>
|