acmart icon indicating copy to clipboard operation
acmart copied to clipboard

Switch from libertine to libertinus

Open Blaisorblade opened this issue 4 years ago • 9 comments

Libertinus improves on Libertine in many ways:

  • supports Unicode-math/XeTeX/LuaTeX better (https://github.com/borisveytsman/acmart/issues/255#issuecomment-605318513)
  • is nowadays compatible with pdflatex (via https://ctan.org/pkg/libertinus and https://ctan.org/pkg/libertinus-type1).
  • fixes many libertine bugs in output, kerning, etc.
  • is a healthy GitHub project, with a public issue tracker, multiple contributors, is more responsive to bug reports...

Blaisorblade avatar Jun 16 '20 13:06 Blaisorblade

The latest straw was the horrible kerning in $\Gamma,$, the correct output would require sth. like $\Gamma \mkern-2mu ,$!

Blaisorblade avatar Jun 16 '20 13:06 Blaisorblade

We need to discuss this with ACM publishing people

borisveytsman avatar Aug 15 '20 23:08 borisveytsman

Could this switch also somehow enable the use of unicode-math? This limitation has been mentioned in another issue as well: https://github.com/borisveytsman/acmart/issues/255#issuecomment-621270975 .

rionda avatar Sep 16 '20 14:09 rionda

At a glance it sounds likely — Libertinus supports OTF/XeTeX/LuaTeX (https://ctan.org/pkg/libertinus-otf), and Libertinus-OTF docs mention unicode-math (page 2 on https://ftp.tu-chemnitz.de/pub/tex/fonts/libertinus-otf/doc/libertinus-otf-doc.pdf). Judging from my OP, Libertinus supported XeTeX first, and only later added support for PDFTeX.

EDIT: in fact, unicode-math was the motivation in the other issue (https://github.com/borisveytsman/acmart/issues/255#issuecomment-605318513).

Blaisorblade avatar Sep 16 '20 15:09 Blaisorblade

I revised the OP to collect all arguments for the switch. (The old version is available in the edit history of the post).

Blaisorblade avatar Sep 16 '20 15:09 Blaisorblade

@craig-rodkin: I can make samples with improved fonts. Would ACM publishing people consider making a switch?

-B

borisveytsman avatar Sep 16 '20 17:09 borisveytsman

Hi Boris,

The font change from Libertine to Libertinus has been on the table for a while, but did not have a way to move it forward. We now have a group of volunteers who will review and approve the changes. Please move forward and create the samples for me to forward to the group of volunteers for review and possible adoption. thanks

Craig-Rodkin avatar Sep 21 '20 15:09 Craig-Rodkin

Maybe related: With the latest texlive-full installation (2019.20200218-1) and fonts-linuxlibertine (5.3.0-4) I can't see the summation symbol (+) in the generated PDF (using pdflatex for compilation).

I see the following warning in the log file:

Missing character: There is no \CF in font ntxsy!

If I remove the newtxmath package from acmart.cls then everything looks fine, though the equations are rendered in plain TeX style.

Hopefully Libertinus will solve this issue, too.

luileito avatar Nov 08 '20 19:11 luileito

I get a bunch of font-related PDF/A validation errors with libertinus that didn't happen with the existing acmart font choices, e.g.

<rule specification="ISO 19005-2:2011" clause="6.2.11.4" testNumber="3" status="failed" passedChecks="0" failedChecks="6">
  <description>If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs
      	present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not.</description>
  <object>PDType1Font</object>
  <test>fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true</test>
  <check status="failed">
    <context>root/document[0]/pages[11](582 0 obj PDPage)/contentStream[0](583 0 obj PDContentStream)/operators[759]/font[0](OQWWRJ+LibertinusSerif-Bold)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[11](582 0 obj PDPage)/contentStream[0](583 0 obj PDContentStream)/operators[723]/font[0](NRSLNG+LibertinusMono-Regular)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[10](551 0 obj PDPage)/contentStream[0](552 0 obj PDContentStream)/operators[964]/font[0](TRDYWN+LibertinusMono-Bold)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[7](454 0 obj PDPage)/contentStream[0](455 0 obj PDContentStream)/operators[862]/font[0](VLVSGB+LibertinusSans-Italic)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[6](360 0 obj PDPage)/contentStream[0](361 0 obj PDContentStream)/operators[752]/font[0](ZOXRJL+LibertinusMono-Oblique)</context>
  </check>
</rule>
<rule specification="ISO 19005-2:2011" clause="6.2.11.4" testNumber="2" status="failed" passedChecks="0" failedChecks="6">
  <description>Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely 
      	in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement.</description>
  <object>Glyph</object>
  <test>renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true</test>
  <check status="failed">
    <context>root/document[0]/pages[11](582 0 obj PDPage)/contentStream[0](583 0 obj PDContentStream)/operators[723]/usedGlyphs[1](NRSLNG+LibertinusMono-Regular 99 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[11](582 0 obj PDPage)/contentStream[0](583 0 obj PDContentStream)/operators[723]/usedGlyphs[0](NRSLNG+LibertinusMono-Regular 46 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[10](551 0 obj PDPage)/contentStream[0](552 0 obj PDContentStream)/operators[964]/usedGlyphs[0](TRDYWN+LibertinusMono-Bold 116 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[7](454 0 obj PDPage)/contentStream[0](455 0 obj PDContentStream)/operators[862]/usedGlyphs[8](VLVSGB+LibertinusSans-Italic 115 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[6](360 0 obj PDPage)/contentStream[0](361 0 obj PDContentStream)/operators[752]/usedGlyphs[3](ZOXRJL+LibertinusMono-Oblique 45 0  0)</context>
  </check>
</rule>
<rule specification="ISO 19005-2:2011" clause="6.2.11.5" testNumber="1" status="failed" passedChecks="0" failedChecks="6">
  <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[11](582 0 obj PDPage)/contentStream[0](583 0 obj PDContentStream)/operators[723]/usedGlyphs[1](NRSLNG+LibertinusMono-Regular 99 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[11](582 0 obj PDPage)/contentStream[0](583 0 obj PDContentStream)/operators[723]/usedGlyphs[0](NRSLNG+LibertinusMono-Regular 46 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[10](551 0 obj PDPage)/contentStream[0](552 0 obj PDContentStream)/operators[964]/usedGlyphs[0](TRDYWN+LibertinusMono-Bold 116 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[7](454 0 obj PDPage)/contentStream[0](455 0 obj PDContentStream)/operators[862]/usedGlyphs[8](VLVSGB+LibertinusSans-Italic 115 0  0)</context>
  </check>
  <check status="failed">
    <context>root/document[0]/pages[6](360 0 obj PDPage)/contentStream[0](361 0 obj PDContentStream)/operators[752]/usedGlyphs[3](ZOXRJL+LibertinusMono-Oblique 45 0  0)</context>
  </check>
</rule>

(excerpt of veraPDF 1.16.1 report for a paper I happen to be working on today, after adding \usepackage{libertinus} to the preamble, lightly edited for readability)

This is probably a bug in the fonts themselves but I figured you should be aware of the problem when deciding whether and when to change acmart.cls.

zackw avatar Jan 26 '21 19:01 zackw