Системные требования

Для использования библиотеки необходимо, чтобы сервер удовлетворял следующим системным требованиям:

  1. Наличие PHP версии 5.3 (или выше);

  2. Поддержка модуля mbstring;

  3. Поддержка модуля intl.

Расширение веб-сервера mbstringпозволяет использовать функции для работы с многобайтными строками. mbstring не входит в список расширений, устанавливаемых по умолчанию. Это значит, что изначально это расширение отключено. Для использования функций этого расширения необходимо явно включить модуль в настройках конфигурации веб-сервера.

Расширение для интернациональной поддержки (intl) является оболочкой библиотеки ICU (site. icu-project. org), предоставляющей PHP программистам все возможности этой библиотеки.

Настройка параметров

Несмотря на то, что значения параметров по умолчанию подобраны оптимальным образом (отключено большинство ресурсоёмких операций, включены все основные правила экранной типографики), пользователь всегда может их изменить. Для этих целей библиотека предоставляет сразу несколько вариантов:

  1. Ассоциативный массив значений параметров можно передать конструктору типографа. См. листинг 3.1 (строки 1 – 3).

  2. Методы AbstractTypo::setOption()иAbstractTypo::setOptions()позволяют установить значения параметров как самого типографа, как и любого из используемых модулей. См. листинг 3.1 (строки 5 – 9).

  3. Параметры настроек можно передать вторым параметром непосредственно в момент вызова метода Typo::process(). См. листинг 3.1 (строка 14).

  4. Группы параметров настроек могут быть сформированы из конфигурационного ini-файла с помощью открытого методаAbstractTypo::addGroupsFromFile(). Для переключения между группами используется методAbstractTypo::setOptionsFromGroup(). См. листинг 3.1 (строки 11, 12).

  • 01.
  • 02.
  • 03.
  • 04.
  • 05.
  • 06.
  • 07.
  • 08.
  • 09.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

$options = array('modules' => array('core', 'html', 'punct'));

$typo = new Typo($options);

$typo->setOption('modules', array('core', 'html', 'punct'));

$typo->setOptions($options);

$typo->getModule('punct')->setOption('quote-open', 'ldquo');

$typo->setOption('punct::quote-open', 'ldquo');

$typo->addGroupsFromFile('config. ini');

$typo->setOptionsFromGroup('default');

$typo->process('Обрабатываемый текст', $options);

Листинг 3.1. Пример настройки типографа

Дадим подробное описание изменяемых параметров. В скобках указаны значения по умолчанию. Сам класс типографа настраивается с помощью единственного параметра:

modules ([?core?, ?html?, ?punct?, ?space?, ?nobr?, ?url?]) – массив псевдонимов используемых модулей. По умолчанию используются только самые необходимые модули, позволяющие решать до 90% задач экранной типографики.

Все остальные настройки содержатся внутри модулей (имя модуля и название параметра разделено символами «::»):

core::charset (?UTF-8?) – кодировка обрабатываемого текста. В качестве значения данного параметра вместо имени кодировки можно задать ?AUTO?. В этом случае библиотека сама определит кодировку текста, если она совпадает с одной из широко распространённых в Интернете: UTF-8, CP1251, KOI8-R, IBM866, ISO-8859-5 или MAC. Стоит учитывать, что ни один из существующих алгоритмов автоматического распознавания кодировки текста не даёт стопроцентную точность результата, и пользоваться этим параметром с осторожностью.

core::encoding (?none?) – режим кодирования спецсимволов. По умолчанию спецсимволы не заменяются соответствующимиHTMLсущностями. В качестве альтернатив доступно представление спецсимволов в виде имён (?names?), десятичных (?codes?) и шестнадцатеричных (?hexcodes?) кодов.

core::html-entity-fix (true) – исправление ошибок в записиHTMLсущностей.

core::normalize (false) – нормализация символовUnicode. ВUnicodeодна и та же сложная буква, например «?», может быть представлена в двух формах: в виде единой буквы и в виде базовой буквы («C») и модификаторов. Процесс, при котором все буквы по возможности объединяются в одну, называется композицией (NormalizationFormC, далее – NFC), а процесс, при котором все буквы по возможности разбиваются на модификаторы — декомпозицией (NormalizationFormD, далее – NFD). Если модификаторов несколько, то они могут идти в разном порядке. Кроме того, одна и та же буква может иметь несколько вариантов, например, «Ohm» (U+2126) и «?» (U+03A9). Включение данного параметра позволяет воспользоваться алгоритмом нормализацииUnicodeдля приведения всех символов текста к единой форме. В связи с тем, что данная операция ресурсоёмкая и реализуется за счёт сторонних компонентов (используется классNormalizerиз расширенияintl), по умолчанию этот параметр модуля отключён.

core::e-convert (false) – замена буквы «ё» на «е».

html::safe-blocks (['<!-- -->', 'code', 'comment', 'pre', 'script', 'style']) – массив имён безопасных HTML блоков, содержимое которых не обрабатывается типографом.

html::attrs (['title', 'alt']) – атрибуты тегов, значения которых должны обрабатываться типографом.

html::paragraphs. enable (true) – включение автоматической расстановки тегов параграфов.

html::paragraphs. open ('<p>'),html::paragraphs. close ('</p>') – открывающий и закрывающий теги параграфов.

nobr::open ('<spanstyle="word-spacing:nowrap;">') и nobr::close ('</span>') – открывающий и закрывающий теги для неразрывных конструкций.

space::normalize (true) – нормализация (канонизация) пробелов и пробельных символов.

space::nbsp (true) – расстановка неразрывных пробелов.

space::thinsp (true) – расстановка тонких пробелов.

space::remove (true) – удаление лишних пробелов.

punct::normalize (true) – нормализация (канонизация) пунктуации.

punct::auto (false) – автоматическая расстановка пунктуации.

punct::quote-open ('laquo'),punct::quote-close ('raquo'),punct::subquote-open ('bdquo') и punct::subquote-close ('ldquo') – имена символов для открывающей и закрывающей кавычек первого и второго уровней.

punct::hyphenation ('none') – расстановка мягких переносов (мест возможного переноса) в словах. По умолчанию переносы не расставляются, так как в большинстве случаев в этом нет необходимости. Кроме того, текст с добавленными символами переносов увеличивается в размере на 10 – 30%. Если всё же необходимо расставить мягкие переносы в словах, параметру можно задать одно из двух значений: 'shy' (использовать символ мягкого переноса «­») или 'wbr' (использовать тег <wbr>).

url::normalize (true) – нормализация (канонизация)URLадресов.

url::idna (true) –IDNпреобразование доменных имён.

url::attrs (['target' => ['value' => '_blank', 'cond' => 'Url::condTarget']]) – значения дополнительных атрибутов. По умолчанию к тегам ссылок добавляется атрибут 'target' со значением '_blank', если ссылка удовлетворяет условиям, определяемым методом 'Url::condTarget' (является внешней ссылкой).

Перечисленные параметры, как показывает практика использования библиотеки, удовлетворяют потребностям большинства разработчиков. В случаях, когда возникает потребность в дополнительных параметрах, можно создать класс, наследующий уже имеющийся модуль, добавив в него необходимые параметры.

 
Оригинал текста доступен для загрузки на странице содержания
< Пред   СОДЕРЖАНИЕ   Скачать   След >