Шрифты можно встраивать в их исходном виде без поднабора или любой другой модификации.
(Александр Манкута, #1322)
(Ким Бургестранд, 1284)
Учитывайте стиль шрифта при поиске глифа и включите резервные шрифты.
(Дэн Аллен, #1147)
Это тонкая ошибка, которая может привести к использованию неправильных шрифтов.
(maerch, #924, Александр Манкута)
(Якуб Стасяк, #1079)
(Александр Манкута)
(Александр Манкута, #1182)
TTFunk получил поддержку шрифтов OpenType благодаря отличной работе Кэмерона Дютро. Теперь вы можете использовать шрифты OTF в своих документах.
(Александр Манкута)
(Брендан Томас, #1021)
Prawn::View
(Арно Жубей, #1112)
character_spacing
на расчёт ширины текстаДополнительное пространство применялось к концу строки, что приводило к визуально неправильному выравниванию по центру/справа.
(Матьяж Грегорич, #1117)
@italic_angle
(Ростислав Свобода, #1095)
(Дэвид Сильвейра, #1092)
Prawn раньше не закрывал IO, переданные в image
. Это предотвращало удаление файлов. Теперь случай обрабатывается правильно.
(Гвидо Глор Моджиб, #1090)
(Лучано Соуза, #1057)
Prawn::View#respond_to_missing?
Когда вы используете миксин Prawn::View
, чтобы создать собственный класс, расширяющий функциональность Prawn, метод respond_to?
выдавал ошибку при вызове отсутствующего метода.
(Витор Аримицу, #1065)
Добавлена поддержка Ruby 2.6
Добавлена поддержка Ruby 2.7
Добавлена поддержка JRuby 9.2
Убрана поддержка Ruby 2.2, 2.3 и 2.4
Убрана поддержка JRuby 9.1
Ruby 2.2, 2.3 и 2.4 больше не поддерживаются в восходящем направлении.
(Александр Манкута)
Упаковка атрибутов градиента до 8-битных значений вызывает коллизии при генерации дайджеста SHA1.
(Пол Джексон, #1049)
Предоставьте более подробную информацию об ошибке неизвестного шрифта.
(Дэн Аллен, #1045)
Удалите лишние требования pdf-core
(Мэтт Паттерсон, #1032)
Ослабление зависимости pdf-инспектора.
(Александр Манкута)
Исправлены поля на отдельных страницах.
(Эрик Ханкинс, #1003)
Теперь вы можете использовать шрифты TTC с Prawn.
(Джамис Бак, #1002)
Раньше можно было указать что угодно для стиля соединения, что могло привести к созданию недействительного документа. Теперь это невозможно.
(Тим Вудбери, #989)
NBSP обрабатывался неправильно. Исправления и улучшения в PrawnPDF
Исправлена проблема с неправильным переносом однострочных абзацев.
Улучшено поведение тире.
Введён Кодекс поведения.
Повышена согласованность генерируемых документов.
Улучшены градиенты.
fill_gradient
и stroke_gradient
. Можно продолжать использовать старые параметры метода и указывать только два цвета или использовать новые ключевые аргументы для указания произвольных остановок.apply_transformations
равное true.Изменён список поддерживаемых версий Ruby.
Обнаружение неожиданных изменений в руководстве.
Проверка правильности шестнадцатеричных кодов цветов.
Не выдавать ошибку CannotFit при первом фрагменте массива, являющемся пробелом нулевой ширины.
PrawnPDF 2.1.0 — 2016-02-29
Добавлена поддержка PNG-изображений с индексированной прозрачностью.
Prawn больше не генерирует предупреждения IRB.
irb -w
).Градиенты могут иметь несколько остановок, чтобы смешивать более двух цветов.
(Roger Nesbitt)
Градиенты PDF/шаблоны берут координаты в координатном пространстве документа, а не в «пространстве пользователя», поэтому, если вы выполнили масштабирование/поворот/перемещение и затем нарисовали градиент внутри, он был расположен неправильно.
Это изменение отслеживает преобразования, применённые к документу, и умножает матрицу градиента на эту отслеживаемую матрицу преобразования, чтобы градиент отображался в правильном месте документа.
Поскольку это изменяет способ интерпретации координат x и y, вы должны вручную добавить apply_transformations: true в вызовы stroke_gradient и fill_gradient, чтобы использовать фиксированное поведение в Prawn 2. Ожидается, что это будет по умолчанию в Prawn 3.
Пожалуйста, обратитесь к вики-странице об этом изменении для получения дополнительной информации.
(Роджер Несбитт, #891, #894)
Режимы наложения можно использовать для изменения способа наложения двух слоёв друг на друга. Ключ BM добавляется во внешнее графическое состояние на основе спецификации PDF версии 1.4. blend_mode принимает один режим наложения или массив режимов наложения. Если передан массив, программа просмотра PDF смешивает слои на основе первого допустимого режима наложения.
Ранее URL-ссылки не были кликабельными при рендеринге внутри штампа. Теперь правильные аннотации добавляются к объекту страницы, который вызывает штамп, тем самым генерируя кликабельные ссылки в PDF.
Поскольку репитеры построены на штампах, это исправление также должно решить проблемы со ссылками внутри репитеров.
(Джесси Дойл, #801, #498)
Из-за отсутствия тестов опечатка прокралась в метод draw_text() в PDF::Core, препятствуя его правильной работе при вызове с параметром :rotate.
Эта проблема была решена, и тест был добавлен в тестовый набор Prawn. Говоря более обобщённо, нам нужно улучшить состояние тестов для PDF::Core и провести чёткое разделение между тестовым набором Prawn и тестами PDF::Core. В настоящее время существует множество небольших пробелов, которые могут привести к такого рода проблемам.
[Роберт С. Герус, pdf-core #15]
Теперь, когда Ruby 1.9.3 больше не поддерживается основной командой Ruby, Prawn больше не будет пытаться поддерживать совместимость с 1.9.x.
Мы продолжим поддерживать Ruby 2.0.0 и 2.1.x и добавили поддержку Ruby 2.2.x.
Если вы используете JRuby, мы рекомендуем использовать JRuby 1.7.x (>= 1.7.18) в режиме 2.0 на данный момент. Пожалуйста, сообщайте об ошибках, если у вас возникнут какие-либо проблемы!
Начиная с этого выпуска, мы будем устанавливать номера версий на основе следующей политики:
Всякий раз, когда документированная функция изменяется несовместимым образом, мы увеличиваем наш основной номер версии.
Когда мы добавляем новую функциональность без нарушения обратной совместимости, мы увеличиваем наш дополнительный номер версии.
Когда мы выпускаем релизы только для обслуживания (которые охватывают только исправления ошибок, документацию и внутренние улучшения), мы увеличиваем наш младший номер версии.
Эта политика похожа по духу на семантическое управление версиями, и в будущем мы можем официально принять SemVer.
Основное предостережение заключается в том, что если функция не задокументирована (либо в нашей документации по API, либо в руководстве Prawn), вы не можете ничего предполагать о её предполагаемом поведении. В Prawn осталось много устаревших функций из-за поэтапной разработки в течение почти десятилетия, поэтому API были разработаны не столько, сколько выросли органически. Стоявший источник путаницы и неудобного поведения.
Более ранние версии Prawn пытались автоматически перекодировать UTF-8 в Windows-1252, но некоторые из наших низкоуровневых функций либо предполагали, что текст уже был правильно закодирован, либо возвращали текст в другой кодировке из-за внутренних операций перекодирования. Мы также обрабатывали кодировку Windows-1252 вручную, поэтому строки возвращались с тегом ASCII-8BIT вместо Windows-1252, что ещё больше запутывало ситуацию.
В этом выпуске мы внесли несколько значительных изменений в поведение шрифтов AFM, чтобы пользователям приходилось меньше думать о внутренностях Prawn:
_
.Prawn::Font::AFM.hide_m17_warning = true
).AFM#normalize_encoding
, а не ASCII-8Bit
.Ни одна из вышеперечисленных проблем не возникает при использовании шрифтов TTF с Prawn, поскольку они всегда были UTF-8 in, UTF-8 out, и внутреннее перекодирование не выполнялось. Мы по-прежнему рекомендуем тем, кто использует интернационализированный текст, использовать шрифты TTF, потому что у них нет таких же ограничений, как у шрифтов AFM. Однако те, кому по какой-либо причине необходимо использовать AFM, должны извлечь большую пользу из этих изменений.
(Грегори Браун, #793)
Этот метод был перемещён в PDF::Core в выпуске Prawn 1.3.0, удалив его из API Prawn::Document
. Хотя это низкоуровневый метод, не предназначенный для общего использования, он необходим для определённых задач, для которых у нас нет надлежащей поддержки в других местах.
Этот метод всё ещё следует считать частью внутренних компонентов Prawn и может быть изменён в любое время, но мы временно восстановили его, пока не найдём подходящую замену. Подробнее см. обсуждение в #797.
При работе со сложными документами на основе Prawn распространённой практикой является создание подклассов Prawn::Document
для изоляции различных компонентов друг от друга или предоставления некоторых настраиваемых методов рендеринга. Однако обширный характер объекта Prawn::Document
делает эту практику небезопасной: он реализует сотни методов и содержит десятки переменных экземпляра, все из которых могут конфликтовать с любой функциональностью подкласса.
Prawn::View
предоставляет более безопасную альтернативу, используя композицию объектов вместо наследования. Это сохранит ваше состояние и методы отдельно от внутренних компонентов Prawn, позволяя вам напрямую вызывать любые методы, предоставляемые объектом Prawn::Document
.
Вот пример использования Prawn::View
:
class Greeter
include Prawn::View
def initialize(name)
@name = name
end
def say_hello
text "Hello, #{@name}!"
end
def say_goodbye
font("Courier") do
text "Goodbye, #{@name}!"
end
end
end
greeter = Greeter.new("Gregory")
greeter.say_hello
greeter.say_goodbye
greeter.save_as("greetings.pdf")
По возможности преобразуйте свои подклассы Prawn::Document
, чтобы использовать Prawn::View
. Это гораздо менее инвазивно и почти не требует усилий. Замена существующей общей практики
Дефект в нашей системе рендеринга текста был причиной такого поведения. Для получения более подробной информации см. #347 (https://github.com/prawnpdf/prawn/issues/347).
Шрифты с неподдерживаемыми сопоставлениями символов теперь будут давать сбой только при использовании неподдерживаемых глифов.
Ошибка в TTFunk препятствовала использованию определённых шрифтов, поскольку они содержали информацию о сопоставлении неподдерживаемых символов. В большинстве случаев эта информация была нужна только для отображения небольшого количества малоизвестных глифов, поэтому большинство пользователей никогда не сталкивались с проблемами при их использовании.
Эта проблема решена и должна помочь улучшить совместимость, особенно для шрифтов на основе CJK.
(TTFunk #20 (https://github.com/prawnpdf/ttfunk/pull/20) — Дэн Аллен)
Prawn больше не вызывает предупреждений Ruby при загрузке
Некоторые незначительные проблемы в нашей зависимости от TTFunk вызывали генерацию множества предупреждений при загрузке Prawn. Начиная с этого выпуска вы сможете запускать Ruby с включёнными предупреждениями и не видеть предупреждений, генерируемых Prawn или его зависимостями.
(TTFunk #21 (https://github.com/prawnpdf/ttfunk/pull/21) — Джесси Дойл)
Этот выпуск включает все изменения из версии 1.2.0, которая была отозвана из-за ошибки упаковки.
Модуль Prawn::Table перемещён в дополнительный гем-расширение.
Помимо добавления require "prawn/table"
в код, вам потребуется установить гем prawn-table
, чтобы использовать функции рендеринга таблиц и ячеек в Prawn 1.2+.
Гем prawn-table
будет поддерживаться Хартвигом Брандлом и полуофициально поддерживается командой обслуживания Prawn. Это означает, что мы продолжим следить за сборками CI для каждого выпуска Prawn и поможем как можно скорее решить любые проблемы совместимости.
Дополнительную информацию см. в репозитории prawn-table (https://github.com/prawnpdf/prawn-table).
В текстовом поле появилась возможность отключить перенос по символам.
Эта функция полезна для предотвращения разрывов слов при использовании в сочетании с параметром переполнения :shrink_to_fit
. См. следующий пример практического использования:
# Пример, предоставленный Саймоном Мэнсфилдом
Prawn::Document.generate("x.pdf") do
stroke_rectangle [0, bounds.top], 100, 50
font('Helvetica', size: 50) do
formatted_text_box(
[{text: 'VEGETARIAN'}],
at: [0, bounds.top],
width: 100,
height: 50,
overflow: :shrink_to_fit,
disable_wrap_by_char: true # <---- добавлено в версии 1.2
)
end
end
Без установки :disable_wrap_by_char
код выше разорвёт слово «VEGETARIAN» на две строки вместо того, чтобы уменьшить его размер до одной неразрывной строки.
Для обеспечения обратной совместимости :disable_wrap_by_char
реализован как необязательное поведение, которое по умолчанию отключено.
(#752 (https://github.com/prawnpdf/prawn/pull/752), Джеймс Коулман)
Сбой шрифтов-заменителей больше не нарушает глобальное форматирование шрифтов.
В более ранних версиях Prawn использование системы шрифтов-заменителей приводило к потере информации о стилях (например, жирный шрифт, курсив), и единственным решением этой проблемы было явное указание стиля для каждого отдельного фрагмента текста.
Теперь, когда эта проблема устранена, безопасно использовать метод font
для установки стилей глобально, даже если используются шрифты-заменители.
(#743 (https://github.com/prawnpdf/prawn/pull/743), Пит Шарум)
Прогоны форматированного текстового поля больше не изменяют состояние графики
Прогоны должны быть способом без побочных эффектов для имитации рендеринга текста, но ошибка в более ранних версиях Prawn приводила к изменению состояния графики, если цвета были установлены на текстовых фрагментах. Этот патч устраняет эту проблему.
(#736 (https://github.com/prawnpdf/prawn/pull/736), Кристиан Хике)
Исправлена ошибка ручной сборки на Ruby 1.9.3
Когда мы извлекли Prawn::ManualBuilder, мы случайно нарушили его поддержку Ruby 1.9.3. Эта проблема была решена.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )