diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
commit | 215012a8d684889983ec2c0629e1c704e6853d9c (patch) | |
tree | ebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/pl | |
parent | 1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (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')
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 + |