作者:google-code-backup
项目:zeybu
function MakeFont($fontfile, $afmfile, $enc = 'cp1252', $patch = array(), $type = 'TrueType')
{
//Generate a font definition file
set_magic_quotes_runtime(0);
ini_set('auto_detect_line_endings', '1');
if ($enc) {
$map = ReadMap($enc);
foreach ($patch as $cc => $gn) {
$map[$cc] = $gn;
}
} else {
$map = array();
}
if (!file_exists($afmfile)) {
die('<B>Error:</B> AFM file not found: ' . $afmfile);
}
$fm = ReadAFM($afmfile, $map);
if ($enc) {
$diff = MakeFontEncoding($map);
} else {
$diff = '';
}
$fd = MakeFontDescriptor($fm, empty($map));
//Find font type
if ($fontfile) {
$ext = strtolower(substr($fontfile, -3));
if ($ext == 'ttf') {
$type = 'TrueType';
} elseif ($ext == 'pfb') {
$type = 'Type1';
} else {
die('<B>Error:</B> unrecognized font file extension: ' . $ext);
}
} else {
if ($type != 'TrueType' and $type != 'Type1') {
die('<B>Error:</B> incorrect font type: ' . $type);
}
}
//Start generation
$s = '<?php' . "\n";
$s .= '$type=\'' . $type . "';\n";
$s .= '$name=\'' . $fm['FontName'] . "';\n";
$s .= '$desc=' . $fd . ";\n";
if (!isset($fm['UnderlinePosition'])) {
$fm['UnderlinePosition'] = -100;
}
if (!isset($fm['UnderlineThickness'])) {
$fm['UnderlineThickness'] = 50;
}
$s .= '$up=' . $fm['UnderlinePosition'] . ";\n";
$s .= '$ut=' . $fm['UnderlineThickness'] . ";\n";
$w = MakeWidthArray($fm);
$s .= '$cw=' . $w . ";\n";
$s .= '$enc=\'' . $enc . "';\n";
$s .= '$diff=\'' . $diff . "';\n";
$basename = substr(basename($afmfile), 0, -4);
if ($fontfile) {
//Embedded font
if (!file_exists($fontfile)) {
die('<B>Error:</B> font file not found: ' . $fontfile);
}
if ($type == 'TrueType') {
CheckTTF($fontfile);
}
$f = fopen($fontfile, 'rb');
if (!$f) {
die('<B>Error:</B> Can\'t open ' . $fontfile);
}
$file = fread($f, filesize($fontfile));
fclose($f);
if ($type == 'Type1') {
//Find first two sections and discard third one
$header = ord($file[0]) == 128;
if ($header) {
//Strip first binary header
$file = substr($file, 6);
}
$pos = strpos($file, 'eexec');
if (!$pos) {
die('<B>Error:</B> font file does not seem to be valid Type1');
}
$size1 = $pos + 6;
if ($header and ord($file[$size1]) == 128) {
//Strip second binary header
$file = substr($file, 0, $size1) . substr($file, $size1 + 6);
}
$pos = strpos($file, '00000000');
if (!$pos) {
die('<B>Error:</B> font file does not seem to be valid Type1');
}
$size2 = $pos - $size1;
$file = substr($file, 0, $size1 + $size2);
}
if (function_exists('gzcompress')) {
$cmp = $basename . '.z';
SaveToFile($cmp, gzcompress($file), 'b');
$s .= '$file=\'' . $cmp . "';\n";
echo 'Font file compressed (' . $cmp . ')<BR>';
} else {
$s .= '$file=\'' . basename($fontfile) . "';\n";
//.........这里部分代码省略.........
作者:nicolasconnaul
项目:moodle2.
/**
*
* @param string $fontfile path to font file (TTF or PFB).
* @param string $fmfile font metrics file (UFM or AFM).
* @param boolean $embedded Set to false to not embed the font, true otherwise (default).
* @param string $enc Name of the encoding table to use. Omit this parameter for TrueType Unicode, OpenType Unicode and symbolic fonts like Symbol or ZapfDingBats.
* @param array $patch Optional modification of the encoding
*/
function MakeFont($fontfile, $fmfile, $embedded = true, $enc = "cp1252", $patch = array())
{
//Generate a font definition file
set_magic_quotes_runtime(0);
ini_set('auto_detect_line_endings', '1');
if (!file_exists($fontfile)) {
die('Error: file not found: ' . $fontfile);
}
if (!file_exists($fmfile)) {
die('Error: file not found: ' . $fmfile);
}
$cidtogidmap = '';
$map = array();
$diff = '';
$ffext = strtolower(substr($fontfile, -3));
$fmext = strtolower(substr($fmfile, -3));
if ($fmext == 'afm') {
if ($ffext == 'ttf') {
$type = 'TrueType';
} elseif ($ffext == 'pfb') {
$type = 'Type1';
} else {
die('Error: unrecognized font file extension: ' . $ext);
}
if ($enc) {
$map = ReadMap($enc);
foreach ($patch as $cc => $gn) {
$map[$cc] = $gn;
}
}
$fm = ReadAFM($fmfile, $map);
if ($enc) {
$diff = MakeFontEncoding($map);
}
$fd = MakeFontDescriptor($fm, empty($map));
} elseif ($fmext == 'ufm') {
$enc = "";
if ($ffext == 'ttf') {
$type = 'TrueTypeUnicode';
} else {
die('Error: not a TrueType font: ' . $ffext);
}
$fm = ReadUFM($fmfile, $cidtogidmap);
$fd = MakeFontDescriptor($fm, false);
}
//Start generation
$s = '<?php' . "\n";
$s .= '$type=\'' . $type . "';\n";
$s .= '$name=\'' . $fm['FontName'] . "';\n";
$s .= '$desc=' . $fd . ";\n";
if (!isset($fm['UnderlinePosition'])) {
$fm['UnderlinePosition'] = -100;
}
if (!isset($fm['UnderlineThickness'])) {
$fm['UnderlineThickness'] = 50;
}
$s .= '$up=' . $fm['UnderlinePosition'] . ";\n";
$s .= '$ut=' . $fm['UnderlineThickness'] . ";\n";
$w = MakeWidthArray($fm);
$s .= '$cw=' . $w . ";\n";
$s .= '$enc=\'' . $enc . "';\n";
$s .= '$diff=\'' . $diff . "';\n";
$basename = substr(basename($fmfile), 0, -4);
if ($embedded) {
//Embedded font
if ($type == 'TrueType' or $type == 'TrueTypeUnicode') {
CheckTTF($fontfile);
}
$f = fopen($fontfile, 'rb');
if (!$f) {
die('Error: Unable to open ' . $fontfile);
}
$file = fread($f, filesize($fontfile));
fclose($f);
if ($type == 'Type1') {
//Find first two sections and discard third one
$header = ord($file[0]) == 128;
if ($header) {
//Strip first binary header
$file = substr($file, 6);
}
$pos = strpos($file, 'eexec');
if (!$pos) {
die('Error: font file does not seem to be valid Type1');
}
$size1 = $pos + 6;
if ($header and ord($file[$size1]) == 128) {
//Strip second binary header
$file = substr($file, 0, $size1) . substr($file, $size1 + 6);
}
$pos = strpos($file, '00000000');
if (!$pos) {
//.........这里部分代码省略.........
作者:ravalm
项目:openprojec
function MakeFont($fontfile, $ufmfile)
{
//Generate a font definition file
set_magic_quotes_runtime(0);
if (!file_exists($ufmfile)) {
die('<B>Error:</B> UFM file not found: ' . $ufmfile);
}
$cidtogidmap = '';
$fm = ReadUFM($ufmfile, $cidtogidmap);
$fd = MakeFontDescriptor($fm);
//Find font type
if ($fontfile) {
$ext = strtolower(substr($fontfile, -3));
if ($ext == 'ttf') {
$type = 'TrueTypeUnicode';
} else {
die('<B>Error:</B> not a truetype font: ' . $ext);
}
} else {
if ($type != 'TrueTypeUnicode') {
die('<B>Error:</B> incorrect font type: ' . $type);
}
}
//Start generation
$basename = strtolower(substr(basename($ufmfile), 0, -4));
$s = 'TCPDFFontDescriptor.define(\'' . $basename . "') do |font|\n";
$s .= " font[:type]='" . $type . "'\n";
$s .= " font[:name]='" . $fm['FontName'] . "'\n";
$s .= " font[:desc]=" . $fd . "\n";
if (!isset($fm['UnderlinePosition'])) {
$fm['UnderlinePosition'] = -100;
}
if (!isset($fm['UnderlineThickness'])) {
$fm['UnderlineThickness'] = 50;
}
$s .= " font[:up]=" . $fm['UnderlinePosition'] . "\n";
$s .= " font[:ut]=" . $fm['UnderlineThickness'] . "\n";
$s .= " font[:cw]=" . MakeWidthArray($fm) . "\n";
$s .= " font[:enc]=''\n";
$s .= " font[:diff]=''\n";
if ($fontfile) {
//Embedded font
if (!file_exists($fontfile)) {
die('<B>Error:</B> font file not found: ' . $fontfile);
}
CheckTTF($fontfile);
$f = fopen($fontfile, 'rb');
if (!$f) {
die('<B>Error:</B> Can\'t open ' . $fontfile);
}
$file = fread($f, filesize($fontfile));
fclose($f);
if (function_exists('gzcompress')) {
$cmp = $basename . '.z';
SaveToFile($cmp, gzcompress($file), 'b');
$s .= ' font[:file]=\'' . $cmp . "'\n";
echo 'Font file compressed (' . $cmp . ')<BR>';
$cmp = $basename . '.ctg.z';
SaveToFile($cmp, gzcompress($cidtogidmap), 'b');
echo 'CIDToGIDMap created and compressed (' . $cmp . ')<BR>';
$s .= ' font[:ctg]=\'' . $cmp . "'\n";
} else {
$s .= '$file=\'' . basename($fontfile) . "'\n";
echo '<B>Notice:</B> font file could not be compressed (gzcompress not available)<BR>';
$cmp = $basename . '.ctg';
$f = fopen($cmp, 'wb');
fwrite($f, $cidtogidmap);
fclose($f);
echo 'CIDToGIDMap created (' . $cmp . ')<BR>';
$s .= ' font[:ctg]=\'' . $cmp . "'\n";
}
if ($type == 'Type1') {
$s .= ' font[:size1]=' . $size1 . "\n";
$s .= ' font[:size2]=' . $size2 . "\n";
} else {
$s .= ' font[:originalsize]=' . filesize($fontfile) . "\n";
}
} else {
//Not embedded font
$s .= ' font[:file]=' . "''\n";
}
$s .= "end\n";
SaveToFile($basename . '.rb', $s);
echo 'Font definition file generated (' . $basename . '.rb' . ')<BR>';
}
作者:isantiag
项目:foswik
function MakeFont($fontfile, $afmfile, $destdir, $destfile, $enc)
{
// Generate a font definition file
set_magic_quotes_runtime(0);
ini_set('auto_detect_line_endings', '1');
$manager = ManagerEncoding::get();
$map = $manager->get_encoding_glyphs($enc);
$fm = ReadAFM($afmfile, $map);
if (is_null($fm)) {
error_log(sprintf("Notice: Missing AFM file '%s'; attempting to parse font file '%s' directly", $afmfile, $fontfile));
$fm = ReadTTF($fontfile, $manager->getEncodingVector($enc));
if (is_null($fm)) {
die(sprintf("Cannot get font metrics for '%s'", $fontfile));
}
}
$diff = MakeFontEncoding($map);
$cmap = MakeFontCMap($enc);
$fd = MakeFontDescriptor($fm, empty($map));
//Find font type
if ($fontfile) {
$ext = strtolower(substr($fontfile, -3));
if ($ext == 'ttf') {
$type = 'TrueType';
} elseif ($ext == 'pfb') {
$type = 'Type1';
} else {
die('<B>Error:</B> unrecognized font file extension: ' . $ext);
}
} else {
if ($type != 'TrueType' and $type != 'Type1') {
die('<B>Error:</B> incorrect font type: ' . $type);
}
}
//Start generation
$s = '<?php' . "\n";
$s .= '$type=\'' . $type . "';\n";
$s .= '$name=\'' . $fm['FontName'] . "';\n";
$s .= '$desc=' . $fd . ";\n";
if (!isset($fm['UnderlinePosition'])) {
$fm['UnderlinePosition'] = -100;
}
if (!isset($fm['UnderlineThickness'])) {
$fm['UnderlineThickness'] = 50;
}
$s .= '$up=' . $fm['UnderlinePosition'] . ";\n";
$s .= '$ut=' . $fm['UnderlineThickness'] . ";\n";
$w = MakeWidthArray($fm);
$s .= '$cw=' . $w . ";\n";
$s .= '$enc=\'' . $enc . "';\n";
$s .= '$diff=\'' . $diff . "';\n";
$s .= '$cmap=' . $cmap . ";\n";
$basename = substr(basename($afmfile), 0, -4);
if ($fontfile) {
//Embedded font
if (!file_exists($fontfile)) {
die('<B>Error:</B> font file not found: ' . $fontfile);
}
if ($type == 'TrueType') {
CheckTTF($fontfile);
}
$f = fopen($fontfile, 'rb');
if (!$f) {
die('<B>Error:</B> Can\'t open ' . $fontfile);
}
$file = fread($f, filesize($fontfile));
fclose($f);
if ($type == 'Type1') {
//Find first two sections and discard third one
$header = ord($file[0]) == 128;
if ($header) {
//Strip first binary header
$file = substr($file, 6);
}
$pos = strpos($file, 'eexec');
if (!$pos) {
die('<B>Error:</B> font file does not seem to be valid Type1');
}
$size1 = $pos + 6;
if ($header and ord($file[$size1]) == 128) {
//Strip second binary header
$file = substr($file, 0, $size1) . substr($file, $size1 + 6);
}
$pos = strpos($file, '00000000');
if (!$pos) {
die('<B>Error:</B> font file does not seem to be valid Type1');
}
$size2 = $pos - $size1;
$file = substr($file, 0, $size1 + $size2);
}
$gzcompress_exists = function_exists('gzcompress');
if ($gzcompress_exists) {
$cmp = $basename . '.z';
SaveToFile($destdir . $cmp, gzcompress($file), 'b');
$s .= '$file=\'' . $cmp . "';\n";
} else {
$cmp = $basename . '.ttf';
SaveToFile($destdir . $cmp, $file, 'b');
$s .= '$file=\'' . basename($fontfile) . "';\n";
error_log('Notice: font file could not be compressed (zlib extension not available)');
}
//.........这里部分代码省略.........
作者:Mexina
项目:SuiteCR
//.........这里部分代码省略.........
if (isset($fm['Widths'][32]) and $fm['Widths'][32] > 0) {
// assign default space width
$dw = $fm['Widths'][32];
} else {
$dw = 600;
}
}
// BEGIN SUGARCRM SPECIFIC
if ($embedded) {
// END SUGARCRM SPECIFIC
$s .= '$dw=' . $dw . ";\n";
// BEGIN SUGARCRM SPECIFIC
} else {
$s .= '$dw=' . "1000;\n";
}
// END SUGARCRM SPECIFIC
$w = MakeWidthArray($fm);
$s .= '$cw=' . $w . ";\n";
// BEGIN SUGARCRM SPECIFIC
if ($embedded) {
// END SUGARCRM SPECIFIC
$s .= '$enc=\'' . $enc . "';\n";
// BEGIN SUGARCRM SPECIFIC
}
// END SUGARCRM SPECIFIC
$s .= '$diff=\'' . $diff . "';\n";
$basename = substr(basename($fmfile), 0, -4);
// BEGIN SUGARCRM SPECIFIC
$dirname = dirname($fmfile);
// END SUGARCRM SPECIFIC
if ($embedded) {
//Embedded font
if ($type == 'TrueType' or $type == 'TrueTypeUnicode') {
CheckTTF($fontfile);
}
$f = fopen($fontfile, 'rb');
if (!$f) {
die('Error: Unable to open ' . $fontfile);
}
$file = stream_get_contents($f);
fclose($f);
if ($type == 'Type1') {
//Find first two sections and discard third one
$header = ord($file[0]) == 128;
if ($header) {
//Strip first binary header
$file = substr($file, 6);
}
$pos = strpos($file, 'eexec');
if (!$pos) {
die('Error: font file does not seem to be valid Type1');
}
$size1 = $pos + 6;
if ($header and ord($file[$size1]) == 128) {
//Strip second binary header
$file = substr($file, 0, $size1) . substr($file, $size1 + 6);
}
$pos = strpos($file, '00000000');
if (!$pos) {
die('Error: font file does not seem to be valid Type1');
}
$size2 = $pos - $size1;
$file = substr($file, 0, $size1 + $size2);
}
$basename = strtolower($basename);
if (function_exists('gzcompress')) {
作者:shailendra99
项目:hr_admi
function MakeFontTTF($fontfile, $ufmfile)
{
//Generate a font definition file
if (ini_get("magic_quotes_runtime")) {
set_magic_quotes_runtime(0);
}
if (!file_exists($ufmfile)) {
die('<B>Error:</B> UFM file not found: ' . $ufmfile);
}
$cidtogidmap = '';
$fm = ReadUFM($ufmfile, $cidtogidmap);
$fd = MakeFontDescriptorTTF($fm);
//Find font type
if ($fontfile) {
$ext = strtolower(substr($fontfile, -3));
if ($ext == 'ttf') {
$type = 'TrueTypeUnicode';
} else {
die('<B>Error:</B> not a truetype font: ' . $ext);
}
} else {
if ($type != 'TrueTypeUnicode') {
die('<B>Error:</B> incorrect font type: ' . $type);
}
}
//Start generation
$s = '<?php' . "\n";
$s .= '$type=\'' . $type . "';\n";
$s .= '$name=\'' . $fm['FontName'] . "';\n";
$s .= '$desc=' . $fd . ";\n";
if (!isset($fm['UnderlinePosition'])) {
$fm['UnderlinePosition'] = -100;
}
if (!isset($fm['UnderlineThickness'])) {
$fm['UnderlineThickness'] = 50;
}
$s .= '$up=' . $fm['UnderlinePosition'] . ";\n";
$s .= '$ut=' . $fm['UnderlineThickness'] . ";\n";
$w = MakeWidthArrayTTF($fm);
$s .= '$cw=' . $w . ";\n";
$s .= "\$enc='';\n";
$s .= "\$diff='';\n";
$basename = substr(basename($ufmfile), 0, -4);
if ($fontfile) {
//Embedded font
if (!file_exists($fontfile)) {
die('<B>Error:</B> font file not found: ' . $fontfile);
}
CheckTTF($fontfile);
$f = fopen($fontfile, 'rb');
if (!$f) {
die('<B>Error:</B> Can\'t open ' . $fontfile);
}
$file = fread($f, filesize($fontfile));
fclose($f);
if (function_exists('gzcompress')) {
$cmp = $basename . '.z';
SaveToFile($cmp, gzcompress($file), 'b');
$s .= '$file=\'' . $cmp . "';\n";
// echo 'Font file compressed ('.$cmp.')<BR>';
$cmp = $basename . '.ctg.z';
SaveToFile($cmp, gzcompress($cidtogidmap), 'b');
//echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';
$s .= '$ctg=\'' . $cmp . "';\n";
} else {
$s .= '$file=\'' . basename($fontfile) . "';\n";
echo '<B>Notice:</B> font file could not be compressed (gzcompress not available)<BR>';
$cmp = $basename . '.ctg';
$f = fopen($cmp, 'wb');
fwrite($f, $cidtogidmap);
fclose($f);
echo 'CIDToGIDMap created (' . $cmp . ')<BR>';
$s .= '$ctg=\'' . $cmp . "';\n";
}
if ($type == 'Type1') {
$s .= '$size1=' . $size1 . ";\n";
$s .= '$size2=' . $size2 . ";\n";
} else {
$s .= '$originalsize=' . filesize($fontfile) . ";\n";
}
} else {
//Not embedded font
$s .= '$file=' . "'';\n";
}
$s .= "?>\n";
SaveToFile($basename . '.php', $s);
// echo 'Font definition file generated ('.$basename.'.php'.')<BR>';
return true;
}