Encoding.unicode свойство

Уменьшение размера TrueType шрифтов

Файлы шрифтов часто очень объемные по размеру(более 100, и даже 200 КБ), это связано с тем, что они содержат символы, которые соответствуют для многих кодировок. Zlib сжатие уменьшает их, но они остаются достаточно большими. НО все же есть методика, которая поможет еще уменьшить. Методика состоит в том что при преобразовании шрифта Type1 с помощью ttf2pt1 нужно указать кодировку которая Вам нужна, и все символы соответствующие другим кодировкам будут проигнорированы.
Например, шрифт arial.ttf который поставляется с Windows 98 весит 267KB (он содержит 1296 знаков). После сжатия будет 147. Давайте преобразуем его в Type1, сохраняя только символы нужные для кодировки cp1250:ttf2pt1 -b -L cp1250.map c:\windows\fonts\arial.ttf arial

Файлы .map находятся в директории font/makefont/. При исполнении команды будут созданы некоторые файлы в числе которых: arial.pfb и arial.afm. Вес файла arial.pfb до сжатия составлял 35KB, а после 30KB.

Можно пойти еще дальше. Если Вас интересует только некоторые символы из общего количества 217 символов, Вы можете открыть файл с расширением .map и удалить ненужные строки, что соответственно позволит уменьшить вес файла.

Генерация файла для определения шрифта

Вторым шагом является создание PHP файла, который содержит всю необходимую информацию для FPDF. Для того чтобы чтобы это сделать, в каталоге font/makefont Вы сможете найти дополнительный скрипт в фале makefont.php, который содержит следующие функции:MakeFont( string fontfile, string afmfile ]])

Значения которые принимает метод, в качестве параметров:

  • fontfile — Путь к файлу с расширением .ttf или .pfb.
  • afmfile — Путь к файлу с расширением .afm.
  • enc — Название используемой кодировки. По умолчанию cp1252.
  • patch — Дополнительные изменения касающиеся кодировки. По умолчанию пуст.
  • type — Тип шрифта ( TrueType или Type1 ). По умолчанию TrueType.

Первым параметром должно быть имя и путь к шрифту. Расширение должно быть .ttf или .pfb. Если у вас есть шрифт Type1 в ASCII формате с расширением .pfa, Вы можете преобразовать его в двоичном формате с помощью утилиты .

Ранее сгенерированный файл AFM

Кодировка определяет связь между кодом (от 0 до 255) и характер. Первые 128 являются фиксированными и соответствуют ASCII, а следующие являются переменными. Кодировки хранятся в .map файлах. Кодировки бывают следующие:

  • cp1250 (Central Europe)
  • cp1251 (Cyrillic)
  • cp1252 (Western Europe)
  • cp1253 (Greek)
  • cp1254 (Turkish)
  • cp1255 (Hebrew)
  • cp1257 (Baltic)
  • cp1258 (Vietnamese)
  • cp874 (Thai)
  • ISO-8859-1 (Western Europe)
  • ISO-8859-2 (Central Europe)
  • ISO-8859-4 (Baltic)
  • ISO-8859-5 (Cyrillic)
  • ISO-8859-7 (Greek)
  • ISO-8859-9 (Turkish)
  • ISO-8859-11 (Thai)
  • ISO-8859-15 (Western Europe)
  • ISO-8859-16 (Central Europe)
  • KOI8-R (Russian)
  • KOI8-U (Ukrainian)

Шрифт который Вы выберете должен содержать символы, соответствующие выбранной кодировке.
В особенных случаях когда символы шрифта не содержат литеры, такие, как Symbol или ZapfDingbats, нужно передать пустую строку.
Кодировки, которые начинаются с СР, используются в ОС Windows. Linux системы обычно используют ISO.Примечание: стандартные шрифты используют кодировку cp1252.

Четвертый параметр дает возможность изменять кодировку. Иногда Вы можете добавить несколько символов. Так, например, ISO-8859-1 не содержит символ евро. Чтобы добавить его на позицию 164, нужно передать — array(164=>’Euro’).

Последний параметр используется для передачи типа шрифта, в случае, если он не встроены (то есть если первый параметр пуст).

После того как Вы заполнили все параметры функции, Вы можете создать новый файл подключив при этом makefont.php, или просто добавить вызов функции непосредственно внутрь основного файла. После исполнения функции будет создано несколько файлов:.php и .afm. При желании Вы можете переименовать файл. Помимо этого скрипт создает файл с расширением .z, который является сжатым (за исключением случаев, когда функция сжатия недоступна, она требует Zlib). Вы можете переименовать и его тоже, но в этом случае Вы должны изменить переменную $file в .php файле, с соответствующим именем.

Пример:

 MakeFont('c:\\windows\\fonts\\comic.ttf','comic.afm','cp1252');

Выше приведенный пример создаст два файла: comic.php и comic.z.

Когда Вы получите эти файлы, их нужно скопировать в каталог с шрифтами. Если файл шрифта не получился сжатым то скопируйте файлы с расширением .ttf или .pfb, вместо .z.

Примечание: для шрифтов TTF, Вы можете не делать этого в ручную а скачать эти файлы с помощью утилиты по этому адресу: http://fpdf.fruit-lab.de/. Я думаю что использование данного скрипта не составит у Вас больших трудностей, но все таки: Нужно выбрать файл TTF с компьютера, и потом при нажатии на единственную кнопку получите нужные файлы для FPDF.

Кодировки стандарта UNICODE

Юникод (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки почти всех письменностей мира, и специальных символов. Представляемые в юникоде символы кодируются целыми числами без знака. Юникод имеет несколько форм представления символов в компьютере: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). (Англ. Unicode transformation format — UTF).UTF-8 — это в настоящее время распространённая кодировка, которая нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий из символов Unicode с номерами меньше 128 (область с кодами от U+0000 до U+007F), содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F.

Кодировка UTF-8 является универсальной и имеет внушительный резерв на будущее. Это делает ее наиболее удобной кодировкой для использования в интернете.

HTML Символы
Кодирование URL

О символе евро

В разных кодировках символ евро расположен на разных позициях да и вообще бывает он не во всех кодировках:

Кодировка Позиция
cp1250 128
cp1251 136
cp1252 128
cp1253 128
cp1254 128
cp1255 128
cp1257 128
cp1258 128
cp874 128
ISO-8859-1 отсутствует
ISO-8859-2 отсутствует
ISO-8859-4 отсутствует
ISO-8859-5 отсутствует
ISO-8859-7 отсутствует
ISO-8859-9 отсутствует
ISO-8859-11 отсутствует
ISO-8859-15 164
ISO-8859-16 164
KOI8-R отсутствует
KOI8-U отсутствует

Кодировка ISO-8859-1 широко распространена, но не включает знак евро. Если Вам это нужно, самое простое, что можно сделать это использовать cp1252 или ISO-8859-15 вместо этой кодировки, потому что они почти идентичны, но содержат драгоценный символ.
Вместо ISO-8859-2, можно использовать ISO-8859-16, но эта кодировка содержит много различий. Поэтому здесь проще добавить в кодировку этот символ, как описано выше. То же самое верно и для других кодировок.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector