
Как я могу использовать KOMA-Script вместе с пакетом mathbbol
?
%\documentclass{article} % works
\documentclass{scrartcl} % fails
\usepackage{mathbbol}
\usepackage{pdfx} % just to calm PDF/A-validators a bit
\begin{document}
\thispagestyle{empty}
$\scriptstyle\mathbb{E}$
\end{document}
pdflatex
(TeX Live 2019 на Ubuntu 18.04 LTS) не сообщает об ошибках или предупреждениях. Однако и veraPDF, и Acrobat's Preflight жалуются на одно и то же несоответствие шрифтов. veraPDF сообщает
<validationReport profileName="PDF/A-1B validation profile" statement="PDF file is not compliant with Validation Profile requirements." isCompliant="false">
<details passedRules="102" failedRules="1" passedChecks="398" failedChecks="1">
<rule specification="ISO 19005-1:2005" clause="6.3.6" testNumber="1" status="failed" passedChecks="0" failedChecks="1">
<description>For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and
in the embedded font program shall be consistent.</description>
<object>Glyph</object>
<test>renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true</test>
<check status="failed">
<context>root/document[0]/pages[0](5 0 obj PDPage)/contentStream[0](7 0 obj PDContentStream)/operators[11]/usedGlyphs[0](ZCDUID+BBOLD7 69 0 0)</context>
</check>
</rule>
</details>
</validationReport>
и Acrobat's Preflight говорит
List of glyph width mismatches (PDF data versus embedded font data)
649.3 versus 676.593 (676.593/1000)
FontForge подтверждает ширину (676, где «Em Size» равен 1000) BBOLD7 в PDF, а RUPS (или $EDITOR) фактически показывает
<< /Type /Font /FirstChar 69 /LastChar 69 /Widths [649.3] … >>
Что является причиной этой непоследовательности?
Пакет, pdfx
похоже, не влияет на эту проблему. Проблема исчезает, если класс article
используется, или \scriptstyle
удаляется \mathbb
, или пакет mathbbol
заменяется на amssymb
.
решение1
Шрифты bbold7
и т. д. изначально были разработаны в MetaFont и использовали возможности MetaFont для создания множества оптически масштабированных шрифтов. Поэтому для каждого размера шрифта шрифт, включая ширину букв, немного отличается. (Вот почему есть bbold5/bbold7/bbold10
.) Эти шрифты MetaFont в конечном итоге стали растровыми шрифтами Type 3 в PDF, поэтому сегодня мы предпочитаем векторные шрифты, в данном случае в формате Adobe Type 1. Векторная версия bbold
существует только в трех размерах: 5
, 7
и 10
, но предоставление только этих трех размеров приведет к небольшим изменениям во всех документах LaTeX, использующих эти шрифты.
В частности, метрики шрифта (в основном ширина/глубина/высота каждого символа) не должны меняться, независимо от того, используете ли вы версию Type 1 или MetaFont, поэтому LaTeX по-прежнему загружает tfm
файлы (из которых TeX считывает метрики шрифта) для всех размеров, которые изначально имели отдельные шрифты, а именно 5
, 6
, 7
, 8
, 9
, 10
, 12
и 17
.
Каждый размер сопоставляется с закрытой существующей версией Type 1. Затем эта ближайшая версия масштабируется для получения правильного размера. Это теряет небольшие вариации, которые изначально присутствовали во всех оптических размерах, но поскольку TeX по-прежнему использует исходные файлы tfm, TeX по-прежнему резервирует одинаковое количество места для каждого символа, что приводит к меньшим общим изменениям в существующих документах. Теперь, поскольку эти tfm
файлы фактически описывают версии шрифта, для которых не существует векторных шрифтов, метрики, особенно ширина, не соответствуют фактической ширине в файле шрифта, что приводит к этим ошибкам.
Что можно с этим сделать? Если вы не против немного изменить метрики шрифта, вы можете указать LaTeX использовать метрики только для существующих шрифтов:
% \documentclass[11pt]{article} % works
\documentclass[11pt]{scrartcl} % works
\DeclareFontFamily{U}{bbold}{}
\DeclareFontShape{U}{bbold}{m}{n}
{ <5> <6> bbold5
<7> <8> bbold7
<9> <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> bbold10
}{}
\usepackage{mathbbol}
\usepackage{pdfx} % just to calm PDF/A-validators a bit
\begin{document}
\thispagestyle{empty}
$\scriptstyle\mathbb{E}$
\end{document}
Если вы предпочитаете существующее решение и хотите сохранить метрики исходных шрифтов, даже если соответствующие шрифты больше не существуют, вы можете создать виртуальные шрифты, bbold6/8/9/12/17
которые явно загружают измененные глифы из bbold5/7/10
. Использование виртуальных шрифтов вместо простого использования неправильных метрик шрифтов гарантирует, что pdfTeX поймет, что вы делаете, и правильно сообщит об этом в файле PDF.
Но я бы рекомендовал сначала попробовать вышеприведенное решение, поскольку создание виртуальных шрифтов для него значительно сложнее.