Follow-up Comment #20, bug #65098 (group groff):

[comment #19 comment #19:]
> Thank you very much for your help, I know I am terrible at ChangeLog,

Apparently I am too--just look at all the typo fixes I end up committing to
it.  :-|

> all that typing, sorry to put it on you.

Not a problem.  Describing the changes helps force me to understand what you
did and why.

While I wait for my builds-prior-to-pushing to complete, I have some comments
and questions, mostly matters of small detail.

First here's the ChangeLog entry; please review it for accuracy.


commit ed5c81c8486b5160c52b6198f9a6c0726a5c173c (HEAD -> master)
Author: Deri James <[email protected]>
Date:   Fri Jun 20 10:29:22 2025 +0000

    [devpdf,gropdf]: Support `SS` slanted-symbol font.
    
    Replace pseudo-slanted characters with a real font, improving typography
    of, e.g., slanted lowercase Greek letters as used in eqn(1).
    
    * font/devpdf/DESC.in: Mount new font `SS` prior to `S`.
    
    * font/devpdf/SS: New file describes new slanted-symbol font.  The
      metrics are hand-tweaked.  We can't run afmtodit on the symbolsl.afm
      file in grops because it produces incorrect metrics]--the width/height
      values do not take into account the rescaling of the glyph sizes by
      .89.
    
    * font/devpdf/StandardSymSL.pfb: New PostScript font supplies slanted
      versions of glyphs in the standard Symbol font.
    
    * font/devpdf/devpdf.am (GROFF_FONT_FILES): Update macro definition to
      scan the build directory for file names matching font descriptions,
      excluding both symbol fonts.  Relocate definition to be closer to use.
    
      (devpdffont_DATA): Add new files "SS", "StandardSymSL.pfb", and
      "download.in".
    
      (font/devpdf/SS): New target is generated by copying from source tree
      to build tree if they differ.  As a side effect, also copy
      "StandardSymSL.pfb".
    
      (font/devpdf/util/BuildFoundries): Copy "download.in" file from source
      tree to build tree with new name "download".
    
      (font/devpdf/download): Set write permission on the target to work
      around GNU Automake "distcheck" feature that makes make(1)-generated
      files read-only; however we want "BuildFoundries" to rewrite the file
      in place.
    
      (mostlyclean_devpdf_extra): Clean the new files "SS" and
      "StandardSymSL.pfb", as well as "S" since the new regex used to
      populate the `GROFF_FONT_FILES` now overlooks it.
    
      (install_devpdf, uninstall_devpdf): Explicitly handle "S" font
      description file since the new regex used to populate the
      `GROFF_FONT_FILES` now overlooks it.
    
    * src/devices/gropdf/gropdf.pl: Support multiple specifications of `-F`
      option, populating new list `fdlist`.  Use the runtime path separator
      to populate scalar `fd` if `fdlist` is not a singleton.
    
    * tmac/pdf.tmac: Drop all 28 calls of `pdf:SS` macro for 24 lowercase
      Greek letters and 4 variant forms; the slanted-symbol font now
      supplies these.
    
    Fixes <https://savannah.gnu.org/bugs/?65098>.


The stuff is not gating my push; this ticket simply seems like a good place to
discuss some remaining fine details.


diff --git a/font/devpdf/DESC.in b/font/devpdf/DESC.in
index 5cb254f37..a5f5b5a71 100644
--- a/font/devpdf/DESC.in
+++ b/font/devpdf/DESC.in
@@ -6,6 +6,6 @@ unitwidth 1000
 sizes 1000-10000000 0
 styles R I B BI
 family T
-fonts 8 0 0 0 0 0 0 S ZD
+fonts 9 0 0 0 0 0 0 SS S ZD
 tcommand
 postpro gropdf


I'd like to change that a bit.  The "DESC" file for "PS" looks like this:


$ cat ~/groff-1.23.0/share/groff/1.23.0/font/devps/DESC 
res 72000
hor 1
vert 1
sizescale 1000
unitwidth 1000
sizes 1000-10000000 0
styles R I B BI
family T
fonts 9 0 0 0 0 0 SS S ZD ZDR
tcommand
postpro grops
broken 0
papersize letter
print lpr


Since the PDF device doesn't need the "ZDR" font at all, I suggest making the
font mounting positions "line up" between the two output devices.  So like
this.


-fonts 9 0 0 0 0 0 0 SS S ZD
+fonts 8 0 0 0 0 0 SS S ZD


What do you think?


diff --git a/font/devpdf/SS b/font/devpdf/SS
new file mode 100644
index 000000000..a61fa8b7a
--- /dev/null
+++ b/font/devpdf/SS
@@ -0,0 +1,50 @@
+# This file has been generated with GNU afmtodit (groff) version 1.20.1
+#
+#   FullName Symbol Slanted
+#   Version 001.008
+#   FamilyName Symbol
+#
+# The original AFM file contains the following comments:
+#
+#   Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems
Incorporated. All rights reserved.
+#   Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems
Incorporated. All rights reserved.
+#   Comment Creation Date: Thu May  1 15:12:25 1997
+#   Comment UniqueID 43064
+#   Comment VMusage 30820 39997


