
Wie kann ich KOMA-Script zusammen mit dem Paket verwenden 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 auf Ubuntu 18.04 LTS) meldet weder Fehler noch Warnung. Allerdings beklagen sowohl veraPDF als auch Acrobats Preflight ein und dieselbe Schriftartinkonsistenz. veraPDF gibt an
<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>
und Acrobats Preflight sagt
List of glyph width mismatches (PDF data versus embedded font data)
649.3 versus 676.593 (676.593/1000)
FontForge bestätigt die Breite (676, wobei "Em Size" 1000 ist) von BBOLD7 im PDF und RUPS (oder $EDITOR) zeigt effektiv
<< /Type /Font /FirstChar 69 /LastChar 69 /Widths [649.3] … >>
Was ist der Auslöser dieser Inkonsistenz?
Das Paket pdfx
scheint dieses Problem nicht zu beeinflussen. Das Problem verschwindet, wenn die Klasse article
verwendet oder \scriptstyle
entfernt \mathbb
wird oder das Paket mathbbol
durch ersetzt wird amssymb
.
Antwort1
Die Schriftarten bbold7
usw. wurden ursprünglich in MetaFont entworfen und verwendeten die Funktionen von MetaFont, um viele optisch skalierte Schriftarten zu generieren. Daher ist die Schriftart, einschließlich der Breite der Buchstaben, für jede Schriftgröße leicht unterschiedlich. (Deshalb gibt es bbold5/bbold7/bbold10
.) Diese MetaFont-Schriftarten endeten als Type-3-Bitmap-Schriftarten im PDF, daher bevorzugen wir heute Vektorschriftarten, in diesem Fall im Type-1-Format von Adobe. Die Vektorversion von bbold
existiert nur in drei Größen: 5
, 7
und 10
, aber die Bereitstellung nur dieser drei Größen würde zu leichten Änderungen an allen LaTeX-Dokumenten führen, die diese Schriftarten verwenden.
Insbesondere die Schriftmetriken (hauptsächlich Breite/Tiefe/Höhe jedes Zeichens) sollten sich nicht ändern, unabhängig davon, ob Sie die Type 1- oder die MetaFont-Version verwenden, sodass LaTeX weiterhin tfm
Dateien (aus denen TeX die Schriftmetriken liest) für alle Größen lädt, die ursprünglich separate Schriftarten hatten, nämlich 5
, 6
, 7
, , 8
, 9
, 10
, 12
und 17
.
Jede Größe wird der geschlossenen, bestehenden Type-1-Version zugeordnet. Anschließend wird diese nächstliegende Version neu skaliert, um die richtige Größe zu erhalten. Dadurch gehen die leichten Abweichungen verloren, die ursprünglich in allen optischen Größen vorhanden waren. Da TeX jedoch immer noch die ursprünglichen TFM-Dateien verwendet, reserviert TeX für jedes Zeichen immer noch die gleiche Menge an Platz, was insgesamt zu weniger Änderungen in bestehenden Dokumenten führt. Da diese tfm
Dateien nun tatsächlich Versionen der Schriftart beschreiben, für die keine Vektorschriftarten existieren, stimmen die Maße, insbesondere die Breite, nicht mit der tatsächlichen Breite in der Schriftartdatei überein, was zu diesen Fehlern führt.
Was können Sie dagegen tun? Wenn es Ihnen nichts ausmacht, die Schriftmetrik ein wenig zu ändern, können Sie LaTeX anweisen, nur die Metrik für die vorhandenen Schriftarten zu verwenden:
% \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}
Wenn Sie stattdessen die vorhandene Lösung bevorzugen und die Metriken der Originalschriften beibehalten möchten, auch wenn die entsprechenden Schriften nicht mehr existieren, können Sie virtuelle Schriften erstellen, bbold6/8/9/12/17
die die neu skalierten Glyphen explizit von laden bbold5/7/10
. Die Verwendung virtueller Schriften anstelle der Verwendung falscher Schriftmetriken stellt sicher, dass pdfTeX versteht, was Sie tun, und dies in der PDF-Datei korrekt meldet.
Ich würde aber empfehlen, zunächst die obige Lösung auszuprobieren, da die Erstellung virtueller Schriftarten hierfür deutlich komplizierter ist.