From 0e290b30838946f452aa3ea2fd58654e9cc68b1e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 30 Apr 2010 18:09:21 +0000 Subject: fontools update (29apr10) git-svn-id: svn://tug.org/texlive/trunk@18055 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/scripts/fontools/autoinst | 143 +++++++++++++++++++--------- Master/texmf/doc/man/man1/autoinst.1 | 72 +++++++------- Master/texmf/doc/man/man1/autoinst.man1.pdf | Bin 24909 -> 25012 bytes Master/tlpkg/libexec/ctan2tds | 51 +++++++--- 4 files changed, 180 insertions(+), 86 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/scripts/fontools/autoinst b/Master/texmf-dist/scripts/fontools/autoinst index 0db4b22e5b7..5c31de73c06 100755 --- a/Master/texmf-dist/scripts/fontools/autoinst +++ b/Master/texmf-dist/scripts/fontools/autoinst @@ -112,6 +112,7 @@ my %FD_WIDTH = ( ultracondensed => 'uc', extracondensed => 'ec', condensed => 'c', + cond => 'c', semicondensed => 'sc', regular => '', semiextended => 'sx', @@ -331,10 +332,6 @@ END_PARSE_ERROR $already_seen{$unique} = $filename; } - # Pretend all fonts have kerning feature; - # otftotfm will use the kern table otherwise - $fontinfo{features}{kern} = 1; - FIGURE_STYLE: for my $figure_style (keys %FIGURE_STYLE) { @@ -550,19 +547,19 @@ END_GENERAL_PARSE_ERROR end_fd_file($FD) if $fd_prev[0]; - # Remove the --no-updmap option from the last command for each family - map { $_->[-1] =~ s/--no-updmap//xms } values %commands; - # Print or execute the generated commands if ($ARGV{manual}) { while (my ($fam, $cmds_ref) = each %commands) { open my $BAT, '>', "$fam.bat" or die "ERROR: can't create '$fam.bat' - $!"; - map { print {$BAT} "$_\n" } @{$cmds_ref}; + print {$BAT} "$_\n" for @{$cmds_ref}; close $BAT; } } else { + # Remove the --no-updmap option from the last command for each family + map { $_->[-1] =~ s/--no-updmap//xms } values %commands; + for my $cmds_ref (values %commands) { for my $cmd (@{$cmds_ref}) { print "$cmd\n"; @@ -788,6 +785,17 @@ sub read_font_info { } close $OTFINFO; + # Check if there's a "kern" table + open $OTFINFO, '-|',"otfinfo --tables \"$fontfile\"" + or die "ERROR: 'otfinfo --tables \"$fontfile\"' failed"; + for my $line (<$OTFINFO>) { + if ($line =~ m/\d+ \s+ (\w{4}) \s+/xms && $1 eq 'kern') { + $fontinfo{features}{kern} = 1; + last; + } + } + close $OTFINFO; + if ($ARGV{verbose}) { print <<"END_FONT_INFO"; @@ -868,15 +876,16 @@ sub make_ornament_encoding { sub write_style_file { my ($family, $safe, @fd_data) = @_; - my (%seen_enc, %seen_style, %seen_series); + my (%seen_enc, %seen_style, %seen_series, %seen_shape); LINE: for my $line_ref (@fd_data) { - my ($fam, $enc, $style, $series) = @{$line_ref}[0 .. 3]; + my ($fam, $enc, $style, $series, $shape) = @{$line_ref}[0 .. 4]; next LINE if $fam ne $family; $seen_enc{$enc} = 1; $seen_style{$style} = 1; $seen_series{$series} = 1; + $seen_shape{$shape} = 1; } open my $STYLE, '>', "$family.sty" @@ -895,9 +904,13 @@ END_STY_HEADER print {$STYLE} "\\RequirePackage[$textenc]{fontenc}\n" if $textenc; print {$STYLE} "\\RequirePackage{textcomp}\n" if $seen_enc{TS1}; - print {$STYLE} <<'END_STY_FONTAXES'; + print {$STYLE} <<'END_STY_FONTAXES_START'; \IfFileExists{fontaxes.sty}{ \RequirePackage{fontaxes} +END_STY_FONTAXES_START + + if ($seen_shape{tl} || $seen_shape{tlit}) { + print {$STYLE} <<'END_STY_FONTAXES_TL'; \providecommand{\tldefault}{tl} \DeclareRobustCommand\tlshape{\not@math@alphabet\tlshape\relax \fontsecondaryshape\tldefault\selectfont} @@ -906,11 +919,21 @@ END_STY_HEADER \fa@naming@exception{shape}{{n}{tl}}{tl} \fa@naming@exception{shape}{{it}{tl}}{tlit} +END_STY_FONTAXES_TL + } + + if ($seen_shape{nw} || $seen_shape{sw}) { + print {$STYLE} <<'END_STY_FONTAXES_SW'; \DeclareRobustCommand\swshape{\not@math@alphabet\swshape\relax \fontprimaryshape\itdefault\fontsecondaryshape\swdefault\selectfont} \fa@naming@exception{shape}{{n}{sw}}{nw} \fa@naming@exception{shape}{{it}{sw}}{sw} +END_STY_FONTAXES_SW + } + + if ($seen_style{Sup}) { + print {$STYLE} <<'END_STY_FONTAXES_SUP'; \fa@naming@exception{figures}{{superior}{proportional}}{Sup} \fa@naming@exception{figures}{{superior}{tabular}}{Sup} \def\sufigures{\@nomath\sufigures @@ -918,6 +941,11 @@ END_STY_HEADER \DeclareTextFontCommand{\textsu}{\sufigures} \let\textsuperior\textsu +END_STY_FONTAXES_SUP + } + + if ($seen_style{Inf}) { + print {$STYLE} <<'END_STY_FONTAXES_INF'; \fa@naming@exception{figures}{{inferior}{proportional}}{Inf} \fa@naming@exception{figures}{{inferior}{tabular}}{Inf} \def\infigures{\@nomath\infigures @@ -925,6 +953,11 @@ END_STY_HEADER \DeclareTextFontCommand{\textin}{\infigures} \let\textinferior\textin +END_STY_FONTAXES_INF + } + + if ($seen_style{Orn}) { + print {$STYLE} <<'END_STY_FONTAXES_ORN'; \fa@naming@exception{figures}{{ornament}{proportional}}{Orn} \fa@naming@exception{figures}{{ornament}{tabular}}{Orn} \def\ornaments{\@nomath\ornaments @@ -932,14 +965,29 @@ END_STY_HEADER \DeclareTextFontCommand{\textornaments}{\ornaments} \providecommand{\ornament}[1]{\textornaments{\char##1}} +END_STY_FONTAXES_ORN + } + + if ($seen_style{Numr}) { + print {$STYLE} <<'END_STY_FONTAXES_NUMR'; \fa@naming@exception{figures}{{numerators}{proportional}}{Numr} \fa@naming@exception{figures}{{numerators}{tabular}}{Numr} +END_STY_FONTAXES_NUMR + } + + if ($seen_style{Dnom}) { + print {$STYLE} <<'END_STY_FONTAXES_DNOM'; \fa@naming@exception{figures}{{denominators}{proportional}}{Dnom} \fa@naming@exception{figures}{{denominators}{tabular}}{Dnom} + +END_STY_FONTAXES_DNOM + } + + print {$STYLE} <<'END_STY_FONTAXES_END'; }{} -END_STY_FONTAXES +END_STY_FONTAXES_END print {$STYLE} <<"END_STY_XKEYVAL"; \\IfFileExists{xkeyval.sty}{ @@ -1088,10 +1136,12 @@ automatic mode) is quite complicated because it needs lots of long command lines and doesn't generate the F and F files LaTeX needs. B simplifies the font installation process by generating and executing all commands for F -and by creating all necessary F and F files. All the user then needs +and by creating all necessary F and F files. + +All the user then needs to do is move these files to a suitable location -(C<< $LOCALTEXMF/tex/latex/// >> being the -canonical choice) and update TeX's filename database. +(F<< $LOCALTEXMF/tex/latex/// >> is the +official choice) and update TeX's filename database. Given a family of font files (in either F<.ttf> or F<.otf> format), B will create several LaTeX font families: @@ -1230,8 +1280,7 @@ A typical name in this scheme is F. By default, all text families use the LY1 encoding. This has been chosen over T1 (Cork) because many OpenType fonts contain additional ligatures such as fj and Th, and LY1 has a number of empty slots to accommodate these. - -A different encoding can be selected using the B< --encoding> +Different encodings can be selected using the B< --encoding> command line option (see below). @@ -1281,8 +1330,8 @@ shapes and styles. This package can be downloaded from the project's homepage (F) or directly through the CVS web interface (F), -and is also available from CTAN as part of the archive F -(F). +and is also available from CTAN as part of the archive F +(F). Using the machinery set up by F, the generated style file also defines a few commands (which take the text to be typeset as argument) @@ -1318,11 +1367,14 @@ running LaTeX on the file F (part of a standard LaTeX installation) and specifying the ornament font (e.g., I). +These commands are only generated for shapes and number styles +that actually exist; no commands are generated for shapes and styles +that don't exist, or whose generation has been turned off. + This whole machinery builds on F; if that package cannot be found, the style file doesn't provide high-level access to the more `exotic' font shapes and styles. In that case, you're limited to using the lower-level -commands from standard NFSS, or even plain TeX's C<\font> primitive -(and it's called `primitive' for a reason!) +commands from standard NFSS. =head2 Using multiple font families in one document @@ -1337,8 +1389,6 @@ of B may not be able to coexist peacefully. =head2 NFSS codes In NFSS, weight and width are concatenated into a single `series' attribute. -(I versions of B before 2007-07-27 erroneously formed -the series as `width plus weight' instead of the reverse.) B maps widths, weights and shapes to NFSS codes using the following tables. These are based on the tables in Lehman's F, but some changes had to be made to avoid @@ -1399,11 +1449,10 @@ cannot find a writable F directory and leave all generated F, F, F and F files in the current working directory. In that case, you need to move these to their correct destinations. You also need to tell the dvi-driver (F, F, F etc.) -about the new font map files; this usually means editing some -configuration file. +about the new font map files; see the documentation for how this is done. -Furthermore, some OpenType fonts lead to F and F files that are too -big for MiKTeX's F and F; the versions that come with TeXLive +Also, some OpenType fonts lead to F and F files that are too +big for MiKTeX's F and F; the versions from TeXLive (F) don't have this problem. @@ -1519,24 +1568,22 @@ being interpreted as options to B, it should be properly quoted. Eddie Kohler's TypeTools (F). Perl is usually pre-installed on Linux and Unix systems; -for Windows, good (and free) Perl implementations are -Strawberry Perl (F) and -ActivePerl (available from F); +on Windows, try ActivePerl (available from F) +or Strawberry Perl (F). -John Owens' F (F; -also available from CTAN) is another wrapper around F, -and may work for you when B doesn't. +XeTeX (F) is an extension of TeX +that can natively use any font installed in the operating system +(including both flavours of OpenType fonts) +without additional support files. -Ready-made support files for MinionPro, providing more options and features -than B ever will (including math), are available from -F. +John Owens' F (available from CTAN) is another wrapper +around F, and may work when B doesn't. -XeTeX (F) is a TeX extension that can use -any font installed in the operating system (including both flavours of -OpenType fonts) without additional support files. -It also isn't hindered by standard TeX's limitation to 8-bit fonts, -so it is especially well suited to fonts with many ligatures and -alternate glyphs, such as Bickham, Poetica and Zapfino. +The MinionPro for LaTeX project +(F, also on CTAN) +developed very complete support files for Minion Pro (including math), +but the project appears to have been abandoned; +these files don't work with recent versions of Minion Pro. =head1 AUTHOR @@ -1564,7 +1611,6 @@ it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. - A copy of the GNU General Public License is included with the I collection; see the file F. @@ -1584,6 +1630,17 @@ GNU General Public License for more details. =over 12 +=item I<2010-04-29> + +The C< --feature=kern> option is only used for fonts that +contain either a I feature or a I table. +Font feature selection commands in the F<.sty> file are only +generated for shapes and figure styles that are supported +by the current font, and whose generation has not been +turned off using the command line options. +Fixed the font info parsing to work with the Condensed fonts +in the Minion Pro family. + =item I<2010-04-23> Always provide the C< --feature=kern> option to F, diff --git a/Master/texmf/doc/man/man1/autoinst.1 b/Master/texmf/doc/man/man1/autoinst.1 index 1b26a2dd3f2..16635636e35 100644 --- a/Master/texmf/doc/man/man1/autoinst.1 +++ b/Master/texmf/doc/man/man1/autoinst.1 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "AUTOINST 1" -.TH AUTOINST 1 "2010-04-23" "fontools" "fontools" +.TH AUTOINST 1 "2010-04-29" "fontools" "fontools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,10 +143,12 @@ automatic mode) is quite complicated because it needs lots of long command lines and doesn't generate the \fIfd\fR and \fIsty\fR files LaTeX needs. \&\fBautoinst\fR simplifies the font installation process by generating and executing all commands for \fIotftotfm\fR -and by creating all necessary \fIfd\fR and \fIsty\fR files. All the user then needs +and by creating all necessary \fIfd\fR and \fIsty\fR files. +.PP +All the user then needs to do is move these files to a suitable location -(\f(CW\*(C`$LOCALTEXMF/tex/latex///\*(C'\fR being the -canonical choice) and update TeX's filename database. +(\fI\f(CI$LOCALTEXMF\fI/tex/latex///\fR is the +official choice) and update TeX's filename database. .PP Given a family of font files (in either \fI.ttf\fR or \fI.otf\fR format), \&\fBautoinst\fR will create several LaTeX font families: @@ -254,8 +256,7 @@ A typical name in this scheme is \fIMinionPro\-Regular\-osf\-sc\-ly1\fR. By default, all text families use the \s-1LY1\s0 encoding. This has been chosen over T1 (Cork) because many OpenType fonts contain additional ligatures such as fj and Th, and \s-1LY1\s0 has a number of empty slots to accommodate these. -.PP -A different encoding can be selected using the \fB \-\-encoding\fR +Different encodings can be selected using the \fB \-\-encoding\fR command line option (see below). .SS "Using the fonts with LaTeX" .IX Subsection "Using the fonts with LaTeX" @@ -293,8 +294,8 @@ shapes and styles. This package can be downloaded from the project's homepage (\fIhttp://developer.berlios.de/projects/minionpro\fR) or directly through the \s-1CVS\s0 web interface (\fIhttp://cvs.berlios.de/cgi\-bin/viewcvs.cgi/minionpro/MinionPro/tex/\fR), -and is also available from \s-1CTAN\s0 as part of the archive \fIbase\-v2.zip\fR -(\fIhttp://www.ctan.org/tex\-archive/fonts/minionpro/base\-v2.zip\fR). +and is also available from \s-1CTAN\s0 as part of the archive \fImetrics\-base.zip\fR +(\fIhttp://www.ctan.org/tex\-archive/fonts/minionpro/metrics\-base.zip\fR). .PP Using the machinery set up by \fIfontaxes\fR, the generated style file also defines a few commands (which take the text to be typeset as argument) @@ -330,11 +331,14 @@ running LaTeX on the file \fInfssfont.tex\fR (part of a standard LaTeX installation) and specifying the ornament font (e.g., \fIMinionPro-Regular-orn-u\fR). .PP +These commands are only generated for shapes and number styles +that actually exist; no commands are generated for shapes and styles +that don't exist, or whose generation has been turned off. +.PP This whole machinery builds on \fIfontaxes\fR; if that package cannot be found, the style file doesn't provide high-level access to the more `exotic' font shapes and styles. In that case, you're limited to using the lower-level -commands from standard \s-1NFSS\s0, or even plain TeX's \f(CW\*(C`\efont\*(C'\fR primitive -(and it's called `primitive' for a reason!) +commands from standard \s-1NFSS\s0. .SS "Using multiple font families in one document" .IX Subsection "Using multiple font families in one document" If you want to use several font families in one document, make sure @@ -345,8 +349,6 @@ of \fBautoinst\fR may not be able to coexist peacefully. .SS "\s-1NFSS\s0 codes" .IX Subsection "NFSS codes" In \s-1NFSS\s0, weight and width are concatenated into a single `series' attribute. -(\fINote:\fR versions of \fBautoinst\fR before 2007\-07\-27 erroneously formed -the series as `width plus weight' instead of the reverse.) \&\fBautoinst\fR maps widths, weights and shapes to \s-1NFSS\s0 codes using the following tables. These are based on the tables in Lehman's \&\fIFont Installation Guide\fR, but some changes had to be made to avoid @@ -398,11 +400,10 @@ cannot find a writable \fItexmf\fR directory and leave all generated \fItfm\fR, \&\fIvf\fR, \fIenc\fR and \fImap\fR files in the current working directory. In that case, you need to move these to their correct destinations. You also need to tell the dvi-driver (\fIdvips\fR, \fIdvipdfm\fR, \fIpdfTeX\fR etc.) -about the new font map files; this usually means editing some -configuration file. +about the new font map files; see the documentation for how this is done. .PP -Furthermore, some OpenType fonts lead to \fIpl\fR and \fIvpl\fR files that are too -big for MiKTeX's \fIpltotf\fR and \fIvptovf\fR; the versions that come with TeXLive +Also, some OpenType fonts lead to \fIpl\fR and \fIvpl\fR files that are too +big for MiKTeX's \fIpltotf\fR and \fIvptovf\fR; the versions from TeXLive (\fIhttp://tug.org/ftp/texlive/Contents/live/bin/win32/\fR) don't have this problem. .SH "COMMAND-LINE OPTIONS" @@ -513,24 +514,22 @@ being interpreted as options to \fBautoinst\fR, it should be properly quoted. Eddie Kohler's TypeTools (\fIhttp://www.lcdf.org/type\fR). .PP Perl is usually pre-installed on Linux and Unix systems; -for Windows, good (and free) Perl implementations are -Strawberry Perl (\fIhttp://strawberryperl.com\fR) and -ActivePerl (available from \fIhttp://www.activestate.com\fR); +on Windows, try ActivePerl (available from \fIhttp://www.activestate.com\fR) +or Strawberry Perl (\fIhttp://strawberryperl.com\fR). .PP -John Owens' \fIotfinst\fR (\fIhttp://www.ece.ucdavis.edu/~jowens/code/otfinst/\fR; -also available from \s-1CTAN\s0) is another wrapper around \fIotftotfm\fR, -and may work for you when \fBautoinst\fR doesn't. +XeTeX (\fIhttp://www.tug.org/xetex\fR) is an extension of TeX +that can natively use any font installed in the operating system +(including both flavours of OpenType fonts) +without additional support files. .PP -Ready-made support files for MinionPro, providing more options and features -than \fBautoinst\fR ever will (including math), are available from -\&\fIhttp://developer.berlios.de/projects/minionpro/\fR. +John Owens' \fIotfinst\fR (available from \s-1CTAN\s0) is another wrapper +around \fIotftotfm\fR, and may work when \fBautoinst\fR doesn't. .PP -XeTeX (\fIhttp://scripts.sil.org/xetex\fR) is a TeX extension that can use -any font installed in the operating system (including both flavours of -OpenType fonts) without additional support files. -It also isn't hindered by standard TeX's limitation to 8\-bit fonts, -so it is especially well suited to fonts with many ligatures and -alternate glyphs, such as Bickham, Poetica and Zapfino. +The MinionPro for LaTeX project +(\fIhttp://developer.berlios.de/projects/minionpro/\fR, also on \s-1CTAN\s0) +developed very complete support files for Minion Pro (including math), +but the project appears to have been abandoned; +these files don't work with recent versions of Minion Pro. .SH "AUTHOR" .IX Header "AUTHOR" Marc Penninga @@ -552,7 +551,6 @@ it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. -.PP A copy of the \s-1GNU\s0 General Public License is included with the \fIfontools\fR collection; see the file \fIGPLv2.txt\fR. .SH "DISCLAIMER" @@ -564,6 +562,16 @@ but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty .SH "RECENT CHANGES" .IX Header "RECENT CHANGES" (See the source code for the full story.) +.IP "\fI2010\-04\-29\fR" 12 +.IX Item "2010-04-29" +The \f(CW\*(C` \-\-feature=kern\*(C'\fR option is only used for fonts that +contain either a \fIkern\fR feature or a \fIkern\fR table. +Font feature selection commands in the \fI.sty\fR file are only +generated for shapes and figure styles that are supported +by the current font, and whose generation has not been +turned off using the command line options. +Fixed the font info parsing to work with the Condensed fonts +in the Minion Pro family. .IP "\fI2010\-04\-23\fR" 12 .IX Item "2010-04-23" Always provide the \f(CW\*(C` \-\-feature=kern\*(C'\fR option to \fIotftotfm\fR, diff --git a/Master/texmf/doc/man/man1/autoinst.man1.pdf b/Master/texmf/doc/man/man1/autoinst.man1.pdf index b99e22be9f6..af20e3b6085 100644 Binary files a/Master/texmf/doc/man/man1/autoinst.man1.pdf and b/Master/texmf/doc/man/man1/autoinst.man1.pdf differ diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 70d414b0078..651cbc117cd 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -2008,7 +2008,8 @@ sub install } } -# build the documentation files + +# build the documentation files (we don't any more) sub dodvi { # packages which are doc themselves rarely rebuild cleanly, @@ -2154,17 +2155,9 @@ sub doinfos &install ("$TOPDEST/texmf/doc/info/", $infopatt); } -# man pages. We put these in texmf/doc/man/man1, a la info (see above). -# -sub domans -{ - my $manpatt = $specialmans{$package}; - return unless $manpatt; - &install ("$TOPDEST/texmf/doc/man/man1/", $manpatt); -} - # xmltex files -sub doxmt{ +sub doxmt +{ my $xmtpatt = $specialxmt{$package} || $standardxmt; &install ("$DEST/tex/xmltex/$package", $xmtpatt); } @@ -2182,6 +2175,40 @@ sub domf { &install ($mfdir, $mf_inst_patt); } +# man pages. We put these in texmf/doc/man/man1, a la info (see above). +# +sub domans +{ + my $manpatt = $specialmans{$package}; + return unless $manpatt; + &install ("$TOPDEST/texmf/doc/man/man1/", $manpatt); +} + +# When a package has man pages, we want to update the pdf versions of +# them that we distribute using our Makefile setup, so that they are +# all consistent. So we copy over our Makefiles, run make, and then +# remove them. +# +sub tl_man_to_pdf +{ + my $Master_man = "$Master/texmf/doc/man"; + my $pkg_man = "$TOPDEST/texmf/doc/man"; + &SYSTEM ("cd $Master_man && $CP --parents Makefile man1/Makefile $pkg_man/"); + + # Extra complication: we don't want to rebuild everything, only those + # that have changed. Therefore, also copy in the pdfs for the package + # being updated from the Master man dir. + for my $man (<$pkg_man/man1/*>) { + (my $pdf_man = $man) =~ s,^.*/,,; # just foo.1, no directories + $pdf_man =~ s/1$/man1.pdf/; # foo.1 -> foo.man1.pdf + &SYSTEM ("$CP $Master_man/man1/$pdf_man $pkg_man/man1"); # copy existing + } + + &SYSTEM ("cd $pkg_man && make DIR=man1"); # build new pdfs + &SYSTEM ("cd $pkg_man && $RM Makefile man1/Makefile"); # rm Makefiles +} + + sub rundvi { local($thispatt) = @_; $TEX = $specialTEX{$package}; @@ -3780,6 +3807,8 @@ sub POSTfontools &xmkdir ($encdir); &SYSTEM ("$MV share/* $encdir/"); &SYSTEM ("rmdir share"); # skip pdfs, we'll make our own + # + &tl_man_to_pdf (); } sub POSTfpl -- cgit v1.2.3