gbranden pushed a commit to branch master in repository groff. commit 74501979860cda474908f534ab67bf33a6bedb87 Author: Deri James <d...@chuzzlewit.myzen.co.uk> AuthorDate: 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>. --- ChangeLog | 45 +++++++++++++++++++++++++++++++++++++ font/devpdf/DESC.in | 2 +- font/devpdf/SS | 50 ++++++++++++++++++++++++++++++++++++++++++ font/devpdf/StandardSymSL.pfb | Bin 0 -> 14534 bytes font/devpdf/devpdf.am | 35 ++++++++++++++++++++++++----- font/devpdf/download.in | 1 + src/devices/gropdf/gropdf.pl | 4 +++- tmac/pdf.tmac | 28 ----------------------- 8 files changed, 129 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index a69f5d51f..a89a13991 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,48 @@ +2025-06-20 Deri James <d...@chuzzlewit.myzen.co.uk> + + [devpdf, gropdf]: Add `SS` slanted-symbol font support. 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>. + 2025-06-16 Dave Kemper <saint.s...@gmail.com> * src/roff/troff/env.cpp (distribute_space): Fix expression 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 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 + +name SS +internalname Symbol-Slanted +special +slant 15.5 +spacewidth 223 + +charset +space 223 0 32 space ++h 562,614,16,133,-58,99 3 74 theta1 +ts 391,445,208,151,-28,99 3 86 sigma1 +*a 562,445,16,145,-34,99 3 97 alpha +*b 489,659,198,139,58,99 3 98 beta +*x 489,445,206,134,98,99 3 99 chi +*d 440,658,17,181,-32,99 3 100 delta +*e 391,447,17,127,1,99 3 101 epsilon +*f 464,599,199,106,-28,99 3 102 phi +*g 366,444,200,252,-42,99 3 103 gamma +*y 537,457,180,68,-50,68 3 104 eta +*i 293,448,15,53,-47,53 3 105 iota ++f 537,444,199,117,-42,99 3 106 phi1 +*k 489,446,0,182,-56,99 3 107 kappa +*l 489,658,15,91,29,91 3 108 lambda +*m 513,445,198,70,68,70 3 109 mu +*n 464,451,14,134,-69,99 3 110 nu +*o 489,444,17,86,-36,86 3 111 omicron +*p 489,433,17,161,-8,99 3 112 pi +*h 464,614,15,140,-53,99 3 113 theta +*r 489,444,205,82,69,82 3 114 rho +*s 537,445,19,175,-37,99 3 115 sigma +*t 391,445,17,170,-45,99 3 116 tau +*u 513,451,16,95,-55,95 3 117 upsilon ++p 635,519,16,173,-28,99 3 118 omega1 +*w 611,445,15,126,-35,99 3 119 omega +*c 439,681,200,126,-20,99 3 120 xi +*q 611,445,203,198,-91,99 3 121 psi +*z 440,673,200,190,-50,99 3 122 zeta diff --git a/font/devpdf/StandardSymSL.pfb b/font/devpdf/StandardSymSL.pfb new file mode 100644 index 000000000..94efbab40 Binary files /dev/null and b/font/devpdf/StandardSymSL.pfb differ diff --git a/font/devpdf/devpdf.am b/font/devpdf/devpdf.am index 3d9ae0d0d..1659944ba 100644 --- a/font/devpdf/devpdf.am +++ b/font/devpdf/devpdf.am @@ -19,8 +19,6 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. devpdf_srcdir = $(top_srcdir)/font/devpdf -GROFF_FONT_FILES=`cd $(top_builddir)/font/devpdf \ - && grep -ls internalname [A-CEG-Z]*` ENC_FILES=`cd $(top_builddir)/font/devpdf; ls enc/*` MAP_FILES=`cd $(top_builddir)/font/devpdf; ls map/*` @@ -33,6 +31,9 @@ MOSTLYCLEANFILES += \ devpdffontdir = $(fontdir)/devpdf devpdffont_DATA = \ font/devpdf/DESC \ + font/devpdf/SS \ + font/devpdf/download \ + font/devpdf/StandardSymSL.pfb \ font/devpdf/Foundry devpdffontencdir = $(devpdffontdir)/enc @@ -48,7 +49,10 @@ devpdffontmap_DATA = $(devpdffontmapdata) EXTRA_DIST += \ font/devpdf/DESC.in \ + font/devpdf/SS \ + font/devpdf/StandardSymSL.pfb \ font/devpdf/Foundry.in \ + font/devpdf/download.in \ font/devpdf/util/BuildFoundries.pl all: font/devpdf/stamp @@ -58,6 +62,14 @@ font/devpdf/enc/text.enc: $(AM_V_at)cp -f $(top_srcdir)/font/devps/text.enc \ $(top_builddir)/font/devpdf/enc +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 + $(devpdffontmapdata): $(AM_V_at)$(MKDIR_P) $(top_builddir)/font/devpdf/map $(AM_V_at)cp -f \ @@ -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 @@ -119,6 +136,7 @@ font/devpdf/download: $(devpdffontmapdata) font/devpdf/DESC \ --strict $(abs_top_builddir)/font/devpdf \ '$(abs_top_srcdir)/font/devps:$(abs_top_builddir)/font/devps' \ >>$@.tmp \ + && chmod u+w $@ \ && mv $@.tmp $@ # PDFs to be produced by troff should depend on this stamp file to @@ -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 \ diff --git a/font/devpdf/download.in b/font/devpdf/download.in new file mode 100644 index 000000000..6eea741ee --- /dev/null +++ b/font/devpdf/download.in @@ -0,0 +1 @@ + Symbol-Slanted StandardSymSL.pfb diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl index 409f15284..115bc3bd9 100644 --- a/src/devices/gropdf/gropdf.pl +++ b/src/devices/gropdf/gropdf.pl @@ -463,6 +463,7 @@ sub usage } my $fd; +my @fdlist; my $frot; my $fpsz; my $embedall=0; @@ -489,7 +490,7 @@ my $thisfnt; my $parcln=qr/\[[^\]]*?\]|(.)((?!\1).)*\1/; my $parclntyp=qr/(?:[\d\w]|\([+-]?[\S]{2}|$parcln)/; -if (!GetOptions('F=s' => \$fd, 'I=s' => \@idirs, 'l' => \$frot, +if (!GetOptions('F=s' => \@fdlist, 'I=s' => \@idirs, 'l' => \$frot, 'p=s' => \$fpsz, 'd!' => \$debug, 'help' => \$want_help, 'pdfver=f' => \$PDFver, 'v' => \$version, 'version' => \$version, 'opt=s' => \$options, 'e' => \$embedall, 'y=s' => \$Foundry, 's' => \$stats, @@ -499,6 +500,7 @@ if (!GetOptions('F=s' => \$fd, 'I=s' => \@idirs, 'l' => \$frot, } unshift(@idirs,'.'); +$fd=join('@RT_SEP@',@fdlist) if $#fdlist > -1; &usage(0) if ($want_help); 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 @@ am solely responsible for any bugs I may have introduced into this file. .de pdf:SS . fchar \\$1 \\S'16'\\$1\\S'0' .. -.pdf:SS \[+h] -.pdf:SS \[ts] -.pdf:SS \[*a] -.pdf:SS \[*b] -.pdf:SS \[*x] -.pdf:SS \[*d] -.pdf:SS \[*e] -.pdf:SS \[*f] -.pdf:SS \[*g] -.pdf:SS \[*y] -.pdf:SS \[*i] -.pdf:SS \[+f] -.pdf:SS \[*k] -.pdf:SS \[*l] -.pdf:SS \[*m] -.pdf:SS \[*n] -.pdf:SS \[*o] -.pdf:SS \[*p] -.pdf:SS \[*h] -.pdf:SS \[*r] -.pdf:SS \[*s] -.pdf:SS \[*t] -.pdf:SS \[*u] -.pdf:SS \[+p] -.pdf:SS \[*w] -.pdf:SS \[*c] -.pdf:SS \[*q] -.pdf:SS \[*z] .char \[lh] \X'pdf: xrev'\[rh]\X'pdf: xrev' .nr pdf:bm.nl 1 .nr pdf:bm.nk 0 _______________________________________________ groff-commit mailing list groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit