summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/pl
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
commit215012a8d684889983ec2c0629e1c704e6853d9c (patch)
treeebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/pl
parent1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (diff)
trunk/Master/texmf-dist/fonts/source
git-svn-id: svn://tug.org/texlive/trunk@101 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/pl')
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/cmssbi10.mf8
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/dlr10.mf4
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/fik_mik.mf75
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl.mft111
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl_cud.mf146
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl_dl.mf314
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl_dod.mf832
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl_ml.mf327
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl_mlk.mf204
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pl_sym.mf49
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plb10.mf6
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbsy10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbsy5.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbsy7.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx12.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx5.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx6.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx7.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx8.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbx9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbxsl10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plbxti10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plcsc10.mf4
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pldunh10.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plex10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plff10.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plfi10.mf6
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plfib8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plinch.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plitt10.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi12.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi5.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi6.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi7.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmi9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmib10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmib5.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plmib7.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr12.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr17.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr5.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr6.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr7.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr8.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plr9.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsl10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsl12.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsl8.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsl9.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsltt10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plss10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plss12.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plss17.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plss8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plss9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssbi10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssbx10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssdc10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssi10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssi12.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssi17.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssi8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssi9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssq8.mf7
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plssqi8.mf7
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsy10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsy5.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsy6.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsy7.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsy8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plsy9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltcsc10.mf4
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltex10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltex8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltex9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plti10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plti12.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plti7.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plti8.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plti9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltt10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltt12.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltt8.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/pltt9.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plu10.mf3
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/plvtt10.mf5
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/polan.mf163
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/polkap.mf224
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/polkur.mf132
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/polmat.mf48
-rw-r--r--Master/texmf-dist/fonts/source/public/pl/poltyt.mf63
95 files changed, 2998 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/pl/cmssbi10.mf b/Master/texmf-dist/fonts/source/public/pl/cmssbi10.mf
new file mode 100644
index 00000000000..b111772f3ad
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/cmssbi10.mf
@@ -0,0 +1,8 @@
+%%\normalcomments
+%%% addto use_driver generate
+% slanted CMSSBX10 font; this parameter file is assumed to be input by
+% the |use_driver| routine (defined in FIK_MIK.MF) which reinterpretes
+% the |generate| command (see PLSSBI... files)
+input cmssbx10;
+slant:=sind 12/cosd 12; % tilt ratio $(\Delta x/\Delta y)$ like in SSI fonts
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/dlr10.mf b/Master/texmf-dist/fonts/source/public/pl/dlr10.mf
new file mode 100644
index 00000000000..547c49afcb0
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/dlr10.mf
@@ -0,0 +1,4 @@
+%%% input use_driver
+% see the respective CM file
+basic_unit#:=dd#;
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/fik_mik.mf b/Master/texmf-dist/fonts/source/public/pl/fik_mik.mf
new file mode 100644
index 00000000000..53592771bc3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/fik_mik.mf
@@ -0,0 +1,75 @@
+% ---------------------------------------------------------------------------
+%%% input use_driver
+% This is an auxiliary file which prepares reading a CM parametric file using
+% a sneaky-tricky method. Every PL parametric file (such as PLB10, PLBX10,
+% ..., etc.) inputs this file, optionally changes some of PL parameters, and
+% then calls the macro |use_driver|.
+% ---------------------------------------------------------------------------
+% AUTHORS: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% In particular, only the authors are entitled to modify this file.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+if unknown cmbase: input cmbase fi
+
+string driver_name,ss; numeric ii;
+
+vardef generate @# = driver_name:=str @#; endgroup enddef;
+
+vardef use_driver @# =
+% |@#| either is empty or is equal to the pt-size of a respective
+% CM parametric file
+ if unknown param_base:
+% in sophisticated applications a user may wish to specify
+% |param_base| prior to calling |use_driver|:
+ string param_base; param_base=jobname;
+ fi
+ ii:=0;
+ forever:
+ ii:=ii+1;
+ ss:=substring(length(param_base)-ii,length(param_base)-ii+1) of param_base;
+ exitif (ss<"0") or (ss>"9") or (ii>=length(param_base));
+ endfor;
+ ii:=ii-1;
+ if unknown basic_unit#: basic_unit#=pt#; fi % i.e., |basic_unit#:=1|
+ numeric scale;
+ if str@# <> "":
+ scale=basic_unit#*scantokens(
+ substring(length(param_base)-ii,length(param_base)) of param_base)/@#;
+ ss:="input cm"&(substring(2,length(param_base)-ii) of param_base)&str @#;
+ else:
+ scale:=basic_unit#;
+ ss:="input cm"&(substring(2,length(param_base)) of param_base);
+ fi
+
+% |ogonek_pen#| is the only sharp extra PL parameter;
+% it must be rescaled separately:
+ if known ogonek_pen#: ogonek_pen#:=scale*ogonek_pen#; fi
+% input the original driver, possibly rescaling:
+ numeric true_pt#; true_pt#=pt#;
+ pt#:=scale*true_pt#; scantokens(ss); pt#:=true_pt#;
+
+ if (basic_unit#<>pt#):
+ message "Actual font size is " & decimal(designsize) & "pt#";
+ message "";
+ fi
+
+ font_identifier:=substring(0,length(param_base)-ii) of param_base;
+ scantokens("input "&
+ if driver_name="roman": "polan"
+ elseif driver_name="textit": "polkur"
+ elseif driver_name="mathsy": "polmat"
+ elseif driver_name="title": "poltyt"
+ elseif driver_name="csc": "polkap"
+ else: driver_name fi);
+
+enddef;
+
+endinput;
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl.mft b/Master/texmf-dist/fonts/source/public/pl/pl.mft
new file mode 100644
index 00000000000..fc10e7b73b5
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl.mft
@@ -0,0 +1,111 @@
+%%%% MFT style for the Polish extension of Computer Modern (PL fonts)
+%%%% CMBASE style:
+%%% } ( ) ]] {{ }} ! ^ %%%% tokens that need no special formatting
+%%% step upto downto %%%% boldface binary operators
+%%% addto fill unfill draw undraw %%%% boldface unary operators
+%%% addto filldraw unfilldraw drawdot undrawdot erase pickup
+%%% addto exitunless stop incr decr proofrulethickness screenrule
+%%% addto define_pixels define_whole_pixels define_whole_vertical_pixels
+%%% addto define_blacker_pixels define_whole_blacker_pixels
+%%% addto define_corrected_pixels lowres_fix proofoffset penstroke
+%%% addto beginchar beginarithchar italcorr font_size font_slant
+%%% addto font_normal_space font_normal_stretch font_normal_shrink font_quad
+%%% addto font_x_height font_extra_space font_identifier font_coding_scheme
+%%% addto cmchar iff generate adjust_fit math_fit labels penlabels
+%%% addto stroke circ_stroke padded
+%%% enddef endchar %%%% boldface closing
+%%% true relax mode_setup font_setup %%%% boldface nullary operators
+%%% true clearit shipit cullit openit showit clearxy clearpen
+%%% true nodisplay notransforms screenchars screenstrokes imagerules
+%%% .. ... .... -- --- %%%% path operators made of dots and dashes
+%%% length flex abs dir %%%% unary operators to be in roman type
+%%% length unitvector inverse ceiling hround vround Vround counterclockwise
+%%% length tensepath byte reflectedabout rotatedaround magstep max min
+%%% and mod dotprod intersectionpoint softjoin %%%% binary operators to be roman
+%%% ++ ** %%%% binary operators made of two special characters
+%%% penoffset goodval direction directionpoint %%%% operators that take "of"
+%%% pausing tolerance pixels_per_inch blacker o_correction %%%% internals
+%%% pausing screen_rows screen_cols currentwindow displaying
+%%% pausing pen_top pen_bot pen_lft pen_rt shrink_fit rt lft top bot
+%%% = <= >= <> %%%% conversions for the SAIL character set only
+%%% good crisp fine tiny rule light_rule cal light_cal med_cal heavy_cal
+%%% good term fudged mfudged sloped_serif tilted med_tilted
+%%% pausing slant fudge math_spread superness superpull beak_darkness ligs
+%% \outer\def^^L{\par\vfill\eject} % obeypages
+%%%%-------------------------------------------------------------------------
+%%%% So far it was CMBASE; now
+%% %--------- BJ & MR predilections & idiosyncrasies (ver. 1.09) ------------
+%%%% follow:
+%%%%-------------------------------------------------------------------------
+%%% end bye %%%% end=bye, isn't it?
+%%% screenrule proofrule %%%% proofrule=screenrule, isn't it?
+%%% def mode_def %%%% def=mode_def, isn't it?
+%%% input generate %%%% input=generate, isn't it?
+%%% for range %%%% we prefere \MF{}book convention
+%%% step thru %%%% ditto
+%%% good lower
+%%%%-------------------------------------------------------------------------
+%%%% our slight modifications:
+%%\newcount\hours \newcount\minutes
+%%\ifx\plconventions\undefined %%%% don't define some dangerous macros twice
+%%%%-------------------------------------------------------------------------
+%%\let\plconventions\relax
+%%\def\MeX{M\kern-.111em\lower.5ex\hbox{E}\kern-.125emX}
+%%\let\OSH\#
+%%\def\SH{\raise.7ex\hbox{$\scriptstyle\OSH$}} % sharp sign for sharped units
+%%\let\#\SH \def\\#1{{\let\#\OSH\it#1}}
+%%\def\finstring"#1"{\tentex"#1"\egroup}
+%%\def\frac#1/#2{\leavevmode\kern.1em
+%% \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+%% /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}\,} %%%% \, added
+%%\let\UL\_
+%%\def\_{\ifdim\fontdimen1\the\font=0pt \UL\kern0.01em\else\kern-0.08em\UL\kern0.04em\fi}
+%%%%-------------------------------------------------------------------------
+%%%% our string treatment:
+%%\font\ttfont pltt10
+%%\def\vispace{{\ttfont\char32}}
+%%%% strings may be broken in a .TeX file:
+%%{\obeyspaces\obeylines%
+%%\gdef\prepspnl{\obeyspaces\obeylines\let \vispace\let^^M\vispace}}
+%%\def\7{\hbox\bgroup\prepspnl\nocats\frenchspacing\finstring} % string token
+%%%%-------------------------------------------------------------------------
+%%%% our comment treatment:
+%%\font\commfont plsltt10 % standard comment font
+%%\font\bif plbxti10 % comment bold italic font
+%%%% sorry, but we're using the UNderSCOre in COmments (see the dirty trick)
+%%\def\unscoco{\ifmmode_\else\_\fi} \catcode`\_\active \let_\unscoco
+%%\font\trifnt plmib10 scaled \magstep2 \def\lftri{{\trifnt \char'57}}
+%%{\obeyspaces\gdef\prepsp{\obeyspaces\everymath{\catcode`\ 10\relax}\let \ }}
+%%\fi %%%% no more dangerous macros
+%%\def\specialcomments{%
+%% \def\9{$\bgroup\def\par{\hfill\lftri\endgraf\egroup}\commfont\%\prepsp}}
+%%\def\normalcomments{%
+%% \def\9{$\bgroup\def\par{\endgraf\egroup}\hfill\commfont\%\prepsp}}
+%%\specialcomments % our favorite form of comments
+%%%%-------------------------------------------------------------------------
+%%%% DIRTY TRICK---sorry, but we're also using the underscore in file names
+%%%% (assumption: \tt appears only as \hbox{\tt...})
+%%\def\tt{\nocats\namett}
+%%{\catcode`\}\other \catcode`\)2\gdef\namett#1}{\tentex#1\egroup))
+%%%%-------------------------------------------------------------------------
+%%%% our footline:
+%%\def\oktime{% format `hh:mm'
+%%\hours=\time \divide \hours by 60 %
+%%\minutes=-\hours \multiply \minutes by 60 \advance \minutes by \time
+%%\ifnum\hours>9 \the\hours \else 0\the\hours \fi
+%%:%
+%%\ifnum\minutes>9 \the\minutes \else 0\the\minutes \fi}
+%%\def\monthnazwa{\ifcase \month
+%%\or stycznia\or lutego\or marca\or kwietnia\or maja\or czerwca\or lipca%
+%%\or sierpnia\or wrze\'snia\or pa\'zdziernika\or listopada\or grudnia%
+%%\fi}
+%%\def\makefootline{\baselineskip18pt\null\hrule\null\baselineskip12pt
+%% \line{\it\oktime\quad \the\day\ \monthnazwa\ \the\year\
+%% \hfill\llap{\tentex page \the\pageno}}}
+%%%%-------------------------------------------------------------------------
+%%%% our headline:
+%%\font\TT pltt12 scaled\magstep2
+%%\headline{\vbox to 0pt{\vss
+%% \rightline{\TT\uppercase\expandafter{\jobname.mf}}\vskip5mm}}
+%% %-------------------------------------------------------------------------
+
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl_cud.mf b/Master/texmf-dist/fonts/source/public/pl/pl_cud.mf
new file mode 100644
index 00000000000..aa930937443
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl_cud.mf
@@ -0,0 +1,146 @@
+% ---------------------------------------------------------------------------
+% This is PL_CUD.MF ({\bif{}polskie i francuskie cudzys\l{}owy}, i.e., Polish
+% and French quotation marks: ,, << and >>) in text format.
+% The program is based on excerpts from the COMLIG.MF and ROMSUB.MF files.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% In particular, only the authors are entitled to modify this file.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+%%% italcorr corrital
+%%% beginchar beginchar_twice
+%%% endfor repeat_once
+% ---------------------------------------------------------------------------
+
+cmchar "Polish opening quotes";
+if ligs>0:
+% in typical fonts the Polish opening quotation mark is based on COMLIG's
+% |"Closing quotes"|:
+beginchar(polish_opening_quotes,7u#+max(2u#,dot_size#),dot_size#,
+ comma_depth#);
+ adjust_fit(0,0);
+ x2+.5dot_size=hround(w-1.2u);
+ y2+.5dot_size=h;
+ x2-x1=hround(1.5u+max(2u,dot_size));
+ y2=y1;
+ comma(1,a,dot_size,.25u,comma_depth); % left dot and tail
+ comma(2,b,dot_size,.25u,comma_depth); % right dot and tail
+ penlabels(1,2);
+else:
+% in tt-like fonts the Polish opening quotation mark are based on ROMSUB's
+% |"Straight double quote"|:
+beginchar(polish_opening_quotes,9u#,asc_height#,0);
+ numeric top_width#,spread#,shifth_down;
+ top_width#=if serifs: flare# else: stem# fi;
+ spread#=max(3u#,top_width#+.5u#); define_pixels(spread);
+ adjust_fit(0,0);
+ numeric the_shift;
+ x1=x2; x3=x4=w-x1; x3-x1=spread+2; y1=y3;
+ y2=y4=max(.5[bar_height,x_height]+.5vair,h-x_height)-the_shift;
+ if serifs:
+ y1=flare/2; the_shift=h-.5stem-y1;
+ pickup crisp.nib;
+ pos1(flare,0); pos2(vair,0); pos3(flare,0); pos4(vair,0);
+ filldraw circ_stroke (z1e--z2e); % left stem and bulb
+ filldraw circ_stroke (z3e--z4e); % right stem and bulb
+ else:
+ top y1=stem; the_shift=h-y1;
+ pickup fine.nib;
+ pos1(stem,0); pos2(vair,0); pos3(stem,0); pos4(vair,0);
+ filldraw stroke z1e--z2e; % left stem
+ filldraw stroke z3e--z4e; % right stem
+ fi
+ charht:=dot_size#; chardp:=desc_depth#;
+ penlabels(1,2,3,4);
+fi
+endchar;
+% ------------------------------------------------------------------------
+cmchar "French opening quotes";
+beginchar_twice(
+ if not serifs or monospace:
+ french_opening_quotes,9u#,2bar_height#,0
+ else:
+ french_opening_quotes,10u#,2bar_height#,0
+ fi
+ );
+ adjust_fit(0,0);
+ pickup fine.nib;
+ numeric the_shift,shift_corr;
+ the_shift=hround(max(3u,1.7stem)); shift_corr=the_shift-3u;
+ pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0);
+ rt x1r=rt x3r=hround(5u-shift_corr)-eps;
+ lft x2l=hround(if not monospace: 2 fi\\ u-shift_corr)-eps;
+ bot y3=0; y2=good.y(h/2); top y1=2y2;
+ for i:=1,2,3:
+ forsuffixes $:=r, ,l: z[i]'$=z[i]$ + the_shift*right; endfor
+ endfor
+ if not serifs or monospace:
+ filldraw stroke z1e--z2e--z3e; filldraw stroke z1'e--z2'e--z3'e;
+ else:
+ filldraw stroke
+ z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}..
+ {(x3e-x2e),1.8(y3e-y2e)}z3e;
+ filldraw stroke
+ z1'e{(x2'e-x1'e),1.8(y2'e-y1'e)}..{curl1}z2'e{curl1}..
+ {(x3'e-x2'e),1.8(y3'e-y2'e)}z3'e;
+ fi;
+% italic correction is set to |0| in |beginchar|, so let's correct it
+ corrital z1'r;
+ penlabels(1,2,3,1',2',3');
+repeat_once
+endchar; % French opening quotes
+% ------------------------------------------------------------------------
+cmchar "French closing quotes";
+ beginchar_twice(
+ if not serifs or monospace:
+ french_closing_quotes,9u#,2bar_height#,0
+ else:
+ french_closing_quotes,10u#,2bar_height#,0
+ fi
+ );
+ adjust_fit(0,0);
+ pickup fine.nib;
+ numeric the_shift,shift_corr;
+ the_shift=hround(max(3u,1.7stem)); shift_corr=the_shift-3u;
+ pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0);
+ lft x1l=lft x3l=w-hround(5u-shift_corr)+eps;
+ rt x2r=w-hround(if not monospace: 2 fi\\ u-shift_corr)+eps;
+ bot y3=0; y2=good.y(h/2); top y1=2y2;
+ for i:=1,2,3:
+ forsuffixes $:=r, ,l: z[i]'$=z[i]$ + the_shift*left; endfor
+ endfor
+ if not serifs or monospace:
+ filldraw stroke z1e--z2e--z3e; filldraw stroke z1'e--z2'e--z3'e;
+ else:
+ filldraw stroke
+ z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}..
+ {(x3e-x2e),1.8(y3e-y2e)}z3e;
+ filldraw stroke
+ z1'e{(x2'e-x1'e),1.8(y2'e-y1'e)}..{curl1}z2'e{curl1}..
+ {(x3'e-x2'e),1.8(y3'e-y2'e)}z3'e;
+ fi;
+% italic correction is set to |0| in |beginchar|, so let's correct it
+ corrital z2r;
+ penlabels(1,2,3,1',2',3');
+repeat_once
+endchar; % French closing quotes
+% ------------------------------------------------------------------------
+if ligs>0: % no ligatures in tt fonts
+ ligtable ",": "," =: polish_opening_quotes;
+ ligtable "<": "<" =: french_opening_quotes;
+ ligtable ">": ">" =: french_closing_quotes;
+fi
+% ------------------------------------------------------------------------
+endinput;
+%%\end
+
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl_dl.mf b/Master/texmf-dist/fonts/source/public/pl/pl_dl.mf
new file mode 100644
index 00000000000..bb1cc5b3629
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl_dl.mf
@@ -0,0 +1,314 @@
+% ---------------------------------------------------------------------------
+% This is PL_DL.MF ({\bif{}du\.ze polskie litery}, i.e., uppercase Polish
+% letters: A and E with ogonek, crossed L, accented C, N, O, S, Z,
+% and dotted Z) in text format.
+% The program is based on excerpts from the ROMANU.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF ADAPTATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+%%% fine fisp
+%%% beginchar beginchar_twice
+%%% endfor repeat_once
+% ---------------------------------------------------------------------------
+
+cmchar "The letter A with ogonek";
+beginchar(ogonked_A,13u#,cap_height#,the_ogonek_depth);
+ adjust_fit(cap_serif_fit#,cap_serif_fit#);
+ numeric left_stem,right_stem,outer_jut,alpha;
+ right_stem=cap_stem-stem_corr;
+ left_stem=min(cap_hair if hefty: -3stem_corr fi,right_stem);
+ outer_jut=.8cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.5u; y1=y4=0;
+ x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o+apex_oo;
+ alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
+ penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
+ penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
+ z0=whatever[z1r,z2r]=whatever[z3l,z4l];
+ if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
+ fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)
+ --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
+ ...{up}z0+.5left--cycle; % left and right diagonals
+ else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
+ --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
+ penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2];
+ penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5;
+ if hefty: y5r else: y5 fi =5/12y0;
+ y5r-y5l=y6r-y6l=cap_band; penstroke z5e--z6e; % bar line
+ if serifs: numeric inner_jut; pickup tiny.nib;
+ prime_points_inside(1,2); prime_points_inside(4,3);
+ if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut: inner_jut=cap_jut;
+ else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
+ dish_serif(1',2,a,1/2,outer_jut,b,.6,inner_jut)(dark); % left serif
+ dish_serif(4',3,c,1/2,inner_jut,d,1/3,outer_jut); fi % right serif
+ penlabels(0,1,2,3,4,5,6);
+ def the_pen=if known ogonek_pen: ogonek_pen
+ elseif serifs: tiny elseif is_bold: fisp else: fine fi
+ enddef;
+ ogonek_breadth=if serifs and is_bold: slab else: xvair fi;
+% |diag_end| refers to |tiny| pen, hence |tiny| in the following equation:
+ ogonek_pos=(x4 if not serifs: l if is_bold: +.75tiny fi\\ fi,.5the_pen)
+ if serifs and not is_egyptian: +(.5xvair,0) fi;
+ put_ogonek(the_pen);
+endchar; % A with ogonek
+
+cmchar "The letter accented C";
+if serifs: beginchar_twice(accented_C,13u#,cap_height#,0);
+ italcorr cap_height#*slant-.5u#;
+ adjust_fit(0,0);
+ pickup fine.nib; pos1(cap_hair,0); pos2(cap_band,90);
+ pos3(cap_curve,180); pos4(cap_band,270); pos5(hair,360);
+ rt x1r=rt x5r=hround(w-u); lft x3r=hround u; x2=x4=.55[x3,x1];
+ top y2r=h+o; bot y4r=-o; y3=.5[y2,y4];
+ bot y1=min(vround max(.6h,x_height-.5vair),bot y2l-eps);
+ y5=max(good.y .95(h-y1),y4l+eps);
+ (x2l',y2l)=whatever[z2r,z1l]; x2l:=min(x2l',x2l+.5u);
+ (x4l',y4l)=whatever[z4r,z5l]; x4l:=min(x4l',x4l+.5u);
+ filldraw stroke z1e{x2-x1,10(y2-y1)}
+ ...pulled_arc.e(2,3) & pulled_arc.e(3,4)...{up}z5e; % arc
+ pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=h+o;
+ x1r-x1'=2cap_curve-fine; y1'=y1;
+ path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left};
+ numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1'));
+ filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb
+ penlabels(1,1',2,3,4,5,6);
+ put_accent;
+ repeat_once
+else: beginchar_twice(accented_C,11.5u#,cap_height#,0);
+ italcorr cap_height#*slant-.5u#;
+ adjust_fit(0,0);
+ pickup fine.nib; pos1(1.2flare,80); pos2(slab,90);
+ pos3(cap_curve,180); pos4(slab,270); pos5(flare,275);
+ rt x1r=hround(w-1.1u); x2=x4=.5w+1.25u;
+ lft x3r=hround max(u,2u-.5cap_curve); rt x5r=hround(w-.9u);
+ top y1r=vround .95h+o; top y2r=h+o; y3=.5h;
+ bot y4r=-o; bot y5r=vround .08h-o; y5l:=good.y y5l; x5l:=good.x x5l;
+ filldraw stroke rterm.e(2,1,right,.9,4) & super_arc.e(2,3)
+ & super_arc.e(3,4) & term.e(4,5,right,.8,4);
+ penlabels(1,1',2,3,4,5,6);
+ put_accent;
+ repeat_once
+ fi % arc and terminals
+endchar; % accented C
+
+cmchar "The letter E with ogonek";
+beginchar(ogonked_E,12u#-width_adj#,cap_height#,the_ogonek_depth);
+ italcorr cap_height#*slant-beak_jut#-.5u#;
+ adjust_fit(cap_serif_fit#,0);
+ h:=vround(h-stem_corr);
+ pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+ lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+ filldraw stroke z1e--z2e; % stem
+ pickup crisp.nib; pos3(slab,90); pos4(hair,0);
+ top y3r=h; x3=x1; rt x4r=hround(w-u); y4=good.y(y3l-beak)-eps;
+ arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak
+ pos5(cap_bar,-90); pos6(hair,0);
+ top y5l=vround(.52[y2,y1]+.5cap_bar); x5=x1;
+ pos0(cap_bar,90); pos7(hair,0);
+ z0=z5; x6=x7; y6-y5l=y0l-y7;
+ if serifs: rt x6r=hround(w-4.4u+.5hair); y6=good.y(y5l+.6beak)+eps;
+ rt x9r=hround(w-.5u);
+ else: rt x6r=hround(w-1.5u); y6=y5l+eps; rt x9r=hround(w-.75u); fi
+ arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif
+ pos8(slab if not serifs:+2stem_corr fi,-90); pos9(hair,0);
+ bot y8r=0; x8=x2; y9=good.y(y8l+7/6beak)+eps;
+ arm(8,9,h,beak_darkness,1.5beak_jut); % lower arm and beak
+ if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
+ penlabels(0,1,2,3,4,5,6,7,8,9);
+ def the_pen=if known ogonek_pen: ogonek_pen
+ elseif serifs: tiny elseif is_bold: fisp else: fine fi
+ enddef;
+ ogonek_breadth=if serifs and is_bold: slab else: xvair fi;
+ ogonek_pos=
+ (x.h0-if serifs: 2 else: if is_bold: 1.5 else: 1.75 fi\\ fi\\ u,.5the_pen)+
+ .5 ogonek_breadth*if is_egyptian: origin elseif serifs: right else: left fi;
+ put_ogonek(the_pen);
+endchar; % E with ogonek
+
+cmchar "The letter crossed L";
+beginchar_twice(crossed_L,11u#-width_adj#,cap_height#,0);
+ adjust_fit(cap_serif_fit# if not serifs: +1.5u# fi,0);
+ pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+ lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+ filldraw stroke z1e--z2e; % stem
+ pickup crisp.nib; pos3(slab,-90); pos4(hair,0);
+ bot y3r=0; x3=x2; y4=y3l+7/6beak+eps; rt x4r=hround(w-.75u);
+ arm(3,4,e,1.2beak_darkness,beak_jut); % lower arm and beak
+ if serifs: dish_serif(1,2,a,1/3,cap_jut,b,1/3,1.25cap_jut); % upper serif
+ nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
+ penlabels(1,2,3,4);
+% some funny fonts have an extremally small |cap_jut|:
+ put_cross(.5cap_stem+if serifs: .9max(limit_dist,cap_jut) else: 1.8u fi,
+ .5cap_stem+3u);
+ repeat_once
+endchar; % crossed L
+
+cmchar "The letter accented N";
+beginchar_twice(accented_N,13u#+width_adj#,cap_height#,0);
+ italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
+ adjust_fit(cap_serif_fit#,cap_serif_fit#);
+ numeric thin_stem; thin_stem=hround(fudged.hair+stem_corr);
+ pickup tiny.nib; pos1(thin_stem,0); pos2(thin_stem,0);
+ pos3(thin_stem,0); pos4(thin_stem,0);
+ pickup tiny.nib; top y1=top y3=h; bot y2=bot y4=0;
+ x1=x2; x3=x4; x1l=w-x3r;
+ rt x3r=hround min(w-2u,w-3u+.5fudged.cap_stem);
+ filldraw stroke z1e--z2e; % left stem
+ filldraw stroke z3e--z4e; % right stem
+ if hefty: penpos5(fudged.cap_stem,0); penpos6(fudged.cap_stem,0);
+ x5l=x1; x6r=x4; y5=h; y6=0;
+ numeric upper_notch,lower_notch;
+ upper_notch=h-cap_notch_cut; lower_notch=cap_notch_cut;
+ x1'=rt x1r; z1'=whatever[z5l,z6l]; x4'=lft x4l; z4'=whatever[z5r,z6r];
+ fill z5l..
+ if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi
+ {z6-z5}diag_in(5l,6l,1,6r)--z6r..
+ if y4'>lower_notch: {left}(x4'-1,lower_notch){up}... fi
+ {z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonal
+ else: penpos5(whatever,0); penpos6(whatever,90);
+ z5l=z1l; z6l=z4l;
+ z7=z6l+(max(eps,cap_stem-3stem_corr-tiny),0) rotated (angle(z5l-z6l)-90);
+ z5r=z7+whatever*(z5l-z6l); z6r=z7+whatever*(z5l-z6l);
+ filldraw stroke z5e..z6e; fi % diagonal
+ if serifs: if hefty: serif(1,2,a,1/3,-cap_jut); % upper left serif
+ else: serif(5,6,a,1/3,-cap_jut); fi % upper left serif
+ dish_serif(2,1,b,1/2,cap_jut,c,1/2,cap_jut)(dark); % lower left serif
+ dish_serif(3,4,e,1/2,cap_jut,f,1/2,cap_jut)(dark); fi % upper right serif
+ penlabels(1,1',2,3,4,4',5,6,7);
+ hpos_corr=-.75u; put_accent;
+ repeat_once
+endchar; % accented N
+
+cmchar "The letter accented O";
+beginchar_twice(accented_O,14u#-width_adj#,cap_height#,0);
+ italcorr .7cap_height#*slant-.5u#;
+ adjust_fit(0,0);
+ penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90);
+ penpos2(cap_curve,180); penpos4(cap_curve,0);
+ if monospace: x2r=hround 1.5u;
+ interim superness:=sqrt superness; % make |"O"|, not |"0"|
+ else: x2r=hround u; fi
+ x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o;
+ y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
+ penstroke pulled_super_arc.e(1,2)(.5superpull)
+ & pulled_super_arc.e(2,3)(.5superpull)
+ & pulled_super_arc.e(3,4)(.5superpull)
+ & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl
+ penlabels(1,2,3,4);
+ hpos_corr=-.75u; put_accent;
+ repeat_once
+endchar; % accented O
+
+cmchar "The letter accented S";
+beginchar_twice(accented_S,10u#,cap_height#,0);
+ italcorr cap_height#*slant-u#;
+ adjust_fit(0,0);
+ numeric theta; theta=90-angle(50u,h); slope:=-h/50u; % angle at middle
+ numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi;
+ numeric ess'; ess'=max(fine.breadth,cap_ess);
+ pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
+ pos0(ess',theta); pos7(s_slab,-90);
+ x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o;
+ y0=.52h; lft x3l=hround u; rt x6r=hround(w-u);
+ x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
+ ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
+ ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
+ filldraw stroke super_arc.e(2,3) & z3e{down}
+ ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
+ if serifs: pos1(hair,180); pos8(hair,180);
+ rt x1l=hround(w-1.5u); lft x8r=hround u;
+ bot y1=vround 2/3h+1; top y8=vround 1/3h-1;
+ filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc
+ filldraw stroke z7e{left}....{up}z8e; % lower arc
+ path upper_arc, lower_arc;
+ upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2;
+ lower_arc=z7{left}....{up}z8;
+ pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0);
+ x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
+ filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9r--z8'));
+ filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
+ else: pos1(1.2flare,-100); pos8(1.2flare,-100);
+ x1l=good.x(x1l+w-1.75u-rt x1); lft x8r=hround .8u;
+ top y1l=vround .93h+o; bot y8r=vround .1h-o;
+ filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal
+ filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal
+ penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10);
+ hpos_corr=-u; put_accent;
+ repeat_once
+endchar; % accented S
+
+cmchar "The letter accented Z";
+beginchar_twice(accented_Z,11u#,cap_height#,0);
+ italcorr cap_height#*slant-.5u#;
+ adjust_fit(0,0);
+ numeric arm_thickness[\\],z_stem;
+ if hefty: arm_thickness1=Vround(slab-vair_corr); arm_thickness2=slab;
+ z_stem=.8[vair,cap_stem];
+ else: arm_thickness1=slab; arm_thickness2=vround(slab+vair_corr);
+ z_stem=.9[vair,cap_stem]; fi
+ pickup tiny.nib; x3l=x4l=w-x1r=w-x2r; lft x3l=hround u;
+ top y1=h; y2=min(y1,h-2/3arm_thickness1);
+ bot y4=0; y3=max(y4,2/3arm_thickness2);
+ numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l);
+ penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
+ penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
+ pair delta; delta=penoffset z3-z2 of currentpen;
+ fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
+ ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
+ ---cycle; % diagonal
+ pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
+ top y5r=h; x5=x1; lft x6r=hround 1.25u; y6=good.y(y5l-beak)-eps;
+ arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak
+ pos7(arm_thickness2,-90); pos8(hair,0);
+ bot y7r=0; x7=x4; rt x8r=hround(w-.9u); y8=good.y(y7l+1.2beak)+eps;
+ arm(7,8,b,beak_darkness**.9,.6beak_jut); % lower arm and beak
+ penlabels(1,2,3,4,5,6,7,8);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar; % accented Z
+
+cmchar "The letter dotted Z";
+beginchar_twice(dotted_Z,11u#,cap_height#,0);
+ italcorr cap_height#*slant-.5u#;
+ adjust_fit(0,0);
+ numeric arm_thickness[\\],z_stem;
+ if hefty: arm_thickness1=Vround(slab-vair_corr); arm_thickness2=slab;
+ z_stem=.8[vair,cap_stem];
+ else: arm_thickness1=slab; arm_thickness2=vround(slab+vair_corr);
+ z_stem=.9[vair,cap_stem]; fi
+ pickup tiny.nib; x3l=x4l=w-x1r=w-x2r; lft x3l=hround u;
+ top y1=h; y2=min(y1,h-2/3arm_thickness1);
+ bot y4=0; y3=max(y4,2/3arm_thickness2);
+ numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l);
+ penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
+ penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
+ pair delta; delta=penoffset z3-z2 of currentpen;
+ fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
+ ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
+ ---cycle; % diagonal
+ pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
+ top y5r=h; x5=x1; lft x6r=hround 1.25u; y6=good.y(y5l-beak)-eps;
+ arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak
+ pos7(arm_thickness2,-90); pos8(hair,0);
+ bot y7r=0; x7=x4; rt x8r=hround(w-.9u); y8=good.y(y7l+1.2beak)+eps;
+ arm(7,8,b,beak_darkness**.9,.6beak_jut); % lower arm and beak
+ penlabels(1,2,3,4,5,6,7,8);
+ put_dot(tiny,max(dot_size#,cap_curve#));
+ repeat_once
+endchar; % dotted Z
+
+endinput;
+%%\end
+
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl_dod.mf b/Master/texmf-dist/fonts/source/public/pl/pl_dod.mf
new file mode 100644
index 00000000000..0ee4de52785
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl_dod.mf
@@ -0,0 +1,832 @@
+% ---------------------------------------------------------------------------
+% This is PL_DOD.MF ({\bif{}dodatkowy}, i.e., additional file for the Polish
+% extension of CM family) in text format.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% In particular, only the authors are entitled to modify this file.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+%%{\let\:\sl
+%\: This file provides accessories for making Polish diacritical characters:
+%\: acute accent for |"C"|, |"N"|, |"L"|, |"S"|, |"Z"|, dot accent for |"Z"|,
+%\: cross for |"L"| and ogonek for |"A"| and |"E"|. In order to avoid extra
+%\: parameters (62 should be enough) the macros do a lot of ``clever'' stuff,
+%\: trying to figure out needed dimensions. This is not always a trivial
+%\: task and in some cases such extra parameters may prove to be unavoidable.
+%\: Several additional parameters may be assigned a value, prior to reading
+%\: the driver file, in order to override the default behaviour.
+
+%\: One of them is
+%\: --- the factor controlling the slope of accents over majuscules,
+%\: |cap_flat|; if the default slope is, say, $\beta$, the resulting
+%\: slope is equal to |(1-cap_flat)*|$\beta$; this parameter is used
+%\: in the sources of the following fonts:
+%\ PLCSC10, PLDUNH10, PLTCSC10
+
+%\: Unexpectedly difficult to program turned out to be ogoneks. We decided
+%\: that the best looking are ogoneks such that a single B\`ezier segment
+%\: describes each of ogonek's edges. This necessitated introducing many
+%\: parameters controlling the positions of control points (for more details
+%\: see comments in the section ``OGONEK ACCESSORIES''). All these
+%\: (optional) parameters may be splitted into three groups of importance:
+%\: primary, secondary and tertiary. The primary parameters are intended
+%\: to be ``normally'' accessible to users, the secondary ones---only in
+%\: case of emergency, the tertiary ones---rather not at all.
+
+%\: The primary parameters are:
+
+%\: --- the factor controlling the depth of ogoneks, |depth_corr|; the
+%\: resulting depth is equal to |depth_corr*desc_depth#| if the value
+%\: of |depth_corr| is known, |desc_depth#| otherwise
+%\: --- the factor controlling the leftmost and tip positions
+%\: of an ogonek, |left_corr|, |tip_xcorr| and |tip_ycorr|;
+%\: the default distances are scaled using the values of the
+%\: corresponding parameters
+%\: --- the scaling factor for the top and tip breadths of an ogonek,
+%\: |top_breadth_corr|, |tip_breadth_corr|
+
+%\: Some of the primary parameters are used in the sources of the following
+%\: fonts:
+% PLB10, PLBX5, PLBX6, PLBX7, PLBX8, PLFI10, PLITT10, PLR5, PLR6, PLR7,
+% PLR8, PLR9, PLR12, PLR17, PLSL8, PLSL9, PLSL12, PLSSQ8, PLSSQI8, PLTI7,
+% PLTI8, PLTI12, PLVTT10
+
+%\: The following four parameters we regard as of a secondary importance:
+
+%\: --- the pen ogoneks are to be filled with, |ogonek_pen#| (this is
+%\: the only sharp ogonek parameter and is used in the sources of
+%\: the {\commfont{}PLFF10} and {\commfont{}PLFI10} fonts)
+%\: --- the darkness of ogoneks may be controlled using two parameters,
+%\: |0<pre_lightness<1| and |0<post_lightness<1|, referring to the top
+%\: and tip of an ogonek, respectively; used in {\commfont{}PLB10.MF}
+%\: --- next two parameters, |pre_deflexion| and |post_deflexion|, control
+%\: a rather small deflexion angle (in degrees) of the inner ogonek
+%\: outline as compared to the outer one; they refere to the top and
+%\: tip of an ogonek, respectively
+
+%\: The complete list of `ogonek' parameters can be found in the section
+%\: ``OGONEK ACCESSORIES.''
+
+%\: There is one more (rather unimportant) parameter, |is_smoke|. If this
+%\: variable is assigned a known value, `smoked' proofs will not contain
+%\: a rule marking the height of accented letters.
+%%}
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+% LAYOUT SETUP:
+% (A MIXTURE OF EXTENDED CM, EXTENDED ASCII, AND ``LOCAL'')
+% ---------------------------------------------------------------------------
+% Polish letters are in the positions of extended CM layout:
+
+def polish_uc_positions =
+ ogonked_A:=oct"201"; % 129
+ accented_C:=oct"202"; % 130
+ ogonked_E:=oct"206"; % 134
+ crossed_L:=oct"212"; % 138
+ accented_N:=oct"213"; % 139
+ accented_O:=oct"323"; % 211
+ accented_S:=oct"221"; % 145
+ accented_Z:=oct"231"; % 153
+ dotted_Z:=oct"233"; % 155
+enddef;
+
+def polish_lc_positions =
+ ogonked_a:=oct"241"; % 161
+ accented_c:=oct"242"; % 162
+ ogonked_e:=oct"246"; % 166
+ crossed_l:=oct"252"; % 170
+ accented_n:=oct"253"; % 171
+ accented_o:=oct"363"; % 243
+ accented_s:=oct"261"; % 177
+ accented_z:=oct"271"; % 185
+ dotted_z:=oct"273"; % 187
+enddef;
+
+% French quotation marks are in the positions of extended ASCII layout,
+% while Polish opening quotation mark is in the position of ASCII 255:
+
+def quotes_positions =
+ french_opening_quotes:=174; % <<
+ french_closing_quotes:=175; % >>
+ % exceptionally:
+ polish_opening_quotes:=255; % ,,
+enddef;
+
+polish_uc_positions; polish_lc_positions; quotes_positions;
+% ---------------------------------------------------------------------------
+% EXTRA PARAMETERS
+% ---------------------------------------------------------------------------
+% The variable |improve_kerns| should not be set to |true| if one wants
+% to have PL fonts compatible with respective CM ones; thus the commands
+% |if improve_kerns| ... |fi| may be regarded as comments (see also the files
+% POLAN.MF, POLKUR.MF, POLTYT.MF and POLKAP.MF).
+if unknown improve_kerns: boolean improve_kerns; improve_kerns=false; fi;
+
+if unknown is_small_cap: boolean is_small_cap; is_small_cap=false; fi;
+
+% The variable |limit_dist| is used in an argument to |put_cross| in
+% PL_DL.MF, PL_ML.MF, and PL_MLK.MF. It was introduced because of some
+% funny (although troublesome) fonts. The value of |u| is corrected by
+% |adjust_fit|, hence |limit_dist| is defined useng |vardef| and |u#|
+vardef limit_dist = 5/4u#*hppp enddef;
+
+% The proportion of |vair/stem| depends drastically on resolution;
+% e.g., for 300 dpi cmbx10 |vair=1| and |stem=5|, for 746 dpi cmbx10
+% (300 dpi, magstep 5) |vair=4| and |stem=12|, while, sharply speaking,
+% |stem#/vair#=3.15381|; hence a new variable |xvair| has been introduced
+% to be used in some crucial places instead of |vair|.
+vardef xvair = stem*vair#/stem# enddef;
+
+% In particular, |qvair| (``quote vair'') is defined using |xvair|.
+vardef qvair = max(round(xvair),fine+epsilon) enddef;
+% ---------------------------------------------------------------------------
+% GENERAL PURPOSE ACCESSORIES
+% ---------------------------------------------------------------------------
+vardef is_egyptian =
+% |false| for most of the CM fonts, except funny fonts;
+% |true| for the CC fonts
+ serifs and (1.4max(fine#,crisp#, tiny#)<slab#) and (1.6slab#>stem#)
+enddef;
+
+vardef is_bold = if serifs: (hair#+.5stem#)>1.5u# else: stem#>2u# fi\\ enddef;
+
+vardef is_cap =
+ (charcode=ogonked_A) or (charcode=accented_C) or (charcode=ogonked_E)\\ or
+ (charcode=crossed_L) or (charcode=accented_N) or (charcode=accented_O)\\ or
+ (charcode=accented_S) or (charcode=accented_Z) or (charcode=dotted_Z)
+enddef;
+
+%%% top is_known
+%%% top fix_virgin
+vardef is_known z suffix $ =
+% an auxiliary macro for |fix_virgin z|, used also while constructing ogoneks
+ (known x$) or (known x$l) or (known x$r)\\ or
+ (known y$) or (known y$l) or (known y$r)
+enddef;
+
+vardef fix_virgin z = % find a pair of virgin pairs
+ numeric ii,jj; jj:=1;
+ forever:
+ if is_known z[jj] or is_known z[jj+1]: % unknown gaps may occur
+ jj:=incr jj else: jj=ii fi; exitif known ii;
+ endfor;
+ jj:=ii+1;
+% now |ii+1=jj| and |z[ii]| and |z[jj]| are ``untouched''
+enddef;
+
+%%% italcorr corrital
+% correction of italic correction (cf. D. E. Knuth, The \MF{}book, p. 105):
+vardef corrital z suffix $ =
+% |z$| is the rightmost position of a pen (in accent path)
+ if known sharp_calc:
+ if not monospace:
+ save charic_; charic_=(rt(x$)-r)/hppp+slant*y$/vppp+.5u#;
+ if charic_>charic: charic:=charic_; fi
+ fi
+%| else: %| |charic=mono_charic#|, do nothing
+ fi
+enddef;
+
+%%% fine hi higher
+% |higher| is a counterpart to |lower| (see the file POLKAP.MF),
+% |hi| facilitates using higher values (which are reference points in
+% the floating world of CM fonts)
+def hi = if is_small_cap: higher fi\\ enddef;
+
+%%% top prepare_pen
+def prepare_pen suffix $ =
+%%% fine $ %%%% temporary MFT convention
+ if $>fudged.hair: $:=fudged.hair; fi
+ $.breadth:=$;
+ pickup if $=0: nullpen else: pencircle scaled $; $:=$-eps fi;
+ $.nib:=savepen; breadth_[$.nib]:=$;
+ forsuffixes $$=lft,rt,top,bot: shiftdef($.$$,$$ 0); endfor
+%%% qq $ %%%% ordinary MFT convention
+enddef;
+% ---------------------------------------------------------------------------
+% ACCENT ACCESSORIES
+% ---------------------------------------------------------------------------
+% |the_cap_flat| is a factor controlling the flatness of accents over
+% majuscules; a default value may be overriden by assigning a value to the
+% variable |cap_flat| (cf. also |the_|... macros in ogonek accessories).
+vardef the_cap_flat =
+ if known cap_flat: cap_flat elseif serifs and hefty: 1/5 else: 1/3 fi
+enddef;
+% ---------------------------------------------------------------------------
+% The |hpos_corr| variable is an optional parameter to |put_ogonek|, meant
+% to be set locally inside |beginchar| ... |endchar|, if a horizontal
+% correction of the accent position is needed:
+numeric hpos_corr;
+% ---------------------------------------------------------------------------
+%%%% temporary MFT convention:
+%%% top x_height diam a_wd a_ht i_ht u asc_height cap_A_wd
+% width of the acute accent:
+vardef a_wd@# = 9hi.u@# enddef;
+% height of the acute accent:
+vardef a_ht@# = min(asc_height@#,2hi.x_height@#) enddef;
+% height of the letter `i':
+vardef i_ht@#(suffix diam) =
+ if is_small_cap: a_ht@# % usually there is no dot over a small cap `i'
+ else: min(asc_height@#, 10/7hi.x_height@#+.5diam@#) fi
+enddef;
+% width of the letter `A' (used in |put_ogonek|):
+vardef cap_A_wd@# = 13u@# enddef;
+%%%% ordinary MFT convention:
+%%% qq x_height diam a_wd a_ht i_ht u asc_height cap_A_wd
+
+def mark_height(expr sharp_h)=
+% |sharp_h| is the height of an accented minuscule
+ if known sharp_calc:
+ charht:=if is_cap: h/vppp else: sharp_h fi;
+ if\\ (proofing>0) and is_cap:
+% BJ likes to have proofs vertically aligned (somehow):
+ proofoffset(0,h-charht*vppp-1mm);
+ fi
+ fi
+% say earlier, e.g., |is_smoke=1| if you're making `smoked' proofs
+% and you don't like to have a rule marking the height
+ if unknown is_smoke:
+ if proofing>0: proofrule((l+w/2,charht*hppp)t_,(r+u,charht*hppp)t_); fi
+ if displaying>0: screenrule((l+w/2,charht*hppp)t_,(r+u,charht*hppp)t_); fi
+ fi
+enddef;
+
+def fix_acc_pairs =
+ fix_virgin z;
+ begingroup
+% excerpt from |beginchar|:
+ save w,h; w=round(a_wd); h=round(a_ht);
+% excerpt from |mono_adjust|:
+ if monospace:
+ save u_; numeric u_; u_:=hi.u#; save u; u#:=u_;
+ numeric expansion_factor;
+ mono_charwd#=2 hi.letter_fit#+expansion_factor*a_wd#;
+ hi.u:=u#*expansion_factor*hppp;
+ w:=mono_charwd-shrink_fit-2 hi.letter_fit;
+ fi
+% end of the excerpts
+ numeric accent_gap,mid_stem; mid_stem=2/3[stem,hi.stem];
+ if serifs:
+ pickup crisp.nib;
+ x[jj]'=hround(w-2hi.u)-.5mid_stem; x[jj]':=x[jj]'-2/3[x[jj]',w-x[jj]'];
+ y[jj]'=h-.5mid_stem+eps-max(2/3[h,hi.x_height],hi.x_height+o+hair);
+ accent_gap=a_ht-(y[jj]'+.5mid_stem)-hi.x_height;
+ bot z[ii]=round(accent_hpos,
+ accent_gap+if is_cap: cap_height else: hi.x_height fi);
+ z[jj]=z[ii]+(z[jj]'
+ if is_cap: rotated (-the_cap_flat*angle(z[jj]')) fi);
+ numeric theta; theta=angle(z[ii]-z[jj])+90;
+ pos[jj](mid_stem,theta); pos[ii](hair,theta);
+ else:
+ pickup fine.nib;
+ rt x[jj]'r=hround(.5w-1.25hi.u);
+ top y[jj]'=h-vround(2/3[h,hi.x_height]);
+ z[ii]'=origin; pos[jj]'(mid_stem,0); pos[ii]'(vair,0);
+ accent_gap=a_ht-y[jj]'-hi.x_height;
+ if is_cap:
+ numeric beta; beta=-the_cap_flat*angle(z[jj]'-z[ii]');
+ z[ii]=round(accent_hpos,accent_gap+cap_height);
+ z[jj]=z[ii]+(z[jj]' rotated beta);
+ y[jj]r=y[jj]l=y[jj]; y[ii]r=y[ii]l=y[ii];
+ for xx:=jj,ii: forsuffixes $:=l,r:
+ (z[xx]$-z[ii]) rotated -beta=whatever[z[jj]'$,z[ii]'$];
+ endfor\\ endfor
+ else:
+ for xx:=jj,ii: forsuffixes $:=r, ,l:
+ z[xx]$=z[xx]'$+round(accent_hpos,
+ accent_gap+if is_small_cap: cap_height else: x_height fi);
+ endfor\\ endfor
+ fi
+ fi
+ endgroup;
+enddef;
+
+def fix_acc_top =
+ save accent_hpos; accent_hpos=0; % the value does not matter here
+ fix_acc_pairs; % |fix_acc_pairs| uses private values of |w|, |h| \& |u|
+% |z[ii]$| and |z[jj]$| (|$= ,r,l|) are fixed temporarily, will be released
+% fix the y coordinate of the top point of accent:
+ if serifs:
+ pickup crisp.nib;
+ y.a_top:=ypart(directionpoint left of
+ (z[jj]r{z[jj]r-z[ii]r}..{z[ii]l-z[jj]l}z[jj]l)); y'a_top:=top y.a_top;
+ else:
+ pickup fine.nib; y.a_top:=ypart(z[jj]r); y'a_top:=top y.a_top;
+ fi
+% release |z[ii]$| and |z[jj]$| (|$= ,r,l|):
+ forsuffixes $= ,r,l:
+ x[ii]$:=whatever; y[ii]$:=whatever; x[jj]$:=whatever; y[jj]$:=whatever;
+ endfor
+enddef;
+
+def put_accent =
+ numeric accent_hpos;
+ accent_hpos=.5w - if is_cap: .75 else: .5 fi\\ u
+ if known hpos_corr: +hpos_corr fi;
+ fix_acc_pairs; % |fix_acc_pairs| uses private values of |w|, |h| \& |u|
+ numeric hpos_corr; % |hpos_corr| is local: forget its value
+% draw the diagonal:
+ if serifs:
+ pickup crisp.nib; filldraw circ_stroke (z[jj]e--z[ii]e);
+ z.right=directionpoint up of (z[jj]r{z[jj]r-z[ii]r}..{z[ii]l-z[jj]l}z[jj]l);
+ z.top=directionpoint left of (z[jj]r{z[jj]r-z[ii]r}..{z[ii]l-z[jj]l}z[jj]l);
+ else:
+ pickup fine.nib; filldraw stroke (z[jj]e--z[ii]e);
+ z.right=z.top=z[jj]r;
+ fi
+ corrital z.right; % correct italic correction
+% adjust height (the same height is used in the program for the dotted `Z'):
+ h:=if is_cap: y.top else: a_ht fi;
+ mark_height(a_ht#);
+ penlabels([ii],[jj]);
+enddef;
+% ---------------------------------------------------------------------------
+% DOT ACCENT ACCESSORIES
+% ---------------------------------------------------------------------------
+%%% good penkind
+def put_dot (suffix penkind) (expr sharp_d_d) = % the dot of the lc letter `i'
+% assumptions: for lowercase `z' the dot accent should be exactly the same
+% as the dot over `i'; a virtually contradictory demand is to be fullfiled
+% for capital `Z': the dot should have exactly the same shape as the dot
+% over dotted `z' (in any case, must not be smaller), not too close to
+% the top of `Z', and not protruding (too much) over the nominal height,
+% i.e., over the height of acute accent.
+ fix_acc_top;
+% now |y.a_top| and |y'a_top| are fixed; |y'a_top=top y.a_top| for a pen
+% appropriate for the acute accent
+ fix_virgin z;
+ save d_d_; % for sharp and discrete dot diameter
+ d_d_#=sharp_d_d; define_whole_blacker_pixels(d_d_);
+% compute the nominal height
+ h:=vround(
+ if charcode=dotted_Z: (cap_height#+i_ht#(d_d_)-hi.x_height#)
+ elseif charcode=dotted_z: % branch not used when |is_small_cap=true|
+ i_ht#(d_d_) fi\\ *hppp);
+ pickup penkind.nib; pos[jj](d_d_,90); pos[ii](d_d_,0);
+ x[jj]=x[ii]=good.x(.5w+if is_cap: .5 else: .25 fi\\ u);
+ top y[jj]r=h+1;
+ top y.i_top=if charcode=dotted_Z: cap_height else: x_height fi
+ if serifs: +min(oo,serif_drop) fi;
+ save gap_; gap_=bot y[jj]l-top y.i_top; % nominal gap between the dot and `z'
+% raise the lower edge of the dot if needed (cf. the code for the letter `i'
+% in ROMANL.MF):
+ if gap_ < slab: y[jj]l:=min(y[jj]r-eps,y.i_top+tiny+slab); fi
+ save ove_; ove_=top y[jj]r-y'a_top; % a nominal overshoot of the dot
+% lower the dot if needed (for dotted `Z' only):
+ if (charcode=dotted_Z) and (ove_>0):
+ save low_; % |low_| is to be the maximal acceptable lowering of the dot
+ low_=max(0,min(ove_,gap_-penkind)); % somewhat arbitrary formula...
+ forsuffixes $= ,l,r: y[jj]$:=y[jj]$-low_; endfor
+ fi
+ y[ii]=.5[y[jj]l,y[jj]r];
+% draw the dot:
+ dot([ii],[jj]);
+% dotted `Z' inherits the height of the accented `Z' which enables decreasing
+% by one the number of different heights in a font; dotted `z' has the height
+% of a lowercase `i' (exception: caps and small caps)
+ h:=y.a_top; mark_height(i_ht#(d_d_));
+ penlabels([ii],[jj]);
+enddef;
+% ---------------------------------------------------------------------------
+% L's CROSS ACCESSORIES
+% ---------------------------------------------------------------------------
+def put_cross(expr l_jut,r_jut) =
+ fix_virgin z;
+ numeric c_ht_; % height of the center of the cross
+ c_ht_=if is_cap: cap_bar else: bar fi;
+ numeric theta; theta=angle(11u#,.3[x_height#,cap_height#]);
+ pickup crisp.nib; pos[ii](c_ht_,theta+90); pos[jj](c_ht_,theta+90);
+ lft x[ii]r = hround(x1-l_jut)-eps;
+ rt x[jj]l = hround(x1+r_jut)+eps;
+ z[ii]-z[jj]=whatever*dir theta;
+% |.52| is one of CM (Computer Magic) numbers appearing in many CM programs,
+% among others in the programs for B, F, and H:
+ whatever[z[ii],z[jj]]=if not is_cap and hefty: top fi\\ (x1,.52cap_height);
+% |1/2[z[ii],z[jj]]| is now the center of the cross;
+% before drawing the stroke improve discretization:
+ save eps_;
+ eps_:=y[ii]l-good.y(y[ii]l);
+ forsuffixes $:=l, ,r: y[ii]$:=y[ii]$-eps_; endfor
+ eps_:=y[jj]r-good.y(y[jj]r);
+ forsuffixes $:=l, ,r: y[jj]$:=y[jj]$-eps_; endfor
+ filldraw stroke z[ii]e--z[jj]e; % now draw the stroke
+ corrital z[jj]l; % correct italic correction
+ penlabels([ii],[jj]);
+enddef;
+% ---------------------------------------------------------------------------
+% OGONEK ACCESSORIES
+% ---------------------------------------------------------------------------
+% This part is admittedly sophisticated, however, a wide spectrum of
+% different ogonek shapes is in fact to be programmed: one shape is needed
+% for caps, another for `a' with ogonek, yet another for `e' with ogonek,
+% as they all have different joins. Moreover, a sansserif ogonek differs
+% significantly from a serif one, a bold ogonek from a non-bold, an ogonek
+% for hefty fonts should still be different. And if you take into account
+% that the basic font unit |u| may change during one session of font
+% generation (monospace and caps-small-caps) and that a few different
+% pens may be used to draw a single letter, you'll understand why so many
+% |if| ... |else:| ... |fi| commands are used in the following code.
+%
+% Outer and inner edges of an ogonek (suffixed with |l| and |r|, resp.)
+% are single B\`ezier segments; the outer one, a path
+% |p=z_a..controls z_b and z_c ..z_d|
+% is constructed as follows: given pairs |z_a|, |z_d|, angles |alpha_a|,
+% |alpha_d| and two numbers |x_down|, |y_right|, find pairs |z_b| and |z_c|
+% such that the path |p| has the following properties:
+% (a) |direction p(z_a)=alpha_a|
+% (b) |direction p(z_d)=alpha_d-180|
+% (c) |direction p(x_down,some_y)=down|
+% (d) |direction p(some_x,y_right)=right|
+% The problem is solved using a ``double'' bisection method, provided
+% that appropriate limits |z_b'|, |z_b''| and |z_c'|, |z_c''| for |z_b|
+% and |z_c|, respectively, are given; more precisely,
+% |z_b=|$\lambda_b$|[z_b',zb'']| and |z_c=|$\lambda_c$|[z_c',zc'']|
+% is supposed to hold for given |z_b'|, |z_b''|, |z_c'|, |z_c''| and
+% some $0<\lambda_b,\lambda_c<1$.
+%
+% The inner edge is constructed by a careful modification of the outer one.
+%
+% If a default behaviour of our program is not satisfying, the user may
+% assign a value to the following ``emergency'' parameters (provided E knows
+% what E is doing):
+% |depth_corr|, |left_corr|, |top_breadth_corr|, |tip_breadth_corr|,
+% |tip_xcorr|, |tip_ycorr|, |pre_angle|, |post_angle|,
+% |pre_limit|, |post_limit|, |pre_lightness|, |post_lightness|,
+% |pre_deflexion|, and |post_deflexion|.
+% Any of these parameters, if known while generating a font, is used instead
+% of a default setting. The parameters are accessed only via macros:
+% |the_ogonek_depth|, |the_left_pos|, |the_top_breadth_corr|,
+% |the_tip_breadth_corr|, |the_tip_pos|,
+% |the_pre_angle|, |the_post_angle|, |the_pre_limit|, |the_post_limit|,
+% |the_pre_lightness|, |the_post_lightness|,
+% |the_pre_deflexion|, and |the_post_deflexion|.
+% There is one sharp ogonek parameter, |ogonek_pen#|; a respective pen is
+% defined at the end of this file (and once again in POLKAP.MF after
+% |font_setup|) and used in the files PL_DL.MF, PL_ML.MF, PL_MLK.MF.
+% Any parameter may have its |lower| variant (see the file POLKAP.MF).
+% ---------------------------------------------------------------------------
+% two handy macros:
+vardef cross_point(expr a,b) (expr c,d) =
+ save z_; pair z_; z_=whatever[a,b]; z_=whatever[c,d]; z_
+% the crossing point of lines (not segments) |a--b| and |c--d| is returned
+enddef;
+
+vardef touch_time(expr p,q) = % a variant of |intersectionpoint|
+ save x_,y_; (x_,y_)=p intersectiontimes q; if x_<0: 0 else: y_ fi
+enddef;
+% ---------------------------------------------------------------------------
+% the kernel routine for the ogonek:
+numeric x_down,x_down',y_right,y_right',alpha_a,alpha_d;
+pair z_a,z_b,z_b',z_b'',z_c,z_c',z_c'',z_d;
+
+pair nz_,pz_;
+% with plain's |solve| embeded calls are not allowed, hence a bit tricky
+% variation:
+%%% known zsolve
+vardef zsolve@#(suffix z_)=
+% |@#| is the name of a real monotonic function; it is assumed that
+% |@#(z_')<=0|, |@#(z_'')>0| holds for given |z_'| and |z_''|
+ save nz_,pz_; pair nz_,pz_; % recursive calls are possible
+ nz_:=z_'; pz_:=z_'';
+ forever:
+ z_:=.5[nz_,pz_]; exitif abs(nz_-pz_)<=tolerance; % by default |tolerance=.1|
+ if @#(z_)<=0: nz_ else: pz_ fi :=z_;
+ endfor
+% on exit |z_| is (hopefully) near the point where |@#| changes from
+% negative to positive
+enddef;
+
+vardef down_dir(expr z_b)=
+ zsolve right_dir(z_c); % here |z_c| is computed
+ lft(xpart(directionpoint down of (z_a..controls z_b and z_c..z_d)))-x_down
+enddef;
+
+vardef right_dir(expr z_c)=
+ bot(ypart(directionpoint right of (z_a..controls z_b and z_c..z_d)))-y_right
+enddef;
+% ---------------------------------------------------------------------------
+% ogonek defaults:
+vardef the_ogonek_depth = % sharp value
+ if known depth_corr: depth_corr* fi\\ desc_depth#
+enddef;
+
+vardef the_left_pos =
+ if known left_corr: left_corr* fi
+ if monospace: 3.75 elseif serifs:
+ if hefty: 2.3 elseif is_bold: 1.7 else: 1.9 fi
+ else: % sansserif
+ if is_bold: 1.65 else: 1.55 fi\\ fi\\ hi.u
+enddef;
+
+vardef the_tip_pos =
+ (if monospace: 1.9 elseif serifs: if hefty: 1.85
+ elseif is_bold: 1.75 else: 2 fi\\ else: % sansserif
+ if is_bold: 2.1 else: 1.95 fi\\ fi\\ hi.u,
+ if serifs:
+ if monospace: 1.25 elseif hefty: 1 elseif is_bold: .75 else: 1.45 fi
+ else: % sansserif
+ .45 fi\\ hi.u)
+ if known tip_xcorr: xscaled\\ tip_xcorr fi
+ if known tip_ycorr: yscaled\\ tip_ycorr fi
+enddef;
+
+vardef the_top_breadth_corr =
+ if known top_breadth_corr: top_breadth_corr else:
+ if serifs: 1 elseif is_bold: 1.12 elseif is_cap: 1.06 else: .96 fi\\ fi
+enddef;
+
+vardef the_tip_breadth_corr =
+ if known tip_breadth_corr: tip_breadth_corr else: 1 fi
+enddef;
+
+vardef the_pre_angle = % refers to the outer edge
+ if known pre_angle: pre_angle else:
+ if serifs: if hefty: 208 elseif is_bold: 211 else: 214 fi\\ else: 211 fi
+ fi
+enddef;
+
+vardef the_post_angle = % refers to the outer edge
+ if known post_angle: post_angle else:
+ if serifs: if monospace: 60 elseif hefty: 66 elseif is_bold: 55 else: 74 fi
+ else: 25 fi\\ fi
+enddef;
+
+vardef the_pre_limit = % refers to the outer edge
+ if known pre_limit: pre_limit else: x_down-3.5hi.u fi
+enddef;
+
+vardef the_post_limit = % refers to the outer edge
+ if known post_limit: post_limit else: x_down-2hi.u fi
+enddef;
+
+vardef the_pre_lightness = % refers to the inner edge
+ if known pre_lightness: pre_lightness else:
+ if serifs and hefty: .97 elseif not serifs and is_bold: .6
+ elseif is_bold: .66 else: .78 fi\\ fi
+enddef;
+
+vardef the_post_lightness = % refers to the inner edge
+ if known post_lightness: post_lightness else:
+ if serifs:
+ if hefty: .95 elseif is_bold: .66 else: .82 fi
+ else: % sansserif
+ .75 fi\\ fi
+enddef;
+
+vardef the_post_deflexion = % refers to the inner edge
+ if known post_deflexion: post_deflexion elseif serifs and hefty: 0
+ else: -5 fi
+enddef;
+
+vardef the_pre_deflexion = % refers to the inner edge
+ if known pre_deflexion: pre_deflexion
+ elseif known join_angle and not serifs:
+ if is_bold: -4 else: -2 fi\\
+ elseif not serifs: if is_bold: -8 else: -4 fi\\ else: 0 fi
+enddef;
+% ---------------------------------------------------------------------------
+%%% fine lo
+vardef lo suffix z = % in a way |lo| is a counterpart to |hi|
+ if is_small_cap: z_a+((z-z_a) scaled sqrt(body_height#/higher.body_height#))
+ else: z fi
+enddef;
+% ---------------------------------------------------------------------------
+% parameters to |put_ogonek|:
+numeric join_angle; % starting (inner) ogonek direction, if known
+numeric ogonek_breadth; % ogonek breadth at the tip
+% starting (inner for `e' with ogonek, otherwise outer) ogonek position:
+pair ogonek_pos;
+% ---------------------------------------------------------------------------
+def put_ogonek(suffix penkind) =
+ begingroup
+ if monospace:
+% excerpt from |mono_adjust|:
+ save u_; numeric u_; u_:=hi.u#; save u; u#:=u_;
+ numeric expansion_factor;
+ mono_charwd#=2hi.letter_fit#+expansion_factor*cap_A_wd#; % cap_A_wd=13u
+ hi.u:=u#*expansion_factor*hppp;
+% now |u| is like in the letter `A'
+ fi
+
+ fix_virgin z; pickup penkind.nib;
+
+% `a' with ogonek attached to the hook deserves a special treatment:
+ if\\ (not is_small_cap) and (charcode=ogonked_a) and serifs and not is_bold:
+ if ypart(ogonek_pos)>.5penkind:
+ z[ii]~l=ogonek_pos;
+ pos[ii]~(max(the_top_breadth_corr*ogonek_breadth,penkind+epsilon),0);
+ ogonek_pos:=cross_point((0,.5penkind),(1,.5penkind))
+ (z[ii]~l,z[ii]~l+dir(the_pre_angle));
+ fi
+ fi
+
+% similarly, `e' with ogonek deserves a special treatment:
+ if\\ (not is_small_cap) and (charcode=ogonked_e):
+ if ypart(ogonek_pos)>.5penkind:
+ z[ii]~r=ogonek_pos;
+ pos[ii]~(max(the_top_breadth_corr*ogonek_breadth,penkind+epsilon),0);
+ ogonek_pos:=cross_point((0,.5penkind),(1,.5penkind))
+ (z[ii]~l,z[ii]~l+dir(join_angle));
+ fi
+ fi
+
+% invariant: |ypart(ogonek_pos)|$\le$|.5penkind|;
+% moreover, for `A' and `E': |ypart(ogonek_pos)=.5penkind|
+
+% OUTER EDGE:
+ alpha_a:=the_pre_angle; % starting direction
+ alpha_d:=180+the_post_angle; % ending direction
+ x_down:=if serifs: hround else: ceiling fi
+ (xpart(ogonek_pos)-the_left_pos); % left bound
+ y_right:=-vround(d+hi.o); % bottom bound
+ z_a:=(x_down+the_left_pos,ypart(ogonek_pos)); % starting point
+ z_d:=(xpart(z_a)-.5penkind,y_right+ypart(ogonek_pos))+
+ the_tip_pos; % ending point
+% guess the boundaries for control points:
+ z_b':=cross_point (z_a,z_a+dir alpha_a)
+ ((the_pre_limit,0),(the_pre_limit,1));
+ z_b'':=cross_point (z_b',z_a)\\ ((x_down,0),(x_down,1));
+ z_c':=cross_point (z_d,z_d+dir alpha_d)
+ ((the_post_limit,0),(the_post_limit,1));
+ z_c'':=cross_point (z_c',z_d)\\ ((0,y_right),(1,y_right));
+% THE PIVOT STEP OF THE OGONEK PROCEDURE, i.e.,
+% determine the control points (|z_b| and |z_c|) of the outer path:
+ zsolve down_dir(z_b); % |down_dir| calls `|zsolve right_dir(z_c)|'
+ x_down':=xpart(lft(directionpoint down of
+ (z_a..controls z_b and z_c..z_d)));
+ y_right':=ypart(bot(directionpoint right of
+ (z_a..controls z_b and z_c..z_d)));
+ if abs(x_down'-x_down,y_right'-y_right)>sqrt2:
+ message "ERROR: `ogonek' iteration hasn't converged! Final values:";
+ message "x_down="&decimal x_down'&" (should be "&decimal x_down&")";
+ message "y_right="&decimal y_right'&" (should be "&decimal y_right&")";
+ errhelp "Maybe Jackowski knows how to change them...";
+ errmessage "Probably, you have to change somehow the boundary values";
+ fi
+
+% small caps have ogoneks a bit smaller:
+ z[ii]l=z_a; z[ii]'l=lo.z_b; z[jj]'l=lo.z_c; z[jj]l=lo.z_d;
+
+% INNER EDGE:
+ pos[ii](max(the_top_breadth_corr*ogonek_breadth,penkind+epsilon),0);
+ pos[jj](max(the_tip_breadth_corr*ogonek_breadth,penkind+epsilon),
+ angle(direction 1 of (z_a..controls z_b and z_c..z_d))+
+ if serifs: 90 else: 80 fi);
+
+ z[ii]'r=z[ii]r+((z[ii]'l-z[ii]l) scaled the_pre_lightness
+ rotated the_pre_deflexion);
+ z[jj]'r=z[jj]r+((z[jj]'l-z[jj]l) scaled the_post_lightness
+ rotated the_post_deflexion);
+
+% trim the top of the ogonek, if necessary:
+ path ogonek.l, ogonek.r; numeric tt.r, tt.l;
+
+ ogonek.l=if is_known z[ii]~: % minuscule with ogonek
+ z[ii]~l{dir if charcode=ogonked_a: the_pre_angle else: join_angle fi}..fi
+ z[ii]l..controls z[ii]'l and z[jj]'l..z[jj]l;
+ ogonek.r=if is_known z[ii]~: % ditto
+ z[ii]~r{dir if charcode=ogonked_a: the_pre_angle else: join_angle fi}..fi
+ z[ii]r..controls z[ii]'r and z[jj]'r..z[jj]r;
+
+ tt.r=if serifs and (not is_small_cap) and (charcode=ogonked_a):
+ touch_time(p.l,ogonek.r) else: 0 fi;
+ tt.l=if\\ (not is_small_cap) and (charcode=ogonked_e):
+ touch_time(p.r,ogonek.l) else: 0 fi;
+% at last, draw the ogonek:
+ if ogonek_breadth>.5:
+ interim turningcheck:=0; filldraw
+ if\\ (not is_small_cap) and (charcode=ogonked_e):
+ (point tt.r of ogonek.r){direction tt.r of ogonek.r}..{curl 1} fi
+ subpath (tt.l,length ogonek.l) of ogonek.l--
+ reverse(subpath (tt.r,length ogonek.r) of ogonek.r)
+ if is_small_cap or (charcode<>ogonked_e): -- else: & fi\\ cycle;
+% the |draw| command covers with ink unwanted breaks:
+ pickup pensquare scaled (.5*sqrt2) rotated 45;
+ draw .5[z[ii]l,z[ii]r]..controls .5[z[ii]'l,z[ii]'r] and
+ .5[z[jj]'l,z[jj]'r].. .5[z[jj]l,z[jj]r];
+ else: % poor resolution:
+ pickup pensquare scaled (.5*sqrt2) rotated 45;
+ draw z[ii]l..controls z[ii]'l and z[jj]'l..z[jj]l;
+ fi
+
+ numeric join_angle, ogonek_breadth; pair ogonek_pos; % all they are local
+
+ penlabels([ii],[jj]);
+
+ endgroup
+enddef;
+% ---------------------------------------------------------------------------
+% MACROS FOR PROCESSING CHARS TWICE:
+% PASS 1: COLLECTING TFM (SHARP) INFORMATION
+% PASS 2: CREATING THE GLYPH
+% ---------------------------------------------------------------------------
+%%% define_pixels prepare_pen
+%%% beginchar beginchar_twice
+%%% endfor repeat_once
+
+let ori_draw:=draw;
+let ori_fill:=fill;
+let ori_filldraw:=filldraw;
+let ori_erase:=erase;
+let ori_special:=special;
+let ori_numspecial:=numspecial;
+
+mode_def canonical_sharp_mode = % nearly |proof| mode
+ proofing:=0; % no, we aren't making full proofs
+ fontmaking:=0; % no, we aren't making a font
+ tracingtitles:=0; % don't show titles online
+ pixels_per_inch:=2601.72; % that's 36 pixels per pt
+ blacker:=0; % no additional blackness
+ fillin:=0; % no compensation for fillin
+ o_correction:=1; % no reduction in overshoot
+ blacker_min:=0; % no write_white provision
+enddef;
+
+def beginchar_twice(expr c,w_sharp,h_sharp,d_sharp) =
+ begingroup
+ if string mode: string prev_mode; prev_mode:=mode;
+ else: numeric prev_mode; prev_mode:=mode;
+ fi
+ for sharp_calc_:=1, whatever:
+% |sharp_calc| is checked in |corrital|, |mark_height|, |put_accent|,
+% and |put_dot|
+ sharp_calc:=sharp_calc_;
+ if known sharp_calc: % carry out ``sharp'' calculations
+ begingroup save mode,mag; mode:=canonical_sharp_mode; mode_setup;
+ if known cmbase: font_setup;
+ if not serifs: fisp:=round(1/3[fine,crisp]); prepare_pen fisp; fi
+ if known ogonek_pen#:
+ define_whole_pixels(ogonek_pen); prepare_pen ogonek_pen;
+ fi
+% In POLKAP.MF the following setting is performed:
+%| forsuffixes $=u,o,letter_fit,x_height,bar_height,body_height,stem:|
+%| higher.$:=higher.$.# * hppp;|
+%| endfor|
+ if is_small_cap: % a supplement to |font_setup|
+ define_pixels(higher.u,higher.bar_height);
+ define_corrected_pixels(higher.o);
+ define_whole_pixels(higher.letter_fit);
+ define_whole_vertical_pixels(higher.x_height,higher.body_height);
+ define_whole_blacker_pixels(higher.stem);
+ fi
+ fi
+ endgroup;
+ let draw:=killtext; % |killtext| was absent from earlier versions of plain
+ let fill:=killtext;
+ let filldraw:=killtext;
+ let erase:=killtext;
+ def special expr t = enddef;
+ def numspecial expr t = enddef;
+ charwd:=w_sharp; charht:=h_sharp; chardp:=d_sharp; charic:=0;
+ else: % carry out ``discrete'' calculations
+ save mode_guard_; % dedicated to those who use Karl Berry's modes.mf
+ mode:=prev_mode; mode_setup;
+ if known cmbase: font_setup;
+ if not serifs: fisp:=round(1/3[fine,crisp]); prepare_pen fisp; fi
+ if known ogonek_pen#:
+ define_whole_pixels(ogonek_pen); prepare_pen ogonek_pen;
+ fi
+ if is_small_cap: % a supplement to |font_setup| (see sharp calculations)
+ define_pixels(higher.u,higher.bar_height);
+ define_corrected_pixels(higher.o);
+ define_whole_pixels(higher.letter_fit);
+ define_whole_vertical_pixels(higher.x_height,higher.body_height);
+ define_whole_blacker_pixels(higher.stem);
+ fi
+ fi
+ let draw:=ori_draw;
+ let fill:=ori_fill;
+ let filldraw:=ori_filldraw;
+ let erase:=ori_erase;
+ let special:=ori_special;
+ let numspecial:=ori_numspecial;
+ charwd:=w_sharp;
+ fi
+ charcode:=if known c: byte c else: 0 fi;
+ w:=hround(w_sharp*hppp); h:=vround(h_sharp*hppp); d:=vround(d_sharp*hppp);
+ clearxy; clearit; clearpen; scantokens extra_beginchar;
+enddef;
+
+let repeat_once = endfor;
+
+% ---------------------------------------------------------------------------
+% LAST MINUTE EXTRA FONT SETUP (repeated in POLKAP.MF)
+% ---------------------------------------------------------------------------
+if not serifs: fisp:=round(1/3[fine,crisp]); prepare_pen fisp; fi
+if known ogonek_pen#:
+ define_whole_pixels(ogonek_pen); prepare_pen ogonek_pen;
+fi
+% ---------------------------------------------------------------------------
+% THAT'S ALL, FOLKS.
+% ---------------------------------------------------------------------------
+endinput;
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl_ml.mf b/Master/texmf-dist/fonts/source/public/pl/pl_ml.mf
new file mode 100644
index 00000000000..239afbb9154
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl_ml.mf
@@ -0,0 +1,327 @@
+% ---------------------------------------------------------------------------
+% This is PL_ML.MF ({\bif{}ma\l{}e polskie litery}, i.e., lowercase Polish
+% letters: a and e with ogonek, crossed l, accented c, n, o, s, z,
+% and dotted z) in text format.
+% The program is based on excerpts from the ROMANL.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF ADAPTATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+%%% beginchar beginchar_twice
+%%% endfor repeat_once
+% ---------------------------------------------------------------------------
+
+cmchar "The letter a with ogonek";
+beginchar(ogonked_a,9u#,x_height#,the_ogonek_depth);
+ bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh);
+ italcorr 1/3[bh#,x_height#]*slant+.5stem#-serif_fit#-2u#;
+ adjust_fit(0,serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi);
+ pickup fine.nib; top y3r=h+vround 1.5oo;
+ if serifs: pos1(flare,180); pos2(hair,180);
+ pos3(vair,90); lft x1r=hround max(u,2.1u-.5flare); x3=.5w-.5u;
+ y1=min(bh+.5flare+2vair+2,.9[bh,h]-.5flare);
+ bulb(3,2,1); % bulb
+ else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r;
+ pos3(1/8[vair,thin_join],90);
+ x3=.5w-.2u; top y1r=vround .82[bh,top y3r];
+ filldraw stroke term.e(3,1,left,.9,4); fi % terminal
+ pos4(stem,0); rt x4r=hround(w-2.5u+.5stem); y4=1/3[bh,h];
+ pos5(stem,0); x5=x4; y5=max(.55bh,2vair);
+ filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem
+ pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh;
+ pos7(hround(curve-2stem_corr),180);
+ lft x7r=hround max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r];
+ pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo;
+ pos9(thin_join,360); z9l=z5l;
+ (x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u);
+ {{interim superness:=more_super;
+ filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl
+ if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr);
+ if is_bold: pickup tiny.nib;
+ pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
+ pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh];
+ pos11(shaved_stem,0); rt x11r=hround(w-.25u); bot y11=0;
+ pos12(shaved_stem,0); x11=x12; top y12=slab+eps;
+ filldraw z5'l---z10l...z11l{right}--z11r
+ --z12r{left}...z10r+.75(z12-z11)---z5'r--cycle; % foot
+ else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
+ pos10(shaved_stem,0); x10=x5'; y10=1/3bh;
+ pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo;
+ pos12(hair,180); rt x12l=hround(w-.1u); y12=max(y10,y11+vair);
+ pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12);
+ (x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10);
+ filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi % hook
+ else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr);
+ pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
+ pos10(shaved_stem,0); x10=x5'; bot y10=0;
+ filldraw stroke z5'e--z10e; % base of stem
+ fi;
+ penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13);
+ if serifs: path p.l; p.l=z5'l---z10l...z11l{right}; fi
+ def the_pen=
+ if known ogonek_pen: ogonek_pen elseif serifs: tiny else: fine fi
+ enddef;
+ ogonek_breadth=if serifs and is_bold: slab else: xvair fi;
+ ogonek_pos=if serifs: (point if is_bold: 1.75 of p.l) else: 1.85 of p.l)+
+ .5the_pen*up fi\\ else: (x10l,.5the_pen) fi;
+ put_ogonek(the_pen);
+endchar; % a with ogonek
+
+cmchar "The letter accented c";
+beginchar_twice(accented_c,8u#,x_height#,0);
+ italcorr x_height#*slant-.2u#;
+ adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
+ pickup fine.nib; pos2(vair',90); pos4(vair',270);
+ x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo;
+ pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h;
+ if serifs: pos1(hair,0); pos0(flare,0);
+ y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare);
+ rt x1r=hround(w-.7u); bulb(2,1,0); % bulb
+ pos5(hair,0); rt x5r=hround(w-.5u);
+ y5=max(good.y(.5bar_height-.9),y4l+vair');
+ (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
+ filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull)
+ ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal
+ else: pos1(4/7[vair',flare],80);
+ rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r];
+ filldraw stroke term.e(2,1,right,.8,4); % upper terminal
+ pos5(.6[vair',flare],275); rt x5r=hround(w-.5u);
+ y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
+ forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e;
+ if angle direction 1 of p.e>75:
+ p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor
+ filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal
+ penlabels(0,1,2,3,4,5);
+ hpos_corr=-.25u; put_accent;
+ repeat_once
+endchar; % accented c
+
+cmchar "The letter e with ogonek";
+beginchar(ogonked_e,7.25u#+max(.75u#,.5curve#),x_height#,the_ogonek_depth);
+ italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
+ adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi);
+ numeric left_curve,right_curve;
+ left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi;
+ if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi
+ if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi
+ pickup tiny.nib; pos1(right_curve,0);
+ pos2(vair,90); pos3(left_curve,180);
+ y1=good.y bar_height; top y2r=h+vround 1.5oo; y0l=bot y1;
+ rt x1r=hround min(w-.5u,w-u+.5right_curve);
+ lft x3r=hround max(.5u,1.25u-.5left_curve); x2=.5w+.25u;
+ {{interim superness:=more_super;
+ filldraw stroke super_arc.e(1,2)}}; % right bowl
+ y3=.5[y2,y4]; bot y4r=-oo; x4=x2+.25u;
+ if serifs: pos4(vair',270); pos5(hair,360);
+ y5=max(good.y(.5bar_height-.9),y4l+vair); x5r=x1r;
+ (x,y4l)=whatever[z4r,z5]; x4l:=min(x,x4l+.5u);
+ filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
+ ...{x5-x4,5(y5-y4)}z5e; % left bowl, arc, and terminal
+ else: pos4(vair,270);
+ filldraw stroke super_arc.e(2,3) & super_arc.e(3,4); % left bowl and arc
+ pickup fine.nib; pos4'(vair,270); z4=z4';
+ pos5(.5[vair,flare],275); rt x5r=hround(w-.6u);
+ y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
+ filldraw stroke term.e(4',5,right,1,4); fi % terminal
+ path testpath; testpath=super_arc.r(2,3) & super_arc.r(3,4);
+ y1'r=y0r=y0l+.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1;
+ forsuffixes $=l,r:
+ x0$=xpart(((0,y0$)--(x1,y0$)) intersectionpoint testpath); endfor
+ fill stroke z0e--z1'e; % crossbar
+ penlabels(0,1,2,3,4,5);
+ path p.r;
+ p.r=if serifs: pulled_arc.r(3,4)...{x5-x4,5(y5-y4)}z5r
+ else: term.r(4',5,right,1,4) fi;
+ def the_pen=
+ if known ogonek_pen: ogonek_pen elseif serifs: tiny else: fine fi
+ enddef;
+ numeric tt; % the time...
+ tt=if serifs: if hefty: 2.6 else: 2.5 fi else: % sansserif
+ if is_bold: .6 else: .8 fi\\ fi;
+ join_angle=angle((direction tt of p.r) rotated 180);
+ ogonek_breadth=if serifs and is_bold: slab else: xvair fi;
+ ogonek_pos=(point tt of p.r)+.5(the_pen-if serifs: tiny else: fine fi)*
+ unitvector((direction tt of p.r) rotated 90);
+ put_ogonek(the_pen);
+endchar; % e with ogonek
+
+cmchar "The letter crossed l";
+beginchar_twice(crossed_l,5u#,asc_height#,0);
+ italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+ charwd_:=charwd;
+ adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#);
+ pickup tiny.nib; pos1(stem',0); pos2(stem',0);
+ if odd(w-stem'): change_width; fi
+ lft x1l=hround(.5w-.5stem'); x1=x2; top y1=h; bot y2=0;
+ filldraw stroke z1e--z2e; % stem
+ if serifs: sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper serif
+ dish_serif(2,1,b,1/3,jut,c,1/3,jut); fi % lower serif
+ penlabels(1,2);
+ numeric unbalance;
+ unbalance=if monospace: 1 else: 1.1 fi;
+ if not monospace:
+ numeric cross_fit#;
+ cross_fit#=serif_fit#+if not serifs: if is_bold: 1 else: .75 fi\\ else:
+ .5 fi\\ u#;
+ charwd:=charwd_;
+ adjust_fit(cross_fit#+stem_shift#,unbalance*cross_fit#-stem_shift#);
+ fi
+ numeric l_jut;
+% some funny fonts have an extremally small |jut|:
+ l_jut=.5stem+if serifs: max(limit_dist,if hefty: .8 fi\\ jut) else: 1.7u fi;
+ put_cross(l_jut,unbalance*l_jut);
+ repeat_once
+endchar; % crossed l
+
+cmchar "The letter accented n";
+beginchar_twice(accented_n,10u#,x_height#,0);
+ italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#;
+ adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#);
+ pickup tiny.nib; pos1(stem,0); pos2(stem,0);
+ numeric shaved_stem; shaved_stem=hround(stem-2stem_corr);
+ pos1'(shaved_stem,0); pos2'(shaved_stem,0); pos3(stem,0);
+ lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1;
+ top y1=h+min(oo,serif_drop); bot y2=0; y1=y1'; y2=y2';
+ filldraw stroke z1'e--z2'e; % left stem
+ h_stroke(2,a,3,4); % arch and right stem
+ if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif
+ numeric inner_jut; pickup tiny.nib;
+ if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut;
+ else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi
+ dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif
+ dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif
+ penlabels(1,2,3,4);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar;% accented n
+
+cmchar "The letter accented o";
+beginchar_twice(accented_o,9u#,x_height#,0);
+ italcorr .7x_height#*slant;
+ adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
+ penpos1(vair,90); penpos3(vair',-90);
+ penpos2(curve,180); penpos4(curve,0);
+ x2r=hround max(.5u,1.25u-.5curve);
+ x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo;
+ y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
+ penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
+ penlabels(1,2,3,4);
+ put_accent;
+ repeat_once
+endchar;% accented o
+
+cmchar "The letter accented s";
+beginchar_twice(accented_s,7.1u#,x_height#,0);
+ italcorr x_height#*slant-if serifs:.55u# else:.3u# fi;
+ adjust_fit(if monospace: .5u#,.4u# else: 0,if serifs:0 else:-.2u# fi fi);
+ numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle
+ numeric s_slab; s_slab=if serifs:vair else:Vround .1[vair,stem] fi;
+ numeric ess'; ess'=max(fine.breadth,ess);
+ pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-100);
+ pos0(ess',theta); pos7(s_slab,-90); x2l=x0=x7=.5w;
+ top y2l=h+vround 1.5oo; bot y7r=-oo;
+ y0-.5ess'=y7l+if serifs:.54 else: .52 fi\\(y2r-y7l-ess');
+ lft x3l=hround .6u; rt x6r=hround(w-.6u);
+ x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
+ ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
+ ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
+ interim superness:=more_super;
+ filldraw stroke super_arc.e(2,3) & z3e{down}
+ ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
+ if serifs: pos1(hair,180); pos8(hair,180);
+ rt x1l=hround(w-1.05u); lft x8r=hround .6u;
+ bot y1=min(bot y2r,vround 1/5[top y5r,h]);
+ top y8=max(top y7l,vround 5/6 bot y4l);
+ filldraw stroke z1e{up}....{left}z2e; % upper arc
+ filldraw stroke z7e{left}....{x8-x7,5(y8-y7)}z8e; % lower arc
+ path upper_arc, lower_arc;
+ upper_arc=z1{up}....{left}z2; lower_arc=z7{left}....{x8-x7,5(y8-y7)}z8;
+ pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0);
+ x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
+ filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9r--z8'));
+ filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
+ else: pos1(4/7[s_slab,flare],-100); pos8(flare,-100);
+ x1l=good.x(x1l+w-u-rt x1); lft x8r=hround .5u;
+ top y1l=vround(.93h+1.5oo); bot y8r=vround .1h-oo;
+ filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal
+ filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal
+ penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar;% accented s
+
+cmchar "The letter accented z";
+beginchar_twice(accented_z,8u#,x_height#,0);
+ italcorr x_height#*slant-.5serif_fit#-.3u#;
+ adjust_fit(0,.5serif_fit#);
+ numeric arm_thickness[\\],z_stem;
+ if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair;
+ z_stem=.6[vair,stem];
+ else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi
+ pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround .5u;
+ top y1=h; y2=min(y1,h-2/3arm_thickness1);
+ bot y4=0; y3=max(y4,2/3arm_thickness2);
+ numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3));
+ penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
+ penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
+ pair delta; delta=penoffset z3-z2 of currentpen;
+ fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
+ ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
+ ---cycle; % diagonal
+ pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
+ top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps;
+ arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak
+ pos7(arm_thickness2,-90); pos8(hair,0);
+ bot y7r=0; x7=x4; rt x8r=hround(w-.75u); y8=good.y(y7l+beak/1.2)+eps;
+ arm(7,8,b,beak_darkness,.6beak_jut); % lower arm and beak
+ penlabels(1,2,3,4,5,6,7,8);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar;% accented z
+
+cmchar "The letter dotted z";
+beginchar_twice(dotted_z,8u#,x_height#,0);
+ italcorr x_height#*slant-.5serif_fit#-.3u#;
+ adjust_fit(0,.5serif_fit#);
+ numeric arm_thickness[\\],z_stem;
+ if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair;
+ z_stem=.6[vair,stem];
+ else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi
+ pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=lft x4l=hround .5u;
+ top y1=h; y2=min(y1,h-2/3arm_thickness1);
+ bot y4=0; y3=max(y4,2/3arm_thickness2);
+ numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3));
+ penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
+ penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
+ pair delta; delta=penoffset z3-z2 of currentpen;
+ fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
+ ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
+ ---cycle; % diagonal
+ pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180);
+ top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps;
+ arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak
+ pos7(arm_thickness2,-90); pos8(hair,0);
+ bot y7r=0; x7=x4; rt x8r=hround(w-.75u); y8=good.y(y7l+beak/1.2)+eps;
+ arm(7,8,b,beak_darkness,.6beak_jut); % lower arm and beak
+ penlabels(1,2,3,4,5,6,7,8);
+ put_dot(tiny,max(dot_size#,cap_curve#));
+ repeat_once
+endchar;% dotted z
+
+endinput;
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl_mlk.mf b/Master/texmf-dist/fonts/source/public/pl/pl_mlk.mf
new file mode 100644
index 00000000000..f1d9aeb7b5e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl_mlk.mf
@@ -0,0 +1,204 @@
+% ---------------------------------------------------------------------------
+% This is PL_MLK.MF ({\bif{}ma\l{}e polskie litery --- kursywa}, i.e.,
+% lowercase italic Polish letters: a and e with ogonek, crossed l,
+% accented c, n, o, s, z, and dotted z) in text format.
+% The program is based on excerpts from the ITALL.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF ADAPTATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+%%% beginchar beginchar_twice
+%%% endfor repeat_once
+% ---------------------------------------------------------------------------
+
+cmchar "Italic letter a with ogonek";
+beginchar(ogonked_a,9u#,x_height#,the_ogonek_depth);
+ italcorr 1/3x_height#*slant+.5hair#+.5u#;
+ adjust_fit(0,0); pickup fine.nib;
+ pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270);
+ pos4(stem,0); x4=x0; y4+.5stem=vround .98h;
+ x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve);
+ rt x4r=hround(w-2.5u+.5stem);
+ top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3];
+ filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2)
+ & pulled_arc.e(2,3) & super_arc.e(3,0); % bowl
+ x5=x4; x7=w; hook_out(5,6,7); % closing hook
+ filldraw circ_stroke z4e--z5e; % stem
+ penlabels(0,1,2,3,4,5,6,7);
+ path p.l;
+ p.l=if skewed: z5l{-u,-x_height}...z6l{right}...{up}z7l
+ else: z5l{down}...z6l{right}...{x7-(x5+2.5u),x_height}z7l fi;
+ ogonek_breadth=xvair; ogonek_pos=point .9 of p.l;
+ put_ogonek(if known ogonek_pen: ogonek_pen else: fine fi);
+endchar; % italic a with ogonek
+
+cmchar "Italic letter accented c";
+beginchar_twice(accented_c,8u#,x_height#,0);
+ italcorr x_height#*slant-u#;
+ adjust_fit(0,0); pickup fine.nib;
+ pos0(flare,0); pos1(hair,0); pos2(vair,90);
+ pos3(curve,180); pos4(vair,270); pos5(hair,320);
+ x2=x4=.5(w+u); rt x1r=max(rt x2,hround(w-u))+eps;
+ lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5;
+ y1=.5[bar_height,h]; top y2r=h+oo; bulb(2,1,0); % bulb
+ bot y4r=-oo; y3=.5[y2,y4]; top y5l=vround .5bar_height; y6=bar_height;
+ path p; p=z4{right}..z5..z6;
+ filldraw stroke pulled_arc.e(2,3)
+ & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc
+ penlabels(0,1,2,3,4,5,6);
+ hpos_corr=-.25u; put_accent;
+ repeat_once
+endchar; % italic accented c
+
+cmchar "Italic letter e with ogonek";
+beginchar(ogonked_e,8u#,x_height#,the_ogonek_depth);
+ italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#);
+ adjust_fit(0,0); pickup fine.nib;
+ numeric heavy_hair; heavy_hair=hround .2[hair,stem];
+ pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90);
+ pos3(curve,180); pos4(vair,270); pos5(hair,320);
+ x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+u);
+ lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5;
+ y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo;
+ top y5l=vround .5bar_height; path p; p=z4{right}..z5..z6;
+ filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3)
+ & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc
+ penlabels(0,1,2,3,4,5,6);
+ path p.r; p.r=pulled_arc.r(3,4)...{direction 1 of p}z5r;
+ def the_pen=
+ if known ogonek_pen: ogonek_pen else: fine fi
+ enddef;
+ numeric tt; % the time...
+ tt=if hefty: 2.8 else: 2.6 fi;
+ join_angle=angle((direction tt of p.r) rotated 180);
+ ogonek_breadth=xvair;
+ ogonek_pos=point tt of p.r+.5(the_pen-fine)*
+ unitvector((direction tt of p.r) rotated 90);
+ put_ogonek(the_pen);
+endchar; % italic e with ogonek
+
+cmchar "Italic letter crossed l";
+beginchar_twice(crossed_l,4u#,asc_height#,0);
+ l_width#:=4u#;
+ italcorr max(1/3x_height#*slant+.5hair#+.5u#,asc_height#*slant+.5stem#-2u#);
+ charwd_:=charwd; adjust_fit(if monospace:u#,u# else: 0,0 fi);
+ pickup fine.nib;
+ x2-.5stem=hround(1.5u-.5stem);
+ x4=w; hook_out(2,3,4); % closing hook
+ pickup tiny.nib; pos1(stem,0); pos2'(stem,0); z2'=z2;
+ top y1=h; x1=x2; filldraw stroke z1e--z2'e; % stem
+ sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
+ penlabels(1,2,3,4);
+ if not monospace:
+ charwd:=charwd_; adjust_fit(.25u#,if is_bold: .75 fi\\ u#);
+ fi
+% some funny fonts have an extremally small |jut|:
+ numeric l_jut; l_jut=.5stem+max(limit_dist,if hefty: .8 fi\\ jut);
+ put_cross(l_jut,1.15l_jut);
+ repeat_once
+endchar; % italic crossed l
+
+cmchar "Italic letter accented n";
+ beginchar_twice(accented_n,10u#,x_height#,0);
+ italcorr 1/3x_height#*slant+.5hair#+.5u#;
+ adjust_fit(0,0); pickup fine.nib;
+ x0=0; x1=x2; pos2(stem,0); lft x2l=hround(2.5u-.5stem); y2-.5stem=-oo;
+ hook_in(0,a,1); % opening hook
+ filldraw circ_stroke z2e--z1e; % left stem
+ x4+.5stem=hround(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch
+ x7=w; hook_out(5,6,7)(skewed); % closing hook
+ filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
+ penlabels(0,a,1,2,3,4,5,6,7);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar; % italic accented n
+
+cmchar "Italic letter accented o";
+beginchar_twice(accented_o,9u#,x_height#,0);
+ italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
+ adjust_fit(0,0); pickup fine.nib;
+ pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
+ x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2;
+ top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
+ filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
+ penlabels(1,2,3,4);
+ put_accent;
+ repeat_once
+endchar; % italic accented o
+
+cmchar "Italic letter accented s";
+beginchar_twice(accented_s,5.25u#+max(1.75u#,flare#),x_height#,0);
+ italcorr x_height#*slant-.5u#;
+ adjust_fit(0,0); pickup fine.nib;
+ numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle
+ pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90);
+ x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo;
+ y0-.5ess=y7l+.55(y2r-y7l-ess);
+ lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps;
+ x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine;
+ ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
+ ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
+ interim superness:=more_super;
+ filldraw stroke super_arc.e(2,3) & z3e{down}
+ ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
+ pos1(hair,0); pos10(hround .75[hair,flare],0);
+ pos2'(vair,90); z2'=z2;
+ pos8(hair,-180); pos9(flare,-180);
+ rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h;
+ bulb(2',1,10); bulb(7,8,9); % bulbs
+ penlabels(0,1,2,3,4,5,6,7,8,9,10);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar; % italic accented s
+
+cmchar "Italic letter accented z";
+beginchar_twice(accented_z,5.5u#+max(1.5u#,stem#),x_height#,0);
+ italcorr x_height#*slant+.5hair#;
+ adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib;
+ pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0);
+ lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u);
+ top y1=.78h; top y2l=top y4=h+oo; y3=.825h;
+ pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0);
+ x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps);
+ bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h;
+ pair p; p=(z4-z5) yscaled 2;
+ filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar
+ filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar
+ filldraw stroke z5e{p}..{p}z4e; % diagonal
+ penlabels(1,2,3,4,5,6,7,8);
+ hpos_corr=-.5u; put_accent;
+ repeat_once
+endchar; % italic accented z
+
+cmchar "Italic letter dotted z";
+beginchar_twice(dotted_z,5.5u#+max(1.5u#,stem#),x_height#,0);
+ italcorr x_height#*slant+.5hair#;
+ adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib;
+ pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0);
+ lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u);
+ top y1=.78h; top y2l=top y4=h+oo; y3=.825h;
+ pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0);
+ x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps);
+ bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h;
+ pair p; p=(z4-z5) yscaled 2;
+ filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar
+ filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar
+ filldraw stroke z5e{p}..{p}z4e; % diagonal
+ penlabels(1,2,3,4,5,6,7,8);
+ put_dot(fine,flare#);
+ repeat_once
+endchar; % italic dotted z
+
+endinput;
+%%\end
+
diff --git a/Master/texmf-dist/fonts/source/public/pl/pl_sym.mf b/Master/texmf-dist/fonts/source/public/pl/pl_sym.mf
new file mode 100644
index 00000000000..88dc3b93a41
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pl_sym.mf
@@ -0,0 +1,49 @@
+% ---------------------------------------------------------------------------
+% This is PL_SYM.MF ({\bif{}polskie symbole matematyczne, i.e., extra
+% Polish math symbols) in text format. Characters |xleq| and |xgeq| are
+% generated when their codes are known.
+% The program is a modification of the SYM.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF MODIFICATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+iff known xleq: cmchar "Extra less than or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(xleq,14u#,v_center(spread#'+spread#+rule_thickness#));
+ italcorr h#*slant-u#;
+ adjust_fit(0,0); pickup rule.nib;
+ lft x2=hround 1.5u-eps; x1=x3=w-x2;
+ y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+ draw z1--z2--z3; % diagonals
+ x8=x1; x9=x2; y2-y9=y3-y8=floor(spread'); draw z8--z9; % skew bar
+ labels(1,2,3,8,9);
+endchar;
+
+iff known xgeq: cmchar "Extra greater than or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(xgeq,14u#,v_center(spread#'+spread#+rule_thickness#));
+ italcorr h#*slant-u#;
+ adjust_fit(0,0); pickup rule.nib;
+ lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+ y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+ draw z1--z2--z3; % diagonals
+ x8=x1; x9=x2; y2-y9=y3-y8=floor(spread'); draw z8--z9; % skew bar
+ labels(1,2,3,8,9);
+endchar;
+
+endinput
+
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/plb10.mf b/Master/texmf-dist/fonts/source/public/pl/plb10.mf
new file mode 100644
index 00000000000..1b9e2c35aff
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plb10.mf
@@ -0,0 +1,6 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+post_lightness:=.6; pre_lightness:=.6;
+left_corr:=1.1; tip_ycorr:=1.15;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbsy10.mf b/Master/texmf-dist/fonts/source/public/pl/plbsy10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbsy10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbsy5.mf b/Master/texmf-dist/fonts/source/public/pl/plbsy5.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbsy5.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbsy7.mf b/Master/texmf-dist/fonts/source/public/pl/plbsy7.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbsy7.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx10.mf b/Master/texmf-dist/fonts/source/public/pl/plbx10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx12.mf b/Master/texmf-dist/fonts/source/public/pl/plbx12.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx12.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx5.mf b/Master/texmf-dist/fonts/source/public/pl/plbx5.mf
new file mode 100644
index 00000000000..36d233d1d7e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx5.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.14;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx6.mf b/Master/texmf-dist/fonts/source/public/pl/plbx6.mf
new file mode 100644
index 00000000000..421e1a0be3b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx6.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.09;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx7.mf b/Master/texmf-dist/fonts/source/public/pl/plbx7.mf
new file mode 100644
index 00000000000..208653109af
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx7.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.06;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx8.mf b/Master/texmf-dist/fonts/source/public/pl/plbx8.mf
new file mode 100644
index 00000000000..0f83c7b80f9
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx8.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.02;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbx9.mf b/Master/texmf-dist/fonts/source/public/pl/plbx9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbx9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbxsl10.mf b/Master/texmf-dist/fonts/source/public/pl/plbxsl10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbxsl10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plbxti10.mf b/Master/texmf-dist/fonts/source/public/pl/plbxti10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plbxti10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plcsc10.mf b/Master/texmf-dist/fonts/source/public/pl/plcsc10.mf
new file mode 100644
index 00000000000..2781dbe8e94
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plcsc10.mf
@@ -0,0 +1,4 @@
+%%% fine lower
+%%% input use_driver
+% see the respective CM file
+input fik_mik; lower.cap_flat:=0; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pldunh10.mf b/Master/texmf-dist/fonts/source/public/pl/pldunh10.mf
new file mode 100644
index 00000000000..39186cdf8d7
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pldunh10.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+cap_flat=0; % dunhill font is slim
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plex10.mf b/Master/texmf-dist/fonts/source/public/pl/plex10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plex10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plff10.mf b/Master/texmf-dist/fonts/source/public/pl/plff10.mf
new file mode 100644
index 00000000000..a3910b2ee08
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plff10.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+ogonek_pen#:=9/36pt#;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plfi10.mf b/Master/texmf-dist/fonts/source/public/pl/plfi10.mf
new file mode 100644
index 00000000000..a96790f2bc8
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plfi10.mf
@@ -0,0 +1,6 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+ogonek_pen#:=9/36pt#;
+tip_xcorr:=.7;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plfib8.mf b/Master/texmf-dist/fonts/source/public/pl/plfib8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plfib8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plinch.mf b/Master/texmf-dist/fonts/source/public/pl/plinch.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plinch.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plitt10.mf b/Master/texmf-dist/fonts/source/public/pl/plitt10.mf
new file mode 100644
index 00000000000..f76d4b2da34
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plitt10.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+tip_xcorr:=1.5; tip_ycorr:=.9;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi10.mf b/Master/texmf-dist/fonts/source/public/pl/plmi10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi12.mf b/Master/texmf-dist/fonts/source/public/pl/plmi12.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi12.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi5.mf b/Master/texmf-dist/fonts/source/public/pl/plmi5.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi5.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi6.mf b/Master/texmf-dist/fonts/source/public/pl/plmi6.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi6.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi7.mf b/Master/texmf-dist/fonts/source/public/pl/plmi7.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi7.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi8.mf b/Master/texmf-dist/fonts/source/public/pl/plmi8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmi9.mf b/Master/texmf-dist/fonts/source/public/pl/plmi9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmi9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmib10.mf b/Master/texmf-dist/fonts/source/public/pl/plmib10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmib10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmib5.mf b/Master/texmf-dist/fonts/source/public/pl/plmib5.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmib5.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plmib7.mf b/Master/texmf-dist/fonts/source/public/pl/plmib7.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plmib7.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr10.mf b/Master/texmf-dist/fonts/source/public/pl/plr10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr12.mf b/Master/texmf-dist/fonts/source/public/pl/plr12.mf
new file mode 100644
index 00000000000..42de91a461b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr12.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+left_corr:=.94; depth_corr:=.98;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr17.mf b/Master/texmf-dist/fonts/source/public/pl/plr17.mf
new file mode 100644
index 00000000000..7d775e260f5
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr17.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+left_corr:=.9; depth_corr:=.92;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr5.mf b/Master/texmf-dist/fonts/source/public/pl/plr5.mf
new file mode 100644
index 00000000000..287f42e3d59
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr5.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.17;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr6.mf b/Master/texmf-dist/fonts/source/public/pl/plr6.mf
new file mode 100644
index 00000000000..543ccb0eb26
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr6.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.12;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr7.mf b/Master/texmf-dist/fonts/source/public/pl/plr7.mf
new file mode 100644
index 00000000000..03c47d84d04
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr7.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.08;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr8.mf b/Master/texmf-dist/fonts/source/public/pl/plr8.mf
new file mode 100644
index 00000000000..0f83c7b80f9
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr8.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.02;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plr9.mf b/Master/texmf-dist/fonts/source/public/pl/plr9.mf
new file mode 100644
index 00000000000..ca6f0603f0c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plr9.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.01;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsl10.mf b/Master/texmf-dist/fonts/source/public/pl/plsl10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsl10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsl12.mf b/Master/texmf-dist/fonts/source/public/pl/plsl12.mf
new file mode 100644
index 00000000000..42de91a461b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsl12.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+left_corr:=.94; depth_corr:=.98;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsl8.mf b/Master/texmf-dist/fonts/source/public/pl/plsl8.mf
new file mode 100644
index 00000000000..0f83c7b80f9
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsl8.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.02;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsl9.mf b/Master/texmf-dist/fonts/source/public/pl/plsl9.mf
new file mode 100644
index 00000000000..ca6f0603f0c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsl9.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.01;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsltt10.mf b/Master/texmf-dist/fonts/source/public/pl/plsltt10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsltt10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plss10.mf b/Master/texmf-dist/fonts/source/public/pl/plss10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plss10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plss12.mf b/Master/texmf-dist/fonts/source/public/pl/plss12.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plss12.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plss17.mf b/Master/texmf-dist/fonts/source/public/pl/plss17.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plss17.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plss8.mf b/Master/texmf-dist/fonts/source/public/pl/plss8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plss8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plss9.mf b/Master/texmf-dist/fonts/source/public/pl/plss9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plss9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssbi10.mf b/Master/texmf-dist/fonts/source/public/pl/plssbi10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssbi10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssbx10.mf b/Master/texmf-dist/fonts/source/public/pl/plssbx10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssbx10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssdc10.mf b/Master/texmf-dist/fonts/source/public/pl/plssdc10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssdc10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssi10.mf b/Master/texmf-dist/fonts/source/public/pl/plssi10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssi10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssi12.mf b/Master/texmf-dist/fonts/source/public/pl/plssi12.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssi12.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssi17.mf b/Master/texmf-dist/fonts/source/public/pl/plssi17.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssi17.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssi8.mf b/Master/texmf-dist/fonts/source/public/pl/plssi8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssi8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssi9.mf b/Master/texmf-dist/fonts/source/public/pl/plssi9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssi9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssq8.mf b/Master/texmf-dist/fonts/source/public/pl/plssq8.mf
new file mode 100644
index 00000000000..722545cd1e1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssq8.mf
@@ -0,0 +1,7 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+top_breadth_corr:=.77;
+tip_breadth_corr:=.77;
+tip_xcorr:=.85; depth_corr:=1.32;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plssqi8.mf b/Master/texmf-dist/fonts/source/public/pl/plssqi8.mf
new file mode 100644
index 00000000000..722545cd1e1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plssqi8.mf
@@ -0,0 +1,7 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+top_breadth_corr:=.77;
+tip_breadth_corr:=.77;
+tip_xcorr:=.85; depth_corr:=1.32;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsy10.mf b/Master/texmf-dist/fonts/source/public/pl/plsy10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsy10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsy5.mf b/Master/texmf-dist/fonts/source/public/pl/plsy5.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsy5.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsy6.mf b/Master/texmf-dist/fonts/source/public/pl/plsy6.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsy6.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsy7.mf b/Master/texmf-dist/fonts/source/public/pl/plsy7.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsy7.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsy8.mf b/Master/texmf-dist/fonts/source/public/pl/plsy8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsy8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plsy9.mf b/Master/texmf-dist/fonts/source/public/pl/plsy9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plsy9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltcsc10.mf b/Master/texmf-dist/fonts/source/public/pl/pltcsc10.mf
new file mode 100644
index 00000000000..2781dbe8e94
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltcsc10.mf
@@ -0,0 +1,4 @@
+%%% fine lower
+%%% input use_driver
+% see the respective CM file
+input fik_mik; lower.cap_flat:=0; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltex10.mf b/Master/texmf-dist/fonts/source/public/pl/pltex10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltex10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltex8.mf b/Master/texmf-dist/fonts/source/public/pl/pltex8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltex8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltex9.mf b/Master/texmf-dist/fonts/source/public/pl/pltex9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltex9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plti10.mf b/Master/texmf-dist/fonts/source/public/pl/plti10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plti10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plti12.mf b/Master/texmf-dist/fonts/source/public/pl/plti12.mf
new file mode 100644
index 00000000000..05393fa7324
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plti12.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=.94;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plti7.mf b/Master/texmf-dist/fonts/source/public/pl/plti7.mf
new file mode 100644
index 00000000000..543ccb0eb26
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plti7.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.12;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plti8.mf b/Master/texmf-dist/fonts/source/public/pl/plti8.mf
new file mode 100644
index 00000000000..4ca5ee493f6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plti8.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+depth_corr:=1.04;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plti9.mf b/Master/texmf-dist/fonts/source/public/pl/plti9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plti9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltt10.mf b/Master/texmf-dist/fonts/source/public/pl/pltt10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltt10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltt12.mf b/Master/texmf-dist/fonts/source/public/pl/pltt12.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltt12.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltt8.mf b/Master/texmf-dist/fonts/source/public/pl/pltt8.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltt8.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/pltt9.mf b/Master/texmf-dist/fonts/source/public/pl/pltt9.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/pltt9.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plu10.mf b/Master/texmf-dist/fonts/source/public/pl/plu10.mf
new file mode 100644
index 00000000000..ba10746154d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plu10.mf
@@ -0,0 +1,3 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik; use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/plvtt10.mf b/Master/texmf-dist/fonts/source/public/pl/plvtt10.mf
new file mode 100644
index 00000000000..14f95ef9782
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/plvtt10.mf
@@ -0,0 +1,5 @@
+%%% input use_driver
+% see the respective CM file
+input fik_mik;
+tip_xcorr:=.85; tip_ycorr:=.85;
+use_driver;
diff --git a/Master/texmf-dist/fonts/source/public/pl/polan.mf b/Master/texmf-dist/fonts/source/public/pl/polan.mf
new file mode 100644
index 00000000000..20396123fb8
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/polan.mf
@@ -0,0 +1,163 @@
+% ---------------------------------------------------------------------------
+% This is POLAN.MF ({\bif{}polska antykwa}, i.e., roman) in text format.
+% The program is a modification of the ROMAN.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF MODIFICATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+if ligs>1: font_coding_scheme:="TeX text";
+ spanish_shriek=oct"074"; spanish_query=oct"076";
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures" fi;
+ spanish_shriek=oct"016"; spanish_query=oct"017"; fi
+
+mode_setup; font_setup;
+
+input pl_dod; % Polish additional definitions
+input pl_dl; % Polish majuscules
+input pl_ml; % Polish minuscules
+input pl_cud; % Polish and French quotation marks
+
+input romanu; % upper case (majuscules)
+input romanl; % lower case (minuscules)
+input greeku; % upper case Greek letters
+input romand; % numerals
+input romanp; % ampersand, question marks, currency sign
+input romspl; % lowercase specials (dotless \i, ligature \ae, etc.)
+input romspu; % uppercase specials (\AE, \OE, \O)
+input punct; % punctuation symbols common to roman and italic text
+input accent; % accents common to roman and italic text
+
+if ligs>1: input romlig; fi % letter ligatures
+if ligs>0: input comlig; fi % ligatures common with italic text
+if ligs<=1: input romsub; fi % substitutes for ligatures
+
+ligtable "!": "`" =: spanish_shriek;
+ligtable "?": "`" =: spanish_query;
+
+font_slant slant; font_x_height x_height#;
+if monospace:
+ font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else:
+ font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+
+% IMPLICIT KERNS:
+
+% three degrees of kerning (more precisely, |-u#| is fourth):
+k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#;
+
+% Usually a kern for a latin letter is repeated for the corresponding
+% diacritical one, except that no kerns after accented |"c"| are inserted,
+% and that some kerns after accented |"n"| and |"a"| with ogonek
+% are not inserted; the following kerns have been added:
+% - between |"a"| with ogonek and |"g"|, |"p"|
+% - between Polish crossed |"l"| and |"'"|
+% - between sansserif Polish crossed |"l"| and some minuscules
+% - between Polish opening quotes and some letters
+% the following kerns should have been added:
+% - between |"."| and |"."| (...)
+% - between |"A"| and |"v"| (Average)
+% - between |"A"| and |"w"| (Awkward or Lem's Awruk)
+% - between |"F"|, |"P"|, |"T"|, |"V"|, |"W"|, |"Y"| and |"."|, |","|
+% but for the sake of compatibility with CM's they would have been
+% inserted only if |improve_kerns=true| (by default |improve_kerns=false|).
+
+if improve_kerns: ligtable ".": "." kern -kkk#; fi
+ligtable "k":
+ if serifs: "v": "a" kern -u#, ogonked_a kern -u#, fi
+ "w": "e" kern k#, ogonked_e kern k#, "a" kern k#, ogonked_a kern k#,
+ "o" kern k#, accented_o kern k#, "c" kern k#, accented_c kern k#;
+ligtable "P":
+ if improve_kerns: "." kern k#, "," kern k#, fi
+ "A" kern kk#, ogonked_A kern kk#, "y":
+ "o" kern k#, accented_o kern k#, "e" kern k#, ogonked_e kern k#,
+ "a" kern k#, ogonked_a kern k#, "." kern kk#, "," kern kk#;
+ligtable "F": "V": "W":
+ if improve_kerns: "." kern -u#, "," kern -u#, fi
+ if serifs:
+ "o" kern kk#, accented_o kern kk#, "e" kern kk#, ogonked_e kern kk#,
+ "u" kern kk#, "r" kern kk#, "a" kern kk#, ogonked_a kern kk#,
+ "A" kern kkk#, ogonked_A kern kkk#,
+ else:
+ "o" kern k#, accented_o kern k#, "e" kern k#, ogonked_e kern k#,
+ "u" kern k#, "r" kern k#, "a" kern k#, ogonked_a kern k#, "A" kern kk#,
+ ogonked_A kern kk#,
+ fi
+ "K": "X": "O" kern k#, accented_O kern k#, "C" kern k#, accented_C kern k#,
+ "G" kern k#, "Q" kern k#;
+ligtable "T":
+ "y" kern if serifs: k# else: kk# fi, "Y": "e" kern kk#, ogonked_e kern kk#,
+ "o" kern kk#, accented_o kern kk#, "r" kern kk#,
+ "a" kern kk#, ogonked_a kern kk#, "A" kern kk#, ogonked_A kern kk#,
+ "u" kern kk# if improve_kerns:, "." kern k#, "," kern k# fi;
+ligtable "O": accented_O: "D":
+ "X" kern k#, "W" kern k#, "A" kern k#, ogonked_A kern k#,
+ "V" kern k#, "Y" kern k#;
+if serifs:
+ ligtable "h": "m": "n":
+ "t" kern k#, "b" kern k#,
+ accented_n: "u" kern k#, "y" kern k#, "v" kern k#, "w" kern k#;
+ ligtable "c": "h" kern k#, "k" kern k#;
+fi
+ligtable "o": accented_o: "b": "p":
+ "e" kern -k#, ogonked_e kern -k#, "o" kern -k#, accented_o kern -k#,
+ "x" kern k#, "d" kern -k#, "c" kern -k#, accented_c kern -k#, "q" kern -k#,
+ "a": if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi
+ "t": "y" kern k#, "u": "w" kern k#;
+
+ligtable "A":
+ if improve_kerns:
+ "v" kern if serifs: kkk# else: k# fi, "w" kern if serifs: kk# else: k# fi,
+ fi
+ ogonked_A: if serifs: "R": fi "t" kern k#, "C" kern k#, accented_C kern k#,
+ "O" kern k#, accented_O kern k#, "G" kern k#, "U" kern k#, "Q" kern k#,
+ "L": crossed_L: "T" kern kk#, "Y" kern kk#, "V" kern kkk#, "W" kern kkk#;
+ligtable "g": "j" kern -k#; % logjam
+ligtable "I": "I" kern -k#; % Richard III
+
+ligtable ogonked_a:
+ if serifs: "g" kern -k# , "p" kern -k#, fi\\ "w" kern k#;
+ligtable crossed_l: "'" kern -k#
+ if not serifs: ,
+ "a" kern k#, ogonked_a kern k#, "c" kern k#, accented_c kern k#,
+ "d" kern k#, "e" kern k#, ogonked_e kern k#, "g" kern k#,
+ "o" kern k#, accented_o kern k#, "s" kern k#, accented_s kern k#
+ fi;
+ligtable polish_opening_quotes:
+ "g" kern -k#, "j" kern -kkk#, "p" kern -k#, "y" kern u#,
+ "v" kern k#, "w" kern k#,
+ if serifs:
+ "A" kern u#, ogonked_A kern u#,
+ "C" kern u#, accented_C kern u#, "D" kern u#,
+ "E" kern u#, ogonked_E kern u#, "F" kern u#, "H" kern u#,
+ "I" kern u#, "J" kern u#, "K" kern u#, "L" kern u#, crossed_L kern u#,
+ "M" kern u#, "N" kern u#, accented_N kern u#, "P" kern u#,
+ "R" kern u#, "S" kern u#, accented_S kern u#, "T" kern k#, "X" kern u#,
+ "Y" kern k#, "Z" kern u#, accented_Z kern u#, dotted_Z kern u#,
+ else:
+ "T" kern kk#, "Y" kern kk#,
+ fi
+ "V" kern kk#, "W" kern k#;
+
+fi
+
+% There are also ligature/kern programs for |"f"| in the ROMLIG file,
+% for |"-"|, |"`"|, and |"'"| in the COMLIG file,
+% and for |"<"|, |">"|, |","| in the PL_CUD file.
+
+bye.
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/polkap.mf b/Master/texmf-dist/fonts/source/public/pl/polkap.mf
new file mode 100644
index 00000000000..eaf5d0ab04f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/polkap.mf
@@ -0,0 +1,224 @@
+% ---------------------------------------------------------------------------
+% This is POLKAP.MF ({\bif{}polskie kapitaliki}, i.e., caps \& small caps) in
+% text format.
+% The program is a modification of the CSC.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF MODIFICATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures" fi;
+spanish_shriek=oct"016"; spanish_query=oct"017";
+
+mode_setup; font_setup;
+
+input pl_dod; % Polish additional definitions
+input pl_dl; % Polish majuscules
+input pl_cud; % Polish and French quotation marks
+
+input romanu; % upper case (majuscules)
+input greeku; % upper case greek letters
+input romand; % numerals
+input romanp; % ampersand, question marks, currency sign
+input romspu; % uppercase specials (\AE, \OE, \O)
+input punct; % punctuation symbols common to all roman and italic
+input accent; % accents common to roman and italic text
+input romsub; % substitutes for ligatures
+
+if ligs>0: input comlig; fi % ligatures common with italic
+
+ligtable "!": "`" =: spanish_shriek;
+ligtable "?": "`" =: spanish_query;
+font_slant slant; font_x_height x_height#;
+
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+
+% IMPLICIT KERNS (the first portion):
+
+% three degrees of kerning (more precisely, |-u#| is fourth):
+k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#;
+
+% The kern for a latin letter is repeated for the corresponding
+% diacritical one; the following kerns, however, should have been added
+% between |"F"|, |"P"|, |"T"|, |"V"|, |"W"|, |"Y"| and |"."|, |","|,
+% and between dots (because of `...') but for the sake of compatibility
+% with CM's they would have been inserted only if |improve_kerns=true|
+% (by default |improve_kerns=false|).
+
+if improve_kerns: ligtable ".": "." kern -kkk#; fi
+ligtable "P": "T": "Y":
+ if improve_kerns: "." kern k#, "," kern k#, fi
+ "a" kern kk#, ogonked_a kern kk#, "A" kern kk#, ogonked_A kern kk#;
+ligtable "F": "V": "W":
+ if improve_kerns: "." kern -u#, "," kern -u#, fi
+ if serifs: "a" kern kkk#, ogonked_a kern kkk#,
+ "A" kern kkk#, ogonked_A kern kkk#,
+ else:
+ "a" kern kk#, ogonked_a kern kk#, "A" kern kk#, ogonked_A kern kk#,
+ fi
+ "K": "X": "o" kern k#, accented_o kern k#, "O" kern k#, accented_O kern k#,
+ "c" kern k#, accented_c kern k#, "C" kern k#, accented_C kern k#,
+ "g" kern k#, "G" kern k#, "q" kern k#, "Q" kern k#;
+ligtable "O": accented_O: "D":
+ "x" kern k#, "X" kern k#, "w" kern k#, "W" kern k#,
+ "a" kern k#, ogonked_a kern k#, "A" kern k#, ogonked_A kern k#,
+ "v" kern k#, "V" kern k#, "y" kern k#, "Y" kern k#;
+ligtable "A": ogonked_A: if serifs: "R": fi
+ "c" kern k#, accented_c kern k#, "C" kern k#, accented_C kern k#,
+ "o" kern k#, accented_o kern k#, "O" kern k#, accented_O kern k#,
+ "g" kern k#, "G" kern k#, "u" kern k#, "U" kern k#, "q" kern k#,
+ "Q" kern k#, "L": crossed_L: "T" kern kk#, "t" kern kk#,
+ "Y" kern kk#, "y" kern kk#, "V" kern kkk#, "v" kern kkk#,
+ "W" kern kkk#, "w" kern kkk#;
+ligtable "I": "I" kern -k#; % Richard III
+
+fi
+
+boolean is_small_cap; is_small_cap:=true;
+%%% fine higher
+% the `higher' values are used while putting accents and attaching ogoneks
+forsuffixes $=u,o,letter_fit,cap_height,x_height,bar_height,body_height,stem:
+ higher.$.#:=$.#; higher.$:=$;
+endfor
+
+%%% fine lower
+forsuffixes $ = u, width_adj, cap_serif_fit, letter_fit,
+ body_height, cap_height, x_height, bar_height, comma_depth,
+ flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
+ cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
+ o, apex_o: $.#:=lower.$.#;
+endfor
+fudge:=lower.fudge;
+
+% optional part:
+forsuffixes $ = depth_corr, left_corr, top_breadth_corr, tip_breadth_corr,
+ tip_xcorr, tip_ycorr, pre_angle, post_angle, pre_limit, post_limit,
+ pre_lightness, post_lightness, pre_deflexion, post_deflexion, cap_flat,
+ ogonek_pen#: if known lower.$: $:=lower.$; fi
+endfor
+
+font_setup; % now try again with |lower| settings
+
+% repeat ``last minute font setup'' from PL_DOD.MF, as |font_setup|
+% clears pen memory
+%%% define_pixels prepare_pen
+if not serifs: fisp:=round(1/3[fine,crisp]); prepare_pen fisp; fi
+if known ogonek_pen#:
+ define_whole_pixels(ogonek_pen); prepare_pen ogonek_pen;
+fi
+
+ogonked_A:=ogonked_a;
+accented_C:=accented_c;
+ogonked_E:=ogonked_e;
+crossed_L:=crossed_l;
+accented_N:=accented_n;
+accented_O:=accented_o;
+accented_S:=accented_s;
+accented_Z:=accented_z;
+dotted_Z:=dotted_z;
+
+saved_height:=whatever;
+
+input pl_dl; % Polish majuscules (in positions of respective minuscules)
+
+% restore the previous state (ordnung must sein):
+polish_uc_positions; is_small_cap:=false;
+
+extra_endchar:=extra_endchar&";charcode:=charcode+code_offset";
+
+code_offset:=ASCII"a" - ASCII"A";
+input romanu; % majuscules (in positions of respective minuscules)
+code_offset:=-3;
+input romspu; % \AE, \OE, \O\ (in positions of \ae, \oe, \o)
+code_offset:=0;
+input cscspu; % substitutes for the remaining characters of romspl
+
+if not monospace:
+
+% IMPLICIT KERNS (the second portion):
+
+% three degrees of kerning (more precisely, |-u#| is fourth):
+k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#;
+
+% Usually a kern for a latin letter is repeated for the corresponding
+% diacritical one except that kerns
+% - between Polish opening quotes and some letters
+% have been added; the following kerns should have been added:
+% - between |"f"|, |"p"|, |"t"|, |"v"|, |"w"|, |"y"| and |"."|, |","|
+% - between |"a"| with ogonek, |"a"| and |"'"|
+% but for the sake of compatibility with CM's they would have been
+% inserted only if |improve_kerns=true| (see the comment in the first
+% of implicit kerns).
+
+ligtable "p": "t": "y":
+ if improve_kerns: "." kern k#, "," kern k#, fi
+ "a" kern kk#, ogonked_a kern kk#;
+ligtable "f": "v": "w":
+ if improve_kerns: "." kern -u#, "," kern -u#, fi
+ "a" kern if serifs: kkk# else: kk# fi,
+ ogonked_a kern if serifs: kkk# else: kk# fi,
+ "k": "x": "o" kern k#, accented_o kern k#, "c" kern k#,
+ accented_c kern k#, "g" kern k#, "q" kern k#;
+ligtable "o": accented_o: "d":
+ "x" kern k#, "w" kern k#, "a" kern k#, ogonked_a kern k#,
+ "v" kern k#, "y" kern k#;
+ligtable "a": ogonked_a:
+ if improve_kerns: "'" kern kk#, fi
+ if serifs: "r": fi "c" kern k#, accented_c kern k#,
+ "o" kern k#, accented_o kern k#, "g" kern k#, "u" kern k#, "q" kern k#,
+ "l": crossed_l: "'" kern kk#, "t" kern kk#, "y" kern kk#, "v" kern kkk#,
+ "w" kern kkk#;
+ligtable "i": "i" kern -k#; % skiing (in Polish, e.g., poliizopren)
+
+ligtable polish_opening_quotes:
+ if serifs:
+ "A" kern -k#, ogonked_A kern -k#,
+ "C" kern -k#, accented_C kern -k#, "D" kern -k#,
+ "E" kern -k#, ogonked_E kern -k#, "F" kern -k#, "H" kern -k#,
+ "I" kern -k#, "J" kern -k#, "K" kern -k#,
+ "L" kern -k#, crossed_L kern -k#, "M" kern -k#,
+ "N" kern -k#, accented_N kern -k#, "P" kern -k#,
+ "R" kern -k#, "S" kern -k#, accented_S kern -k#, "T" kern k#,
+ "X" kern -k#, "Y" kern k#,
+ "Z" kern -k#, accented_Z kern -k#, dotted_Z kern -k#,
+ else:
+ "T" kern kk#, "Y" kern kk#,
+ fi
+ "V" kern kk#, "W" kern k#,
+ if serifs:
+ "a" kern -k#, ogonked_a kern -k#,
+ "c" kern -k#, accented_c kern -k#, "d" kern -k#,
+ "e" kern -k#, ogonked_e kern -k#, "f" kern -k#, "h" kern -k#,
+ "i" kern -k#, "j" kern -k#, "k" kern -k#,
+ "l" kern -k#, crossed_l kern -k#, "m" kern -k#,
+ "n" kern -k#, accented_n kern -k#, "p" kern -k#,
+ "r" kern -k#, "s" kern -k#, accented_s kern -k#, "t" kern k#,
+ "x" kern -k#, "y" kern k#,
+ "z" kern -k#, accented_z kern -k#, dotted_z kern -k#,
+ else:
+ "t" kern kk#, "y" kern kk#,
+ fi
+ "v" kern kk#, "w" kern k#;
+fi
+
+% There are also ligature/kern |"-"|, |"`"|, and |"'"| in the COMLIG file
+% and for |"<"|, |">"|, |","| in the PL_CUD file.
+
+bye.
+%%\end
+
diff --git a/Master/texmf-dist/fonts/source/public/pl/polkur.mf b/Master/texmf-dist/fonts/source/public/pl/polkur.mf
new file mode 100644
index 00000000000..ee31ca5f3ea
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/polkur.mf
@@ -0,0 +1,132 @@
+% ---------------------------------------------------------------------------
+% This is POLKUR.MF ({\bif{}polska kursywa}, i.e., text italic)
+% in text format.
+% The program is a modification of the TEXTIT.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF MODIFICATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+mode_setup; font_setup;
+
+input pl_dod; % Polish additional definitions
+input pl_mlk; % Polish italic minuscules
+input itall; % lower case (minuscules)
+input italsp; % lowercase specials (dotless \i, ligature \ae, etc.)
+
+if ligs>1: font_coding_scheme:="TeX text";
+ spanish_shriek=oct"074"; spanish_query=oct"076";
+ input italig; % letter ligatures
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures" fi;
+ spanish_shriek=oct"016"; spanish_query=oct"017";
+fi
+
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+ letter_fit#:=letter_fit:=0; % caps are wider
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+fi
+
+input pl_cud; % Polish and French quotation marks
+input pl_dl; % Polish majuscules
+
+input romanu; % upper case (majuscules)
+input greeku; % upper case greek letters
+input itald; % numerals
+input italp; % ampersand, question marks, currency sign
+input romspu; % uppercase specials (\AE, \OE, \O)
+input punct; % punctuation symbols common to roman and italic text
+input accent; % accents common to roman and italic text
+
+if ligs>0: input comlig; fi % ligatures common with roman text
+if ligs<=1: input romsub; fi % substitutes for ligatures
+
+ligtable "!": "`" =: spanish_shriek;
+ligtable "?": "`" =: spanish_query;
+
+if not monospace:
+% IMPLICIT KERNS:
+
+% three degrees of kerning (more precisely, |-u#| is fourth):
+k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#;
+
+% Usually a kern for a latin letter is repeated for the corresponding
+% diacritical one, except that the kern between accented |"n"| and |"'"|
+% is not been inserted, also some kerns after crossed |"l"| are not inserted;
+% the following kerns have been added:
+% - between Polish crossed |"l"| and |"'"|
+% - between Polish opening quotes and some letters
+% the following kerns should have been added:
+% - between |"."| and |"."| (...)
+% - between |"A"| and |"v"| (Average)
+% - between |"A"| and |"w"| (Awkward or Lem's Awruk)
+% - between |"F"|, |"P"|, |"T"|, |"V"|, |"W"|, |"Y"| and |"."|, |","|
+% but for the sake of compatibility with CM's they would have been
+% inserted only if |improve_kerns=true| (by default |improve_kerns=false|).
+
+if improve_kerns: ligtable ".": "." kern -kkk#; fi
+ligtable "d": "w": "l": "l" kern u#;
+ligtable crossed_l: "'" kern -k#;
+ligtable "F": "V":
+ if improve_kerns: "." kern -u#, "," kern -u#, fi
+ "o" kern kk#, accented_o kern kk#,
+ "e" kern kk#, ogonked_e kern kk#, "u" kern kk#, "r" kern kk#,
+ "a" kern kk#, ogonked_a kern kk#, "A" kern kkk#, ogonked_A kern kkk#,
+ "K": "X": "O" kern k#, accented_O kern k#,
+ "C" kern k#, accented_C kern k#, "G" kern k#, "Q" kern k#;
+ligtable "T": "y" kern kk#,
+ "Y": "e" kern kk#, ogonked_e kern kk#,
+ "o" kern kk#, accented_o kern kk#, "r" kern kk#,
+ "a" kern kk#, ogonked_a kern kk#, "u" kern kk#,
+ "P": "W": "A" kern kk#, ogonked_A kern kk#
+ if improve_kerns: , "." kern k#, "," kern k# fi;
+ligtable "O": accented_O: "D":
+ "X" kern k#, "W" kern k#, "A" kern k#, ogonked_A kern k#,
+ "V" kern k#, "Y" kern k#;
+ligtable "A":
+ if improve_kerns: "v" kern kk#, "w" kern kk#, fi
+ ogonked_A: "R": "n" kern k#, accented_n kern k#,
+ "l" kern k#, crossed_l kern k#, "r" kern k#, "u" kern k#,
+ "m" kern k#, "t" kern k#, "i" kern k#, "C" kern k#, accented_C kern k#,
+ "O" kern k#, accented_O kern k#, "G" kern k#,
+ "h" kern k#, "b" kern k#, "U" kern k#, "k" kern k#, "v" kern k#,
+ "w" kern k#, "Q" kern k#, "L": crossed_L: "T" kern kk#, "Y" kern kk#,
+ "V" kern kkk#, "W" kern kkk#,
+ "b": "c": accented_c: "e": ogonked_e: "o": accented_o: "p": "r":
+ "e" kern -u#, ogonked_e kern -u#, "a" kern -u#, ogonked_a kern -u#,
+ "o" kern -u#, accented_o kern -u#, "d" kern -u#,
+ "c" kern -u#, accented_c kern -u#, "g" kern -u#, "q" kern -u#;
+ligtable "n": "'" kern kkk#;
+ligtable polish_opening_quotes:
+ "f" kern u#, "g" kern -k#, "j" kern u#,
+ "p" kern -k#, "y" kern -k#, "v" kern k#, "w" kern k#,
+ "A" kern -k#, ogonked_A kern -k#, "C" kern -k#, accented_C kern -k#,
+ "D" kern -k#, "E" kern -k#, ogonked_E kern -k#, "F" kern -k#, "H" kern -k#,
+ "I" kern -k#, "J" kern -k#, "K" kern -k#, "L" kern -k#, crossed_L kern -k#,
+ "M" kern -k#, "N" kern -k#, accented_N kern -k#, "P" kern -k#,
+ "R" kern -k#, "S" kern -k#, accented_S kern -k#, "T" kern kk#,
+ "X" kern -k#, "Y" kern kk#,
+ "Z" kern -k#, dotted_Z kern -k#, accented_Z kern -k#,
+ "V" kern kkk#, "W" kern kk#;
+fi
+
+% There are also ligature/kern programs for |"f"| in the ITALIG file,
+% for |"-"|, |"`"|, and |"'"| in the COMLIG file,
+% and for |"<"|,|">"|,|","| in the PL_CUD file
+
+bye.
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/polmat.mf b/Master/texmf-dist/fonts/source/public/pl/polmat.mf
new file mode 100644
index 00000000000..8d9e3dc350d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/polmat.mf
@@ -0,0 +1,48 @@
+% ---------------------------------------------------------------------------
+% This is POLMAT.MF ({\bif{}polski font matematyczny}, i.e., the Polish
+% extension of Computer Modern Symbol fonts) in text format.
+% The program is a modification of the MATHSY.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF MODIFICATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=hair;
+input calu; % upper case calligraphic alphabet
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input symbol; % the symbols
+xleq=172; xgeq=173; % codes similar to codes of French quotation marks
+input pl_sym; % extra symbols used in Polish math typesetting
+
+if not monospace:
+ skewchar=oct"060"; skew#=.5u#;
+ ligtable "I": "T": "V": skewchar kern skew#;
+ ligtable "K": skewchar kern 2skew#;
+ ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#;
+ ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#;
+ ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#;
+ ligtable "J": skewchar kern 6skew#;
+ ligtable "A": skewchar kern 7skew#;
+fi;
+
+bye.
+%%\end
diff --git a/Master/texmf-dist/fonts/source/public/pl/poltyt.mf b/Master/texmf-dist/fonts/source/public/pl/poltyt.mf
new file mode 100644
index 00000000000..7eb35982e30
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/pl/poltyt.mf
@@ -0,0 +1,63 @@
+% ---------------------------------------------------------------------------
+% This is POLTYT.MF ({\bif{}polski font tytu\l{}owy}, i.e., title font)
+% in text format. The font contains caps and digits only.
+% The program is a modification of the MATHSY.MF file.
+% ---------------------------------------------------------------------------
+% PL VERSION 1.09, April 13th, 2001 -- released for BachoTeX 2001
+% ---------------------------------------------------------------------------
+% AUTHORS OF MODIFICATION: {\bif{}Bogus\l{}aw Jackowski \& Marek Ry\'cko}
+% ---------------------------------------------------------------------------
+% This file belongs to the public domain under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+%
+% For details see either the file MEXINFO.POL or MEXINFO.ENG.
+% ---------------------------------------------------------------------------
+
+
+% ---------------------------------------------------------------------------
+font_coding_scheme:="Caps and digits only";
+
+mode_setup; font_setup;
+
+input pl_dod; % Polish additional definitions
+input pl_dl; % Polish majuscules
+
+input romanu; % upper case (majuscules)
+input romand; % numerals
+
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else:
+ font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+
+% IMPLICIT KERNS:
+
+k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+
+% A kern for a latin letter is repeated for the corresponding
+% diacritical one:
+ligtable "P": "T": "Y": "A" kern kk#, ogonked_A kern kk#;
+ligtable "F": "V": "W":
+ "A" kern if serifs: kkk# else: kk# fi,
+ ogonked_A kern if serifs: kkk# else: kk# fi,
+ "K": "X": "O" kern k#, accented_O kern k#,
+ "C" kern k#, accented_C kern k#, "G" kern k#, "Q" kern k#;
+ligtable "O": accented_O: "D":
+ "X" kern k#, "W" kern k#, "A" kern k#, ogonked_A kern k#,
+ "V" kern k#, "Y" kern k#;
+ligtable "A": ogonked_A: if serifs: "R": fi
+ "C" kern k#, accented_C kern k#, "O" kern k#, accented_O kern k#,
+ "G" kern k#, "U" kern k#, "Q" kern k#, "L": crossed_L: "T" kern kk#,
+ "Y" kern kkk#, "V" kern kk#, "W" kern kkk#;
+ligtable "I": "I" kern -k#; % Richard III
+
+fi
+
+bye.
+%%\end
+