Ширины стандартных шрифтов

Загруженный простой текст PDF без /Widths использует горизонтальные ширины core-font Adobe для поддерживаемых символов, предотвращая накопительный дрейф позиций, когда установленная замена имеет другие метрики

Поддерживаемый контракт

СемействоТочные принимаемые имена
HelveticaHelvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
TimesTimes-Roman, Times-Bold, Times-Italic, Times-BoldItalic
CourierCourier, Courier-Bold, Courier-Oblique, Courier-BoldOblique

Каждое начертание имеет 230 декодированных записей Unicode: печатный ASCII, Latin-1 и определённые печатные символы Windows-1252, плюс dotless i, Lslash, lslash, caron, breve, dotaccent, ring, ogonek, hungarumlaut, fraction, fi и fl

U+00A0 использует ширину пробела, а U+00AD — ширину дефиса; U+00B5 — это знак микро из Latin-1, а греческая U+03BC вне таблицы

Сырой байт 39 StandardEncoding декодируется в U+2019 quoteright; байт 39 WinAnsi декодируется в U+0027 quotesingle, у которого другая ширина в Helvetica

Имена с префиксами подмножеств, алиасы вроде Arial или Courier New, иное написание регистра, Symbol, ZapfDingbats, управляющие символы, греческие буквы и прочий неподдерживаемый Unicode сохраняют существующее поведение fallback

Явные PDF /Widths сохраняются, включая намеренно кастомизированные ширины; программы шрифтов и таблицы кодировок остаются отдельно от этих таблиц, а встроенная фикстура TrueType с явными ширинами покрыта приёмочными тестами

Это только горизонтальные ширины; они не поставляют очертания глифов, ограничивающие боксы, вертикальные метрики, шейпинг лигатур или кернинг, и рендерер по-прежнему может рисовать установленной заменой, позиционируя текст по стандартным ширинам

Измерение и текстовое состояние

HPDFGetStandardFontWidth выполняет неизменяемый поиск по таблице; HPDFMeasureBaseFontWidths объединяет эти результаты с существующим платформенным бэкендом, когда пакет содержит fallback-символы

Интерпретатор содержимого продолжает применять размер шрифта, Tc, Tw, Tz, корректировки TJ, текстовые матрицы и графическое преобразование после разрешения ширины; таблицы не добавляют автоматический кернинг к тексту PDF

Валидация и границы независимых читалок

Целевая приёмка строит 15 фактических PDF-страниц, покрывающих все 12 начертаний, кавычки и лигатуры StandardEncoding, пунктуацию и текст с акцентами WinAnsi, явные ширины, встроенную программу TrueType и преобразованный текст TJ; нативные origins глифов сравниваются с независимой читалкой MuPDF

Проба ширин Unicode проверяет все 2760 записей таблицы; 2756 совпадают с MuPDF, а четыре записи fraction U+2044 семейства Helvetica сохраняют Adobe AFM WX 167 и сообщаются явно, потому что MuPDF возвращает похожую на слэш ширину 278 для этого символа

Общее сравнение геометрии PDF использует символы, по которым независимая читалка согласна; различие fraction не подаётся как проходящая межчиталочная эквивалентность

Приёмка Windows использует Tests/Delphi/Run-StandardFontMetricsAcceptance.ps1 и также проигрывает существующие наборы извлечения текста и ширин; приёмка нативного Linux использует Tests/Linux/Run-StandardFontMetricsAcceptance.sh с переопределениями FPC_EXE, PYTHON_EXE и HPDF_LINUX_OUTPUT

Все выполнения подавляют запуск внешних читалок и выпускают нативные логи, таблицы ширин, координаты глифов, отрисованное превью и независимый отчёт proof.json

Метрическая база

Ширины — это факты AFM WX core-font Adobe в 1/1000 em; соглашение о координатах и метриках документировано в спецификации Adobe Font Metrics