К сожалению, мне также приходилось сталкиваться с проблемами при использовании PHP & GDLib для генерации заголовочной графики.Я использую TYPO3 в качестве CMS для большинства своих проектов.Он может создавать графические заголовки и использовать для этого GDLib.Мне пришлось бороться с проблемами качества: на моей локальной машине разработки (osx) шрифт был отрисован в превосходном качестве, на производственном сервере (gentoo) он был размытым и «худым».Я не знаю, были ли эти различия из-за разных платформ или потому что версии PHP / GDLib были немного разные.Я также столкнулся с такими же проблемами, как ваша, особенно когда веб-хостинг был обновлен до более новой версии PHP.Вчера заголовки выглядели хорошо, после обновления символы были не на месте, умлауты отсутствовали и т. Д.
A серверная альтернатива может быть imagemagick.Этот небольшой фрагмент кода PHP создает образец изображения (при условии, что Bleeding_Cowboys.ttf
находится в том же каталоге, что и скрипт):
<?php
$currentDir = dirname(__FILE__);
$fontPathname = $currentDir . '/Bleeding_Cowboys.ttf';
$cmd = ' convert -background white -fill black -font "' . $fontPathname . '" -pointsize 23 label:"The quick brown fox jumps over the lazy dog" ' . $currentDir . '/headline.png';
exec($cmd);
print '<img src="headline.png" alt="" border="0" />';
Изображение выглядит так:
альтернативный текстhttp://i45.tinypic.com/nckym0.png
Вы, вероятно, должны немного отрегулировать размер шрифта, используя другое значение для аргумента -pointsize 23
.
Я использовал эту версию IM для Windows:
ImageMagick 6.5.4-6 2009-07-25 Q16 OpenMP
Чтениеподробнее о возможностях обработки текста в imagemagicks здесь: http://www.imagemagick.org/Usage/text/
Хотя Imagemagick является довольно распространенным пакетом в настоящее время, все еще существуют хосты, на которых IM не установлен.Но вы можете скачать статически скомпилированную версию IM, которую вы просто загружаете через FTP в некоторый каталог, делать двоичные файлы доступными для записи, а затем вы можете использовать ее для генерации ваших изображений.Я нашел учебник о том, как это сделать, к сожалению, только на немецком языке, но я уверен, что вы можете понять основную идею из предоставленных команд оболочки: http://www.website4all.de/support/support-typo3/imagemagick.html
Хотя Imagemagick является жизнеспособным вариантом, я наконец-то использовал клиентскую сторону javascript для создания графических заголовков со встроенными шрифтами.
Сначала я наткнулся на sIFR (http://wiki.novemberborn.net/sifr/), который заменяет html-контент на flash-объекты для отображения шрифта.Хотя поначалу это выглядело многообещающе, я бросил его, потому что:
- веб-сайт работает очень медленно, если у вас есть много элементов для замены
- , установка немного хлопотна
- это зависит от вспышки, заголовки не будут работать на iPhone или iPad
Я бы создал образец для вас, но у меня не установлен Adobe Flash CS на моем ноутбуке.
В любом случае, я наконец-то нашел хороший клиентский javascript lib, который делал то, что хотел: Cufon (http://cufon.shoqolate.com/generate/).Вы загружаете свой файл ttf в этот сервис, а затем используете созданный файл javascript вместе с базовой библиотекой Cufon, чтобы заменить элементы заголовка графическими заголовками.Cufon использует элемент canvas для этого.Узнайте больше о том, как это делается на http://wiki.github.com/sorccu/cufon/about
Что мне действительно нравится в Cufon:
- работает во всех основных браузерах, включая IE 6 (и выше)
- отлично работает на iPhone и iPad
- очень быстро, даже со многими заголовками
- очень простая настройка
Единственная реальная проблема, которая у меня естьо куфоне: лицензирование.Это может быть проблемой, особенно с коммерческими шрифтами.Не все создатели шрифтов допускают такой тип встраивания.В случае сомнений всегда получайте письменное разрешение.
Но в любом случае простой HTML-сайт с использованием Cufon может выглядеть следующим образом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="cufon.js"></script>
<script type="text/javascript" src="Bleeding_Cowboys_400.font.js"></script>
<script type="text/javascript">
Cufon.replace('p', {fontFamily: 'Bleeding Cowboys'});
</script>
<style type="text/css">
p {
color:#000;
font-size:23px;
}
</style>
</head>
<body>
<p>The quick brown fox jumps over the lazy dog</p>
</body>
</html>
Полученное изображение заголовка выглядит следующим образом:
alt text http://i45.tinypic.com/pon5g.png
Как вы можете видеть в исходном коде html-сайта, вы определяете размер шрифта (вероятно, тоже нужно настроить) и цвет с помощью CSS.И затем вы звоните Cufon.replace('p', {fontFamily: 'Bleeding Cowboys'});
, чтобы сказать Cufon, что заменить (в данном случае все p
элементы) на какое семейство шрифтов (в данном случае Bleeding Cowboys
).
Я знаю, что это не прямые ответы на ваш вопрос, но создание заголовка на стороне клиента дало мне очень хорошие результаты с более простой настройкой и кодом, чем со всеми серверными решениями, которые я пробовал. Если бы я был на вашем месте, я бы либо попробовал sIFR или Cufon, хотя IM может стоить попробовать заранее, особенно если вы ограничены серверным решением.