I'd like to add an annotation to this comment header indicating that the file
is manually maintained, and to explain why.  I'd probably copy the same
wording I used in the ChangeLog entry, but if you'd like to propose some
language, I'd be eager to see it.


+font/devpdf/SS: font/devpdf/download
+       $(AM_V_at)$(MKDIR_P) $(top_builddir)/font/devpdf
+       if [ "$(top_srcdir)" != "$(top_builddir)" ]; then \
+           cp -u $(top_srcdir)/font/devpdf/SS \
+           $(top_srcdir)/font/devpdf/StandardSymSL.pfb \
+           $(top_builddir)/font/devpdf; \
+       fi
+


I'd like to get rid of the side effect of this target, and add a real one for
"StandardSymSL.pfa", which we'd generate in the build tree from
"StandardSymSL.pfb" using our own _pfbtops_(1) program.  I piloted this in bug
#67207 and it passed a smoke test, at least.


@@ -84,7 +96,12 @@ font/devpdf/util/BuildFoundries: \
                 $(devpdf_srcdir)/util/BuildFoundries.pl \
> $(top_builddir)/font/devpdf/util/BuildFoundries; \
           fi \
-       && chmod +x $(top_builddir)/font/devpdf/util/BuildFoundries
+       && chmod +x $(top_builddir)/font/devpdf/util/BuildFoundries \
+       && cp -f $(top_srcdir)/font/devpdf/download.in \
+                $(top_builddir)/font/devpdf/download
+
+GROFF_FONT_FILES=`cd $(top_builddir)/font/devpdf \
+  && grep -ls internalname [A-CEG-RT-Z]*`
 
 MOSTLYCLEANFILES += font/devpdf/DESC
 font/devpdf/DESC: $(devpdf_srcdir)/DESC.in


Any reason we can't just run "BuildFoundries" with "perl -f", and not bother
with changing its permissions?


@@ -134,7 +152,12 @@ mostlyclean_devpdf_extra:
        rm -rf $(top_builddir)/font/devpdf/enc \
          $(top_builddir)/font/devpdf/map;
        if test -d $(top_builddir)/font/devpdf; then \
-         for f in $(GROFF_FONT_FILES); do \
+         for f in $(GROFF_FONT_FILES) S; do \
+           $(RM) $(top_builddir)/font/devpdf/$$f; \
+         done; \
+       fi
+       if [ "$(top_srcdir)" != "$(top_builddir)" ]; then \
+         for f in SS StandardSymSL.pfb; do \
            $(RM) $(top_builddir)/font/devpdf/$$f; \
          done; \
        fi
@@ -144,7 +167,7 @@ install_devpdf:
        @echo Installing devpdf files
        -@test -d $(DESTDIR)$(devpdffontdir) \
          || $(mkinstalldirs) $(DESTDIR)$(devpdffontdir)
-       @for f in $(GROFF_FONT_FILES); do \
+       @for f in $(GROFF_FONT_FILES) S; do \
          $(RM) $(DESTDIR)$(devpdffontdir)/$$f; \
          if test -f $$f; then \
            $(INSTALL_DATA) $$f $(DESTDIR)$(devpdffontdir)/$$f; \
@@ -160,7 +183,7 @@ uninstall_groffdirs: uninstall_devpdf
 uninstall_devpdf:
        @echo Uninstalling devpdf files
        if test -d $(DESTDIR)$(devpdffontdir); then \
-         for f in $(GROFF_FONT_FILES); do \
+         for f in $(GROFF_FONT_FILES) S; do \
            $(RM) $(DESTDIR)$(devpdffontdir)/$$f; \
          done; \
          if test -d $(DESTDIR)$(devpdffontencdir); then \


As previewed in bug #67207, I'd prefer to migrate to a statically populated
macro listing "ps" device fonts we expect to support.  As PostScript is now a
withdrawn and abandoned standard, I don't think we need to pursue maximum
flexibility here.


diff --git a/tmac/pdf.tmac b/tmac/pdf.tmac
index 98fa3ef0e..9571e0148 100644
--- a/tmac/pdf.tmac
+++ b/tmac/pdf.tmac
@@ -38,34 +38,6 @@
 .de pdf:SS
 .      fchar \\$1 \\S'16'\\$1\\S'0'
 ..


As previewed in bug #67207, I'd like to kill off this (undocumented) macro
definition too, since we no longer use it, and it is easy for a document
author to recreate if they desire it.

Now that I've finished typing this comment, all 4 builds have finished too so
I will go ahead and push.  Of course I can amend the ChangeLog entry if you
find an error in it.  The commit message is unrevisable, but I'm resigned to
that being an aspect of life in Git.


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?65098>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to