diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/vicentino |
Initial commit
Diffstat (limited to 'fonts/vicentino')
71 files changed, 4342 insertions, 0 deletions
diff --git a/fonts/vicentino/README b/fonts/vicentino/README new file mode 100644 index 0000000000..df2a77b05f --- /dev/null +++ b/fonts/vicentino/README @@ -0,0 +1,4 @@ +Please see the files + kraml/read.me + kraml/readme.2 + kilfiger/readme diff --git a/fonts/vicentino/kilfiger/ot1vc.fd b/fonts/vicentino/kilfiger/ot1vc.fd new file mode 100644 index 0000000000..c882d2b48f --- /dev/null +++ b/fonts/vicentino/kilfiger/ot1vc.fd @@ -0,0 +1,61 @@ +%This was written by James Kilfiger, to support the Vicentino fonts of +%Willibald Kraml +\ProvidesFile{ot1vc.fd}[1999/10/05 Vincentino] +\DeclareFontFamily{OT1}{vc}{\hyphenchar\font=-1} +\DeclareFontShape{OT1}{vc}{m}{it}{% +<5><6><7><8><9><10> vcc10 +<10.95> vcc11 +<12> vcc12 +<14.4> vcc14 +<17.28> vcc17 +<20.74><24.88> vcc20}{} + +\DeclareFontShape{OT1}{vc}{b}{it}{% +<5><6><7><8><9><10><10.95><12> vccb10 +<14.4><17.28><20.74><24.88> vccb14}{} + +\DeclareFontShape{OT1}{vc}{m}{sl}{% +<5><6><7><8><9><10><10.95><12> vcm10 +<14.4><17.28><20.74><24.88> vcm14}{} + +\DeclareFontShape{OT1}{vc}{b}{sl}{% +<5><6><7><8><9><10> vcmb10 +<10.95> vcmb11 +<12> vcmb12 +<14.4><17.28><20.74><24.88> vcmb14}{} + +\DeclareFontShape{OT1}{vc}{m}{ui}{% +<5><6><7><8><9><10><10.95><12> vct10 +<14.4><17.28><20.74><24.88> vct14}{} + +\DeclareFontShape{OT1}{vc}{b}{ui}{% +<5><6><7><8><9><10><10.95><12> vctb10 +<14.4><17.28><20.74><24.88> vctb14}{} + +\DeclareFontShape{OT1}{vc}{m}{its}{ +<5><6><7><8><9><10><10.95><12> vcca10 +<14.4><17.28><20.74><24.88> vcca14}{} + +\DeclareFontShape{OT1}{vc}{b}{its}{ +<5><6><7><8><9><10><10.95><12> vccba10 +<14.4><17.28><20.74><24.88> vccba14}{} + +\DeclareFontShape{OT1}{vc}{m}{sls}{ +<5><6><7><8><9><10><10.95><12> vcma10 +<14.4><17.28><20.74><24.88> vcma14}{} + +\DeclareFontShape{OT1}{vc}{b}{sls}{ +<5><6><7><8><9><10><10.95><12> vcmba10 +<14.4><17.28><20.74><24.88> vcmba14}{} + +\DeclareFontShape{OT1}{vc}{m}{uis}{ +<5><6><7><8><9><10><10.95><12> vcta10 +<14.4><17.28><20.74><24.88> vcta14}{} + +\DeclareFontShape{OT1}{vc}{b}{uis}{ +<5><6><7><8><9><10><10.95><12> vctba10 +<14.4><17.28><20.74><24.88> vctba14}{} + +\DeclareFontShape{OT1}{vc}{bx}{it}{<->ssub * vc/b/it}{} +\DeclareFontShape{OT1}{vc}{bx}{sl}{<->ssub * vc/b/sl}{} +\DeclareFontShape{OT1}{vc}{bx}{ui}{<->ssub * vc/b/ui}{} diff --git a/fonts/vicentino/kilfiger/readme b/fonts/vicentino/kilfiger/readme new file mode 100644 index 0000000000..dbb554763d --- /dev/null +++ b/fonts/vicentino/kilfiger/readme @@ -0,0 +1,42 @@ +These fonts provide three script fonts. A `cursive' shape, which is a +slanted shape written with a wide-nibbed pen. A `twist' shape: a slanted +shape with constant width. And a `modern script' shape: an upright shape +with a forward sloping stress axis. They would mainly be suitable for +display text. + +See the readme file in the kraml directory for details of the fonts. +In this directory there are support files: + ot1vc.fd A font definition file + vicent.sty A package to help use of these fonts + testvic.{tex,ps} An example file. +Comments about these files should be directed to James Kilfiger +<mapdn@csv.warwick.ac.uk> + +Installation: +The ot1vc.fd and vicent.sty should be put somewhere where TeX can find +them. On a TDS distribution, such as teTeX or MiKTeX, an appropriate +place might be .../texmf/tex/latex/mfnfss/ . Willibald Kraml's .mf files +should be placed where metafont can find them. For example in +.../texmf/fonts/source/public/vc/ . You will probably now need to +refresh your texmf database, by issuing the command `texhash' on teTeX +or from the MikTeX menu in the start menu. You may need to run metafont +by hand, but this is not necessary on modern TeX distributions. + +Use: +The fonts may be used with both plain TeX and LaTeX. Plain users should +load the fonts with the \font primitive command. LaTeX users should +give the command \usepackage{vicent} in the preamble of their document. +This package provides three font changing declarations: \cursiveshape, +\twistshape, and \modernscriptshape; and corresponding text font +commands: \textcursive, etc. + +Note for Latex hackers: +This family can be chosen with \fontfamily{vc}, then the cursive shape +with \fontshape{it}, the modern script shape by \fontshape{sl} and the +twist shape by \fontshape{ui}. + +The fonts also provide lowercase swash characters, these can only be +selected by \fontshape commands, with shapes `its', `uis', and `sls'. + + + diff --git a/fonts/vicentino/kilfiger/testvic.ps b/fonts/vicentino/kilfiger/testvic.ps new file mode 100644 index 0000000000..c5c2826b64 --- /dev/null +++ b/fonts/vicentino/kilfiger/testvic.ps @@ -0,0 +1,704 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software +%%Title: testvic.dvi +%%Pages: 1 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -D 600 testvic.dvi -o +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 1999.10.06:1404 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +TeXDict begin 39158280 55380996 1000 600 600 (testvic.dvi) +@start +%DVIPSBitmapFont: Fa cmr10 10 1 +/Fa 1 50 df<EB01C013031307131F13FFB5FCA2131F1200B3B3A8497E007FB512F0A31C +3879B72A>49 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fb vcca14 17.28 1 +/Fb 1 115 df<F501801D07023C021F170F02FCDA7F80EE3FC0D903FE4A6C167F010F02 +0318FF013F5C4948011F7FD801FF4A198048157CD807C7903801F87FD81F07D903F06D17 +00000C9026F807E060D8000F90260FC03F4C5A031F6EED03F0DB3F8001FEED3FE00400D9 +FFFC90380FFFC04A4892B7C7FC011F01FE6D5EDAF1FC18F84B6D16E002E36E93C8FC9026 +3FE7F0010015F802EF030791C9FC4B91CCFC4A5A14FF495BA292CFFC5C13FF5CA25C5A5C +A25C485BA25CA24890D0FCA35B120F5BA2485AA25BA2123F5BA25B127FA25B90D1FC12FC +5A1260624176C062>114 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc vct14 17.28 10 +/Fc 10 116 df<ED0FF8ED7FFF4AB512C04A14F04A14FC4A804A804A819338E07FC04A90 +38000FE003FCEB03F04BEB00F84A48147C4B143C4B143E4949143F8492C81380A34A16C0 +0103163F187F5C18FFA2187FA2183F4AED1F80F00F0084010793C7FCA85CA693B57E02F3 +B67E91B77E013F820007B87E121F84A26C4BC67E6C02F8C7FC6C01FCC8FC6C13F0EA00F7 +1307A71701A860A71703A860AC1701A2717E84187FF03F80181F180F95C7FCA3130FA85C +131FA5133FA3495AA213FF5A5A485B121F5AB5CBFCA25B5B6C5A6C5AEA1FC06C5A3A917B +EC48>12 D<ED038016C016E016F0A216F8A91501A416FCB3AC1500A416FEB3AB167EA416 +7FB016FFA45DA35D16FE1507150FA2ED1FFC153F157FEDFFF85C020713F0021F13E000E0 +137FD8FC03B512C0B712806C15006C5C5D6C14F06C14C0000191C7FC38003FF828828BE2 +30>74 D<EF01C000F8836C836C836C836C7E123F6C7E1703A31707A2170FA2171F4D5AA2 +177F4D5A5E4C5B5E4C5B4C5B5E93B5C8FC4B5B4B5B030F5B000F4A5B4B5B92B55A4A5C6D +4849C9FC020F5B4A5B4A13E04A5B91B55A01E349CAFC01E75B01EF5B90B512E05D5D01EF +90CBFC5CEBE7F8EBE3F013E1EBE0F81478147C808080816E7E6E7E14018100076D7E157C +153C153E6D7F6F7E1507826F7E6F7E150082167C82161E161F707E707E707E160183707E +177C000F163C173E83717E001F707E717E007F707E17004982003F177C84001F836C4870 +7E0007717E6CCA6C7ECBEA01F8727E197E85F11F80F10FC0F107E0190119001A60436E74 +E350>I<013E1438D9FF80133C4801E0133E4801F8133F487F02FF148048148015E048EB +9FF09038FE07FC9038FC01FE393FF800FF49EB3FBFED1FFF491307007F80491300167F16 +3F5B167F12FFA290C8FC16FFA35DA25A5DA35DA25DA25DA2007E5C17C05DA2007F91B5FC +5C6C15DF5C4A139F7E6D48131F5C000FEB3FFE9038C07FFC000713FFD803E3EBF80F90B5 +12F07E6C14E06D9038C007E06D13806D90380003F06D481301D903F8130090C912702C40 +79BE3D>97 D<EC7FC0903803FFF0010F13FC497F017F7F90B67E488148814814039138F8 +01F04801E07F14C04801007F491303485A4913075B007F140F49131F153F49137F00FF49 +485A495A020F5B5CD9007F5B49B55A01075C013F91C7FC48B512FCB65A15E05D92C8FC14 +FC14F014806C48C9FC13F01380007ECAFC127F7EA37E7F120FA26C7EA26C6C147016F8D8 +01F8EB03FCD800FEEB7FFE017FB6FC6D15807F7F6D150001015C6D6C13F8021F90C7FC29 +3F7DBE2E>101 D<D90FC0141ED93FF0143FD97FFEEC7F8090B56C14C04802F013FF03FC +14E04814FF16C04801E301F113C0028001FD1380DA001FB51200484813074901005B163F +4848140F1603495DA3491407123FA249140F5F161FA3163F5B167FA216FFA25DA25DA25D +A2001F5C5DA2ED3FFD6D14F9157F000FECFFF14A8016E14A13C16C6C5A4A13815C000349 +13019039F0FFFE00D801F35B6CB5FC5D6D497F6D5B6D5B6D5B6D48C7FCEB01F890C9FC17 +7EA4177FA800E05E7E7E007C5DA26C5D5E6C5D4C5A6C6C147FD807E014FFD803F801075B +3901FF807F6C90B65A6D5D6D5D6D5D010792C7FC01015C6D6C13F0020790C8FC33617ABE +3D>103 D<12E07E1278127C7EA2123FEA7F80A5123F121F120FEA0700C7FCB212F07E7E +127E127F7E1380A2121FA413C0AC123FA81380B3A3121FA4EA0FC0A2EA07E0EA03F01201 +12000C6177E020>105 D<12E07E7E7EA27EB3B3B0127EA4127FB3A97EA41380A7121FA3 +120F13C0EA07E0EA03F0120112000C6C77EB20>108 D<DB0FC0EC0F8000E0DA3FF0EC3F +E06C4A6C4A7E6C4A6C4A7E6C496D497F007E496D497F4A5D007F0480806C495D4A01BF49 +13BF043F153F91263FFE1FD93FFE13809026807FFCEC7FFC03F815F8DAFFF0ECFFF08301 +8101E001C113E003C015C0018315C3038015800187010001C71300A2D98FFEECCFFEA2D9 +9FFCECDFFCA24AECFFF813BF4A5D13FF4A5DA24A5DA2605CA291C791C7FCA25F5B121F5F +5BA25F5BA3495DA35F5BA4495D1A1F120F040FED0FC00007030715070003030315030001 +030115014A4078BF5C>I<EB1FFC90387FFFC048B512F048804880488081168048EBC03F +9138000FC001FC131F4914E05BA249130FA26C48130715030007EC01C092C7FC6C7EA2EA +01F8EA00FE137FEB3FC0EB1FF0EB0FFC6DB4FC010113C06D6C7EEC3FF8EC0FFCEC03FEEC +00FFED3F80ED0FC0ED07E0ED01F0A2ED00F8A216FCA2ED01FE127812FC6C1403A26C1407 +6D130F151F007FEC7FFC90C712FF383FF0076CB612F87E6C15F06C15E06C15C06C6C1400 +011F5B010013F0273F7DBE2E>115 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd vctb14 14.4 9 +/Fd 9 116 df<903801FFF890B512FE000F80B712C08282826C816C81A26C9038F8003F +49C77E49815B83A25B83163FA249147FA216FFA25D5D5D4B5B153F4AB55A141F01EFB6C7 +FCA25E5E01E75C01E35C5E01E114F8260FE07F7F6E7F9138003FFF03017F9238003FC0EE +0FE06DEC03F01601707E83177C177EA283A31880A318C0A2177FA417FFA25E5EA24C1380 +5E5E001F5D93B51200000F140301FF013F5B6C90B65AA26C5E6C5E6C5E6D5D010F92C7FC +010314FCD9007F13F0020390C8FC32567CD141>66 D<ED018016E016F016F816FC150316 +FEA816FCA51507A916F8AAEB3F803801FFF84813FF4814E74814FFA25AA25AA248130190 +38FC001F49130F5BA24848131FA25B153F5B157FA315FF90C7FC5CA25CA25CA26C5BA25C +5C6C5BA26DB5FCD81F8113FB13830187EBF3FCEA0FDF90B512E36C14C36C1481A26C1400 +6C4913FE6D48137E6D48133FD90FE0131F6D48130F285A79D937>100 +D<14FF010713C0011F13F0017F7F48B57E48804880481580A24815C0ECFC0F489038E01F +E014803A7FFE003FF049137F4913FF48485A1407EBE01F147F01C1B512E013CF90B612C0 +168016005D15F815E015804AC7FC6C13F814C049C8FC13F0EA3F8090C9FC6C7EA2120F7F +1207D803FCEB078090B612C06C15E06C15F06D14F87F6D14FC13077F010014F8020F13E0 +26347EB32A>I<12C07E12F87E127C127EA2B4FCA21380127FA2123F121F120F1207EA03 +00C7FCAE12E012F87E127E127F7E1380A213C0B3B2121FA2120FA2EA07E01203EA01F012 +0013200C5478D21D>105 D<12C07E7E7E7EA27EA27EB3B3AD7EA61380AE123FA5121F13 +C0120FA2EA07E01203EA01F0120013200C5B78D91D>108 D<150F00E0EC3FC000F8ECFF +E0007C497F007E497F6C5B4A7F6D487F5CA26D487F91B6FC01C15B5D01C35B5D01C75B01 +CF5BA201DF5B5DEBFFFEA25CA25C5CA25C7E5CA25CA291C7FCA25BA25BA35BA35BA2826C +5A000781820003ED0F8000011507D80060140329357AB437>110 +D<14FF010F13E0013F13F8497F48B6FC48814881488182488148EBFC039138C0007C4A13 +7E4848C7FC49805B5B00FF16805B5B17C0A25BA3167F90C8FCA316FF7E5DA26C5C17805D +6C6C5B5D000F4A13006D90B5FC0007495B3803F00F90B65A7E6C5D6D5C6D5C6D5C010791 +C7FC6D5B010013F8EC3FC02A347EB330>I<00E0EB03C000F8EB0FF0007C497E007E497E +6C49B4FC91B512806D14C0018114E0138301C314F001C713F0EDE07801CFEBC038ED8000 +01DF90C7FCA2EBFFFE5CA25CA25CA25CA25CA25C7EA291C8FCA25BA35BA35BA45BA46C5A +1207A212031201EA006025347AB32D>114 D<EB7FFE0003B57E000F14E0488048808148 +80A281A249C6138001F0137F6C5A49133F001F141F49130F000FEC070001E090C7FCEA07 +F8EA03FE6C6C7E6C13E0EB7FF8EB3FFEEB0FFF6D13C001017F6D6C7EEC1FF8EC07FCEC01 +FEEC007F151F1680A20060EC3FC0127000FCEC7FE06C14FF5C6C1307387F801F90B6FC7E +16C07E6C15806C15006C5CC614F86D13E00107138023347DB32A>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe vct14 14.4 31 +/Fe 31 123 df<1206EA0780EA03C0A2EA01E0EA00F0A21378A213FCA2EA01FEA2120312 +07EA0FFC121FEAFFF8A213F013E0EA7FC0EA3F80EA1F000F187ADA2A>39 +D<12C012E012F01278127CA2127E12FEA3127E123EA2120C070E748D1E>46 +D<903801FFF090B512FE001F6E7EB77E8282826CEBF000D83FFCC7123C001F81EA03F800 +07151F498083A3835BA2161FA2163FA2167FA24C5A5D4B90C7FC5DED1FFE157F913803FF +FC01E1B55A01E75C5E01E35C01E15C16E001E014F8023F13FE000390380007FF03007FEE +1FC0EE07E06DEC01F0160017788383A283A21880A2EF07C0A418E0A4170FA3171FA2173F +18C0177FA2EFFF805E4C13005E0007ED1FFE167F6C6C49485A9026FFC00F5B6C90B65A6C +5E6D5D010F92C7FC010314FCD9007F13F00203138033567ED13C>66 +D<000FB512E0B7FC16C016F816FE6C816C16C06CD900017FD801FE9038000FF8EE03FC48 +48EC00FE173F496F7EEF07C0717E1701496F7E187884A284A284A2F00780A219C0180319 +E0A319F01801A419F8A31201A47FA31803A6F007F0A3180FA3F01FE0A2183F19C0187FA2 +F0FF80A24D13005F4D5A170F4D5A177F4D5A04035B040F5B047F5B01FE010FB55A90B8C7 +FC6C16FC5F6D15E0011F1580010302FCC8FCD9001F13803D547ED142>68 +D<1804183F0107B8FC017F17800003B912C0120F4818E04818C048EFFE00B5D8C07EC9FC +EBFC0013E013806CC7FC127E123C121CC8FCAD153EA4153FAC020FB612C018F0A26E816E +818080033FC9FCAC81A482B2153FA3157FA215FF93C9FC5CA24A5A14074A5A141FEC7FF8 +EB01FF010F5B495B6D5B5D6D90CAFCEB03FCEB01F03B6D7FD342>70 +D<156015701578157CA2157EAC153EA4153FB3A481A41680B3A3150FA416C0AD151FA315 +3FA2157F168015FFA24A13005C4A5A141F4A5A6C13FFD8F00F5BB65A6C5C5D6C91C7FC6C +5B000713F8C61380226C89D128>74 D<EB01E0EB07F0497E131F497E137FA2EBFFF014C0 +485B91CAFC485AA25BA25BA25BA21207A65BB3B3A8120FA4001F160C171FD9FFF014FF48 +90B712804817C0B9FC7E18806C1700D9C00014F8001ECBFC120432557BD23C>76 +D<ED3FF80207B5FC021F14E0027F14F849B67E010715FF49824949C66C7E4901C0EB0FE0 +4990C7EA03F0D9FFFC14004801F0157802C0814849814890C9FC4982485A491780001F17 +074917C05B003F17034917E0A2485A19F0A290CA1201A312FE19F8A55AA91803A3127CA3 +F007F0127EA2180F123EA2F01FE0121E001F173F19C06C177F7F0007EFFF80A26C6C4B13 +005F6C6C4B5A170F6C6C4B5A0178157F017C4A485A013F02075B6D6C011F5B90260FF801 +B55A6DB75A6D93C7FC010015FC6E14F0021F14C0020391C8FC9138007FF03D527BD149> +79 D<ED3FF80207B5FC021F14E0027F14F849B67E010715FF49824949C66C7E4901C0EB +0FE04990C7EA03F0D9FFFC14004801F0157802C0814849814890C9FC4982485A4983001F +170749835B003F17034983A2485A85A290CA1201A312FE85A55AA91803A3127CA34E5A12 +7EA2180F123EA24E5A121E001F173F616C177F7F00074D5AA26C6C4B90C7FC5F6C6C4B5A +170F6C6C4B5A0178157F017C4A485A013F02075B6D6C011F5B90260FF801B55A6DB75A6D +93C8FC010015FC6E14F017C049B6C9FC0107814915F017FC6D15FF6DD9801F13E09126FC +000113F8D901F09038003FFFD90040020713C091C913F895383FFF80060F13F8060113FC +9538007FFE190FF103FFF1007F1A0748627BD149>81 D<183C0103B712FE017F8248B912 +8012074818C0123F48EFFE009126E001F0C8FC38FFFC0013F0EA7FC04980003EC7FC121E +1204C8FCB3AC1500A482B3A41501A31503150FA26F5AA215036F5A6F5A3A537FD242>84 +D<132013F8EA03FCEA07FE120FEA1FFF5A13FEEA7FF813E0EAFFC013801300A2127EA212 +3CA27E7E13801207EA03C012011200101971DB2A>96 D<01F81318D801FE131E486C131F +4813C04801F0138014F84813FCEBF8FF9038F03F9F393FE00FDF9038C007FF804848C6FC +157F153F90C7121FA248143F5AA3157FA25A15FFA35CA25CA25CA2007C4913C0A25CA200 +7EEB3FEF003E137F15CF14FFD81E01138FEA1F036C481307EB1FFEEA07FF6C13FC9138F8 +03E06C13F06C9038E001F090387FC000011FC7123024347AB332>I<EB01FCEB0FFF013F +13C090B57E48804880488048EBF03CEC801E381FFE0001F8131F485A4914804848130F15 +0749130392C7FC48C9FCA25AA45AA8127CA47EA3121E121F7EA26C6C13066C6CEB1F8001 +F0EBFFC06CB6FC6C15E07F7F010F14C001031400010013F823347EB327>99 +D<EB01FE90380FFF80013F13E090B57E488048805A48EBF01E1480391FFE001F13F84848 +148049133F485A157F4913FF5C48485A020F130048133FECFFFE01035B010F5BD8FC7F5B +00FDB55AB612804AC7FC14F814E0148001FCC8FCEA7FF01380007CC9FCA27EA3121E121F +7EA26C6C13066C6CEB1F8001F0EBFFC06CB6FC6C15E07F7F010F14C001031400010013F8 +23347EB327>101 D<013E140CD9FF80131E4801F0133F4801FCEB7F8014FF4802C013C0 +EDF0FF270FFE1FFC1380D9F807B5120049C65B001F143F49130FED03FC491301A2150348 +5AA24B5AA3150F90C7FCA2151FA2153FA2157FA215FFA25C7E5C5C15FD9038800FFC000F +EB1FF8A2EC3FF0000749487EEBC0FFD803C113C001C713806CB5FC6C14005C6D5A6D5A6D +48137CEB07C090C8FCA2167EA87E00E015FE7E00781401A26C140315076C4A5A6C143F01 +C0EBFFF83807F8076CB65A6C5D6C5D013F5C010F49C7FC010313F89038007FC02A507BB3 +32>103 D<126012701278127CA2127EA212FEA65AB3A6EB03F8387C1FFE90387FFF8090 +B512E0007D80007F8081ECE07EEC001E01FC7F49EB07805B49EB03C0A24914E015014914 +F0A390C713F81500A416FC127EA3123EA4123FA31501A56C140316F81507A26D130F153F +913803FFF0A2000F15E080000715C000036D13800001EC3E00265A79D932>I<12C012F0 +A21278127CA2127E12FEA2127EA2123E121E120CC7FCAF12C012F07E127CA27EA2123FB3 +B3A27EA27E13801207EA03C012000A5178D01B>I<12C07E7E7E7EB3B1151C151E81A26F +7E82150F4B7E157F15FF5C5C020F5B4A5B4A90C7FC007CEB7FFC49485A495B495BD87E0F +13804990C8FC495A495AEBFFF0007F5B5C5C91C9FC5B5B7F7F6C7FEBF7C0EBE3E0EBE1F8 +EBC0FC147E496C7E6E7EEC07E0EC03F86E7E001FEB007FED3FE292381FFF80030713C000 +0F6E13E000071400EE3FF00001150FC9EA01E02C5B7AD932>107 +D<0378141F00C0D901FEEC7FC000F0496CECFFE00078496D4813F0007C495C003C496D48 +13F8003E495CA2913B7FF7E01FFCFC003FD9FFE7EB3FF803C714F0490187EB7FE0490107 +14C017FFD907FE15809126FC03E11300130F02F8EBE3FEEB1FF0EEF7FCEB3FE0EEFFF8EB +7FC05F148001FF5D14006C5E5B5FA25B94C7FC5BA25E5BA25E5BA25E15075BA25EA25B03 +03157C120F00070201153E6F48141E0001036014063F357AB44D>109 +D<15F800C0EB03FE00F0497E0078491380007C5B003C4913C0123E5C9138FFE7E0003F14 +C7491387491307A2EB07FE14FC130F14F8EB1FF0A2EB3FE0A214C0137F148013FF1400A2 +7E5BA25BA35BA35BA35BA45BA45B1503120F0007EC01F015000001153024357AB432>I< +EB01FE90380FFF80013F13E090B512F848804880488048EBF01F91388007803A1FFE0003 +C013F84848EB01E05B484814F0A249EB00F8A248C8FCA24815FCA45AA51501A3127C1503 +A216F86C1407A2150F001E15F0001F141F6C143FED7FE039078001FF6C6C4813C0EBF01F +6CB612806C15006D5B6D5B010F13F001035B010090C7FC26347EB32C>I<EA03807F7FA2 +7FA590B512C0007F14F0B612FC15FF16C06C816C813A1FF00003F8000FEC00FC6C48143C +82821780160717C0160317E0A2160117F0A317F8A61603A41607A217F0160FA2161F17E0 +163F167FEEFFC05D030713806D133F90B712005E5E5E5E01E714C001E049C7FC91C9FCA5 +1203A47FA81201A47F1200A21378A27F131C130C2D5A7FBC32>I<00C0130F00F0EB1FC0 +0078EB3FF0007C497E003C497E003E805B49138F003FEC0780903807FE039138FC01C001 +0FEB00804A1300495AA2495AA25C137F5CA249C8FCA35BA2121F5BA35BA35BA45BA45BA5 +5BA2120F1207A2120122347AB32A>114 D<EB7FE03803FFFC4813FF4814804814C015E0 +5A9038FC01F013E09038C003F81380140113006C130015786C143015006C7E13E06C7EEA +01FC6CB4FCEB7FC0EB1FF0EB0FFCEB03FE903800FF80EC3FC0EC0FE0EC03F0EC01F8EC00 +78153CA2153EA2153F0070147F12F815FF7E6C5B007E5BEC0FFE383F803F90B512FC7E6C +14F86C14F0000114E06C6C1380903807FE0020347DB327>I<1338133C133EA2133FA8B6 +FC158015C06C14E07E6C14F07ED8003FC7FCA87FA480B3A4EB0F9014FCA2806D7EA26D13 +806D1300EB00781C3E80BC1E>I<124000F014180078141E007C141F123C003E1580A212 +3FA2153FA416C0157F7EA315FF7FA25CA45CA35CA25CA35C15EF000F133F15CF147FA290 +38C0FF8FA201C1130F13C3ECFE07EA07C7EBCFFC13FF6C01F813E0ECF0037EECE0016C90 +38C000F06D481330011EC8FC24367AB432>I<00E0141E00F8EC1F806C15C0007EEC0FE0 +003EEC07F0123F6CEC01F86C6CEB0078167CA2167E7FA31207A216FEA27FA31501000315 +FCA21503A27FED07F8A3ED0FF01201151FED3FE0A26D137FEDFFC0A24A13800000491300 +5C4A5AEC3FFCEBFC7F90387FFFF85D6D5B5D6D5B6D48C7FC5CEB03E027347AB332>I<00 +E0020CEC03C000F8020F15F06C6E6C80007E6F6D7E003E02036E7E003F816C183F6C6C6E +140F1A80A21AC06D80A215071207A2191FA26D497EA3031F153F1A801203033F157FA282 +6D017FEDFF00A215FF047E495A4A133E00011703DA03FE4A5AA2912607FC3F130F01F84C +5AEC0FF8021F4B5A00004A6C495A023F15FFDA7FE0495B02FF02075B01FD01C0138F017F +496CB5C7FC606D496C5B4A5D6D486D5B6D486D13C04A5DD903C0D9007CC8FC42347AB34D +>I<001C1538001F15FE6D497E6C6C4913806D5B00074A13C06C6C5BD80078ECFE006DEB +3FF84B5A6D5C4B5A6D485BEB0781028390C7FC903803C7FEA2903801EFFC5DEB00FF5D6E +5AA25D14FF495B92C8FC5BA2497FA290380FFBC090381FF9E014F190383FF0F014E0017F +1378EBFFC04A7E5A48497E81485A48486D7E001F6E7EB448EB01FC4980007F6E7E49806C +48EC3F806C48141F6CC812072A347CB335>I<163000E0153800F8153C6C81007E151F6C +ED0F806D1407000F16C0EA03C06C7E6C6C15E0A21378A27F6D140FA27FA26D7E161F6D6C +14C0A2800101143F8001001580A20278137FA2027C1400023C5B143E141E4B5A141FEC0F +03ED83FCA2EC0787EDC7F815CF5EEC03EF15FF5EA26E5BA35EA293C7FC5C5DA24A5AA24A +5A141F5D143F5D147F4A5A5D5B4990C8FC5B5C495A131F495A495A495A1243B55A6C5B91 +C9FC6C5A6C5A6C5AEA03E02B537CB432>I<D803FF1430001F01FC13F84890B57E4881B8 +FC7EA2263FE00F5B6CC7EA3FFC000E5DC8485A4B5A5E5C4A5B4A90C7FC4A5A5D141F4A5A +4A5A4A5A5D5B495B4990C8FC5C495A131F495A5C495A13FF5C485B4890C9FC5A5B485A00 +1F150649140748481580484815C001F8140FB500C0EB1FE002FE13FF91B6FCA27E6C16C0 +6CC66C1480000C01031400C8EA1FF82B357EB32F>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff vcmb14 14.4 9 +/Ff 9 116 df<923803FFFE0203B61280023F15E00103B712F0010F16F85B4916FCEE00 +7F6D01C0EB1FFE170F01035B170792C7FC5B5C130F5C170F18FC131F4A141F18F8173F18 +F0013F157F4AECFFE05E4C13C04C1380041F1300017FEC7FFE9139E003FFFC02E7B512F0 +91B65A1780A290B712E08317FC02C780DAC00F7F0300148048031F13C04A13077013E070 +13F082EF7FF85A91C8123FEF1FFCA3170F5A5BA5120F49151F18F8A2173F001F17F04915 +7F18E017FF003F4B13C05B4C13804C1300007F5D494A5A4C5A00FFEDFFF801FC01035B90 +26FFE03F5B91B6128094C7FC6C15FC001F15F0000715C0C692C8FC010713F0375679D141 +>66 D<187CEF01FEEF03FF5F18FE170F18FCA2171F18F8A2173F18F0A2177F18E0A317FF +18C0A25E1880A35E1800A45E5FA3160F5FA391381FF81FDA7FFF5B49B6FC5B130F5B495D +EB7FF99038FFF03FECE00748EBC00148903880007F5F4890C7FC4914FF120F495D5D121F +495B123F49495BA25D127F495BA24B90C7FCA200FF5C4990B5FCA25C4A5BA25C5C5CA25C +6D485B91B5FC01E113EFD87FE313CF01F7138F90B5120F02FE7F6C01FC7F14F06C13E06C +01805B3A03FE0007F8385A77D937>100 D<913801FFC0020F13F0023F13F891B512FC13 +034914FE131F49138F90387FFC07EBFFF04813E014C048EB800F48010013FC151F4848EB +3FF849137F001FECFFF0D9F80313E04A13C0003F011F13809039F07FFE009038F1FFFC48 +B55A15E015804AC7FC14F8B512E0148001FCC8FC13F013C0A67FA3127F6DEB1F806DEB7F +C09038FE03FF6CB6FCA26C15806C15006C14FC000114E06C6C90C7FC273479B32A>I<14 +F8EB03FCEB07FEA7130F14FC131F14F8EB0FF0EB07C090C7FCAF137FEBFF804813C05AA2 +7E7EA35A1480A45A1400A45A5BA3120F5BA4121F5BA3123F5BA4127F5BA412FF5BA37FA4 +6C5A6CC7FC175276D11D>105 D<147EEB01FF5BA35B14FEA4130F14FCA4131F14F8A413 +3F14F0A5137F14E0A413FF14C0A45A1480A55A1400A45A5BA5120F5BA4121F5BA5123F5B +A6127F5BA612FF5BA57FA46C5A6CC7FC185A76D91D>108 D<EE07F8013FEC1FFED9FFC0 +EB3FFF4892B5FC5D15075D6C5C5DED7FFB484A5A0281EBE7FE028313C7028713871607EC +8FFE4890389FFC0F023F14FCEC7FF815F0ECFFE0EDC01F4816F8158015005C163F4A14F0 +485BA24A137F4A14E0A2485BA24A13FF91C713C0A2485AA2495B17805BA2485A5D17005B +178012FF4915006C5A003EC7EA01FC303578B437>110 D<913801FFC0020F13F0023F13 +FC91B57E010380010F15805B49018F13C090387FFC039038FFF00148496C13E05C485B48 +90C7127FA2485A5B121F5BA2123F4914FF17C0127F5BA25D178012FF495B1700A25D5E15 +0F5E151F4B5A7F4B5A4B5A007F5B6D485BD9F80F5BD9FE3F90C7FC6CB55A5D6C14F06C14 +C06C91C8FC000113FC38007FF02B3479B330>I<013FEB01FC9039FFC007FF484A138003 +3F13C05D92B512E06C13C114C314C74801CF137FDA8FFE138091399FFC1E00DABFF8C7FC +A2ECFFF0485CA25D5DA292C8FC485BA25C5CA25C5A5CA25CA2485BA291C9FCA25B123F5B +A25BA3485AA35BA212FF5B6C5A003ECAFC2B3478B32D>114 D<91381FFFC0027F13F049 +B512FC010714FE131F4914FF5B9038FFF80FECE0034813C04A5A4815FE140016FCA29138 +8003F06EC7FC806C7F14FC6C13FF6D13C06D7F6D13F801077F6D13FF01001480023F13C0 +020F13E080020113F080157F153FA4D80FE0137F003F15E0486C13FFA248484813C04948 +13806D5AD9FC1F130090B55A6C5C5D6C14E06C1480000749C7FCC613F828347BB32A>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg vcm14 14.4 33 +/Fg 33 123 df<130E133FEB7F8014C0A2EB3FE0A2EB1FF0A2130F14E0131F14C0133FEB +7F8013FF481300EA07FEEA3FFC485A485A13C090C7FC127C14186DDA2A>39 +D<130FEB3F8014C0137FEB3FE0A2131F14F0A2130F14E0131F14C0133FEB7F8013FF4813 +00EA07FEEA1FFCEA7FF85BEAFFC06CC7FC123C14187C8B21>44 D<120E123FEA7F80A513 +00A25A5AA21278090D748C1E>46 D<92380FFFC00207B512F091B612FC010781013F8149 +1680EDE00192C7EA7FC0EB3EFE0101ED3FE05C0103151F5CA213075CA2010F16C0A24A14 +3F1880131F177FEFFF005C4C5A013F4A5A16074C5AEE3FF04A495A4B485A017F011F5B91 +269FFFFEC7FC91B55A5E6E13FE707E496C14E0DA003F7F03017F9238003FFC49EC0FFEEE +03FF00016F138082EF7FC0A249ED3FE0A20003161F18F0A2170F5BA21207A35B18E0120F +171FA24916C0A2001F163F1880177F49EDFF00A2003F4B5A4C5A4914074C5A007F4B5A90 +C8EA7FE06D4A5AD8FFF001035B01FF013F90C7FC91B512FC6C5D000F15E0000392C8FCC6 +6C13F801071380345679D13C>66 D<0207B5FC0103B612F0011F15FC4915FF4916C018F0 +6DD980077F011890C76C7ED900FEEC1FFE0101ED07FF4A0201138001036F13C04AED7FE0 +183F0107EE1FF05CF00FF8A2010FEE07FCA24A150319FE131F1801A24A16FFA2013F82A4 +5CA2137FA491CAFC19FE5B1801A34917FCA200011703A219F8A249160719F01203180F19 +E0181F4917C0183F00071880187F1900495E60000F16014D5AA2494B5A4D5A001F161F4D +5A494B5A4D5A003F030390C7FC4C5A494A5AEE3FF8007FEDFFE003075B01F8017F5B90B6 +48C8FCB712F86C15C06C4AC9FC000714F0D8003F90CAFC405478D142>68 +D<F103E0037FB712F0020FB8FC027F17E049B9FC010718004917F0013F010090C9FCEB7F +F0D9FFC05B485B9038FE0001485A5B6C5AC85BA21503A45EA21507A45EA2150FA55EA215 +1FA45EA2153FA40203B612FC020F815CA2606E15F0DA007FCAFCA25DA45DA21401A45DA2 +1403A45DA21407A45DA2140FA45DA2141FA25DA2143F5D147F92CBFC5C5C1301495A1307 +495A495AEB7FE048485A00075B003F90CCFCEA7FFCEAFFF013C048CDFC1230446C78D242 +>70 D<1870EF01F8EF03FC18F8A21707A418F0A2170FA418E0A2171FA418C0A2173FA418 +80A2177FA41800A25FA45FA21601A45FA21603A45FA21607A45FA2160FA45FA2161FA45F +A2163FA55FA2167FA494C7FCA25E5EA215015E15035E15075E150F4B5A153F4B5A4B5A02 +0390C8FC4A5A001CEB1FFC397F80FFF8B612E05D92C9FC6C13FC001F13E0D803FECAFC36 +6C8FD128>74 D<1678ED01FC1507151F4B5A4B5AEDFFC04A90C8FC4A5A4A5A5D4A5A5D14 +1F5D143F5D147FA292C9FC5CA25CA21301A25CA21303A25CA21307A35CA2130FA25CA213 +1FA35CA2133FA35CA2137FA391CAFCA25BA35BA21201A25BA21203A35BA21207A25BA200 +0FEE07C049ED0FE048B5147F92B6FC4817C0481780B8EAFE0017F026FE000791C7FC007C +90CAFC33547AD23C>76 D<933803FF80043F13F04BB512FC030F14FF033F8192B77E0203 +D9F8037F4A903980007FF0DA1FFEC7EA1FF8DA3FF86E7EDA7FE014074A486E7E4990C8FC +494815014948825C49488149481780A24948167F495AA249CAFC5B12015B12035BA21207 +491800A2000F605BA2121F495FA2123F1801A2495FA2007F1703A261A2180790CA5BA248 +170F61A2181F61183F61187F96C7FC606017016D4B5A1707007F5F4D5A6D4B5A173F6C6C +4B5A4D5A6C6C020390C8FC4C5A6C6CEC1FFC6DEC7FF86CB4903801FFE06CD9E00F5B6C90 +B6C9FC6C15FC6D14F0011F14C0010749CAFC010013E0415275D149>79 +D<933803FF80043F13F04BB512FC030F14FF033F8192B77E0203D9F8037F4A903980007F +F0DA1FFEC7EA1FF8DA3FF86E7EDA7FE014074A486E7E4990C8FC494815014948825C4948 +8149481780A24948167F495AA249CAFC5B12015B12035BA21207491800A2000F605BA212 +1F495FA2123F1801A2495FA2007F1703A261A2180790CA5BA248170F61A2181F61183F61 +187F96C7FC606017016D4B5A1707007F5F4D5A6D4B5A173F6C6C4B5A4D5A6C6C020390C8 +FC4C5A6C6CEC1FFC6DEC7FF86CB4903801FFE06CD9E00F5B6C90B6C9FC6C15FC6D14F001 +1F14C0010791CAFC011F14E090B612FC0003EDFF804816E0DA007F13F801F8010713FED8 +03E00100EBFFC0C9001F13F0040313FE0400EBFFC0053F13FE050F7F05011480717E060F +1300F001FE416175D149>81 D<F001C0023FB712E00103B812F0011F17E090B9FC000318 +8048EFFC004890268001FCC8FC383FF800D87FE013035B485A48C7FC485D1270C81207A4 +5EA2150FA45EA2151FA45EA2153FA45EA2157FA493C9FCA25DA45DA21401A45DA21403A4 +5DA21407A45DA2140FA25DA2141F5DA2143F4A5AEB01FF4990CAFC5C5CEB01E03C5371D2 +42>84 D<EB03C0EB1FE0137F13FF5A4813803807FC00485A485A5B485A5B127F90C7FC5A +A27FA2127F7FA2123F6C5A000EC7FC131862DA2A>96 D<023FEB0780903A01FF801FC001 +0713E049EBF03F4901F813804913FE90397FCFFF7F028313FFD9FF011400497E0001143F +497F00036E5A49130700071403491301120F495CA2001F14035B1507123F4B5A5B151F12 +7F153F5E157F90C712FFA2485B5C5E5C5C5CA2EC3FDFEC7F9F02FF5B0181131F903883FE +3F387FC7FCEBDFF8383FFFF002E07F6C13C06C1300D807FC131FD801F0EB0F802A3478B3 +32>I<15FF020713C0023F13E091B512F04914F8130790390FFE07FCEB1FF890383FF003 +EB7FC0D9FF8013F8140048481307484814F0A24848EB03C04990C7FC120F5B121F5BA212 +3F5BA2127FA390C9FCA25AA97FA2127F6D1304153F6C6CEBFF80D9F80713006CB6FC6C5C +6C14F86C14E0C691C7FCEB3FF026347AB327>99 D<EF01C0EF07E0170F171FA2EF3FC018 +80A2177F1800A25F5FA21601A25FA21603A25FA21607A25FA2160FA25FA2161FA25FA216 +3FA35FEC0F8091387FF07F903801FFFC010713FF494AC7FC5BEB3FF390387FC07FEC801F +9039FF0007FE48481301A2485A5B00075D491303120F5B1507001F5D5B150F123F49131F +A2007F4A5AA2157F90C7FC15FF5A5C5E5CA25C5CA25C91383FDFC0A29038807FBFECFF3F +EA7F81EBC3FEEBC7FC383FFFF802F07F6C01E07F6C01C05B6CEB001FD801F8EB0F80335A +78D932>I<EC01FE91380FFF80027F13C049B512E0010714F05B90391FFC0FF8EB3FF090 +387FC007EBFF801400484814F04848130F16E04848131F49EB3FC0000F147F49EBFF8000 +1F0103130049485AEC1FFC003FEB7FF89038C1FFE001875B019F90C7FC387FFFFC14F014 +C091C8FC13FCEAFFE090C9FCA87FA2127F6D1304153F6C6CEBFF80D9F80713006CB6FC6C +5C6C14F86C14E0C691C7FCEB3FF025347AB327>I<037C1438913A03FF8001FC020F9038 +E003FE4A9038F807FC4AEBFC0F4A01FF13F0DAFF9FEBDFE00303EBFFC04948C6FC4A6D13 +800103141F4A130701076E13004A1300130F5C011F5D4A1301A2013F14035C4C5A017F14 +0FA291C7121FA249143F4C5AA216FF5B5D00015C5D5FED0FF7ED1FEF153F16CFED7F8FED +FF0F5CEC03FE9026FF07FC5BEC0FF86C90383FF01FECFFE015C06D138090383FFE00EB1F +F8EB07C090C8FC5FA2163FA55FA2167F121C007E93C7FCB4FC5E5E6D13014B5A6C6C1307 +6DEB1FF8D83FF8495A3A1FFE01FFE06CB65A6C92C8FC6C14FCC614F0013F13C0D90FFCC9 +FC37507EB332>103 D<1470EB01F8497EA25CA21307A35CA2130FA35CA2131FA35CA213 +3FA25CA2137FA391C9FCA25BA45BA21201EC01FE91380FFF80D9FC3F13E091B57E48B67E +829138FC0FFEECF8039138E001FF4813C04A7E91C7FC491580A249147F120F5BA25BA348 +5AA31700A2495CA2123FA25EA21501A25B5E127F15035EA215075EA290C7120F5E48141F +4B5AEC07FF021F5B93C7FC48495AEC1FF80078EB0FC0295A76D932>I<EB01E0EB07F014 +F8A514F0130FA2EB1FE0EB0FC0EB070090C7FCB0137CEA01FE7FA37EA35BA21201A35BA2 +1203A35BA21207A35BA2120FA25BA2121FA35BA2123FA35BA2127FA390C7FCA25AA47FA2 +6CC7FC123E155176D01B>I<1478EB01FCA31303A35CA21307A25CA2130FA35CA2131FA3 +5CA2133FA35CA2137FA391C9FCA25BA35BA212011607EE1F80EE3FC04915E0A20003151F +A217C049147F16FF00074A138003071300ED0FFCED3FF849495A913801FFC0000F495B4A +48C7FCEC1FFCEC3FF04A5A9038E1FFC001E390C8FC381FE7FEEBEFFCEBFFF05C5C5C8048 +7FA2808080EBF7FEEBE3FF01E17FD87FC07FEC7FF06E7E496C7E6E7E6E6C7E020113E16E +EBFFC090C76C13E06F13C048140F007E020313800038913800FC002B5A78D932>107 +D<043FEC07E001FCDAFF80EB3FF0486C01036DEBFFF8030F140300034A5C00014A5C4B5C +DBFFBFEB3FE74A013FEB7FC79026FC03FE9138FF87F0DA07FC01811307000302F8ECFE0F +913A0FF07F83FCDA1FE0EB87F8023F028F14E001F801C014F0DA7F8090381FE01F0007D9 +FF00EB3FC001F914FF4ADA7F8013C0D9FBFCECFF004948163F5F48B4484A14804A5A4D13 +7F02C05C1A0002805C4801005E4B5B5B4D5B4992C7FC18014848495A61495C180349130F +007F4B5C5B4C13075B4B5A00FF6090C7FC4C130F8548143FA2486E4813070070020EC7EA +03E0453577B44D>109 D<163F01FCECFF80486C010313C0150F00035C00015C5DEDFFBF +4A133F9026FC03FE1380EC07FC0003ECF87FEC0FF0EC1FE0023F140001F813C04A485A00 +07495A13F94A5BEBFBFC9038F7F801A2260FFFF05B14E0150314C05E148048EB0007A25B +5E5B150F485A5E5B151F5B007F5D5B153F5BA200FF5D90C7FC157F825AA248143F00706E +C7FC2A3577B432>I<4AB4FC020F13C0027F13F049B57E010780498090381FFC0790393F +F001FFEB7FC049487E91C71380485A4848147FA2485A5B120F5B121F5BA2003F1600A249 +5CA2007F5DA2150190C7FC5E481403A25E15075E150F5E151F5E153F6D495A15FF007F49 +90C7FC6D485AEC0FFC393FF03FF890B55A6C5C6C14806C49C8FC000113F038007F802934 +7AB32C>I<143814FC497E5CA21303A25CA249B512F016FE011F6E7E017F8190B77E8391 +39F0007FF86D48EB0FFC010F1407011F6E7EA2707E5C82013F1680A24A147FA2137FA391 +C8FCA25B1800A2495DA200015EA21601495DA2000315035F1607495D160F00074B5AA24C +5A494A5A16FF486C4990C7FCED07FE01FFEB1FFC91B55A5E4815C093C8FC15FC01E713E0 +01C0CAFCA2123FA45BA2127FA590CBFCA25AAB5AA21278315A7DBC32>I<01FCEB07C048 +6CEB1FF0ED7FF80003ECFFFC00015B4A13FE5CEC0FF901FC13F191381FE1FC000390383F +C0F8027F13005D4AC7FCEBF9FEA23807FBFC5C13FF5CA25C485BA25CA291C8FCA2485AA2 +5BA25BA2485AA35BA2485AA35BA212FF90C9FCA35AA25A1270273477B32A>114 +D<EC1FF891B5FC010314C0010F14E04914F04914F890387FE03F9038FF80071400485A49 +14F0150F000315E0151FED0FC06DEB020092C7FC6C7E806C13E06D7EEB3FFC6D7E6D6C7E +01037F6D13F06D6C7E6E7EEC0FFE6E7E0201138080ED7FC0A2153FA300061580EA3F8015 +7F007F150090C75A48495A14036D485A9038F01FF86CB55A6C5C6C5C6C91C7FC000313F8 +38007FC025347BB327>I<EB01C0EB07E0497E5CA2131FA35CA2133FA2001FB512E0007F +14F0A2B6FC6C14E06C1480C66CC7FCA25BA45BA21201A35BA21203A35BA21207A45BA212 +0FA45BA2121FA45BA2EA3FCE13FF8091C7FCA213FCEA1FF0EA0F801C3E77BC1E>I<EA01 +E0D807F0143C6D14FE120F00071401A216FCA215035BA2000FEC07F8A2150FA349EB1FF0 +A2001F143FA2157F16E015FF5B5C123F5C16C05CA25C13804A1380127F5C5CA2ECFF7FD9 +81FE1300130149485A48485AA2495A49485A133FEB7FC1EBFF81EC01FF13FE13FC6C487E +D83FE0137C000FC9FC273675B432>I<000FEC07C0D87F80EB1FF0486CEB3FF816FCA200 +7FEC1FFE003F14031501A616FCA21503A216F85B1507007F15F0A2150F16E0151F16C0A2 +153F1680157FEDFF00A249485A5D4813034A5A140F5D4A5A4A5A147F4A5A4990C7FCEB07 +FE495AEB3FF8EBFFF014C05C6C48C8FC13F0EA1F80273471B332>I<000FDA01C014F8D8 +7F80D907E0EB03FE486C496C497E701580A2007F02076E13C0003FEF007F193FA5030F16 +80A2197FA24B481500A249013F5D61127F037F14016115FF18034A495C18074A5E4A150F +4E5A5C4E5A49485EDA3FDF147F484B49C7FCDA7F9F5BDAFF3F5C494B5A02FE4A5AD903FC +140FD907F84A5A010F4B5AD91FF04A5AD93FE09038C1FF80D97FC001C390C8FCD9FF80EB +CFFE0200EBFFFC4915F0495DD87FF06D138001C002FCC9FC001EC7EA07E0423471B34D> +I<D901F0EC07C0D907F8EC1FF0496CEC7FF86E903801FFF06E5B6D4A13E001009039800F +FC00EE1FF06E6C485A4C5A023F495A03E190C7FC5E91381FE3FCEDF7F815FF6E5B5E5E6E +5BA293C8FC6E5A5D4A7EA2140F4A7E5CA25C91B57EA2903801FE7FD903FC7F1307ECF83F +D90FF07FEB1FE0013F131FD97FC07F148049486C7E485A00036E7E485AD83FF8903803FF +C048488148487F496D5B6CC8127F003C031EC7FC35347CB335>I<1838027815FCD901FE +EC01FE497E6F14FF816D6D7FEB003F6E7EA26E7EA2020715FE81170114036F14FCA20201 +14036F14F8A26E1407048013F0170F037F14E0A2EEC01F18C0033F133F1880177F04E013 +005F031F5B16E15F16E35F16F75FED0FFF5FA25F5FA294C7FCA25E5EA25EA25E4B5AA24B +5A4B5A15FF93C8FC4A5A4A5AA24A5A4A5A141F4A5A5D4A5A4AC9FC5B495A495A495A495A +495A380CFFC0003F5B4890CAFC485A13F8EA7FE0001FCBFC385381B432>I<DA3FF0130E +49B5EAC03F4991B51280010F1600133F495DDAE07F13F8DA80015B013EC7EA3FE001104A +5A90C8485A4B90C7FC4B5A4B5A4B5A4B5A5E4B5A4B5A15FF4A90C8FC4A5A4A5A4A5A4A5A +4A5A5D4A5A4AC9FC5B495A495A495A5C495A495A137F495A4890CAFC485A4915F04848EC +03F8485A001F1507D9FF805C4801FC130F489039FFE03FE092B5FCB85A5FD8FE034AC7FC +2678001F13F8C813C031357DB32F>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh vccb14 14.4 9 +/Fh 9 116 df<93380FFFC00307B512F0037F14F80207B612FC143F49B712FE5B130F49 +9039FE003FFF017F01E07F90B5487F3801FE7FD803E05B260080FF805B4990C7FC18FE5B +A24A15FC1307EF0FF8A24A15F0010FED1FE018C0EF3F80EF7F004948147E4C5AEE0FF092 +380FFFE0033F1380013F497F02F1B512F002F314FC91B7FC188018C0D97FEF15E0DAE003 +14F0ED003F040F13F88201FF020113FC4A7FEF7FFE173FA2EF1FFF485B83A3835A91C8FC +A218FEA25A4916FCA2170F18F8485AEF1FF018E0A249ED3FC0001F1780EF7F004915FE4C +5A003F5E01FE4A5AD9FFC0EB0FC04801FCEBFF8091B548C7FC5EB712F0003F5D000F1580 +00034AC8FCC66C13F80107138038567AD141>66 D<1910197019F01803F007E0181FF03F +C018FF4D13805F170F4D1300177F94B5FCEF33FE1703170760170FA260171FA260173FA2 +60A2177F60A217FFA2605EA295C7FCA2ED3F83EDFFFB4AEBFFFE14075C143F4A5C49B6FC +903803F07F010701075B90380FE00190391FC0007F013F141F49485C01FF143F91C7FC5A +494A5A1203484814FFA2000F4A5B5B5D121F49495B5D123F5D5D484892C8FC5D92B5FCA2 +5C00FF495BA2EC07F7EC0FE7EC1FCF91383F8FFC01F0010F1304027E141CD9F8FC14FCD9 +FFF8EBFFF8DAE01F5B6C01C014C002005C494AC8FC6C485CD81FF014F0D807C0EB07803C +5A76D937>100 D<ED03FCED1FFEED7FFF4AB5FC5C020F14805C147FECFF07EB01F09026 +07E0031300130FD91FC05BEB3F80017F5C4948485A485D49495A00035D4848013FC7FC15 +FE390FF803F8EC1FF0001FEBFFC001F75BD9FFFEC8FC4813F814E0148049C9FCEA7FF05B +A312FFA57FA26D806DEB03C001FF133F6C90B5C7FC5D5D6C14F06C5C6C1480000349C8FC +C613F0293478B32A>I<1510157815F814031407140F143F15F0A315E015C0EC7F00147E +147C147091C7FCAF14F81307EB1FFC133F13FF5A1207485BEA1FDFEA1E1F1200495AA35C +137FA35C13FFA25C5AA291C7FCA25AA25B1207A25B120FA25BA2121FA25B123FA21410EB +E078387FE3F8EBFFE05C5C4848C7FC5B13F013C0003EC8FC1D5377D21D>105 +D<1504151C153E15FC14011407EC0FF8141F147F14FF010313F05B5B133F90380C3FE0EB +007FA315C014FFA215805BA315005BA35C1307A35C130FA25C131FA35C133FA35C137FA3 +5C13FFA35C5AA391C7FC5AA35B1207A4485AA4485AA5485AA5387FE0101478EBE3F8EBFF +E05CB55A49C7FC5B13F013C0003EC8FC1F5A77D91D>108 D<0270EC07C0D903F8141F01 +0FED3FE0011F15FF017F5C01FF14070003495B48153F48037E13C0D80E3F14F80000EC03 +F04948485ADB0FC11380ED1F81ED3F01157E49484848130014C1ECC3F8DAC7F05B489038 +8FE007EC9FC0DABF805B14FF91387F000F4813FE4A5C161F5C48495C5C163F4A5C485B16 +7F91C7FC5F484814FF5B5F495B003F168249158F173F4B13FC48485D5F018015C090C748 +5B00FE4BC7FC00F815F80070EC01E0333478B337>110 D<ED03FCED1FFF037F13804AB5 +12C04A14E0140F4A14F0147FECFF03902601F00113F8903807E000130F4948137F495A01 +7F143F49C7FC5A5B000316F0485AA2120F4915E0001F157FA24915C0123F16FF1780485A +4B1300A25E150300FF5D4B5AA24B5A5E6D495A4B5A6D49C7FC6D137E9038FF03F86CEBFF +F05D15806C91C8FC6C13FC6C13F0000313C0C690C9FC2D3478B330>I<027014F0D903F8 +EB03F8010F140F011FEC1FFC017F143F01FF14FF0003495A48020713F04891380FDFE0D8 +0E3F90381F9FC0000091383F1F0090397FE07F0603FEC7FCECE1FCECE3F8ECE7F0EBFFCF +ECDFE05D14FF485C92C8FC5CA25C5A5C5CA2485BA25C5C5A91C9FCA25B121F5BA25B123F +5BA3485AA2138090CAFC12FE12F812702E3478B32D>114 D<ED3FFC4AB5FC0207148014 +1F4A14C091B6FC5B5B90380FE00349486C1380133F017F150001FF14FC4B5A4801E013E0 +6E485A6EC8FC14FE806C14C0816D13F86D13FE6D7F6D800103806D806D7E021F7F800203 +7F8080157F1308013C6D5A137C48485C485A000F5D4848495A003F92C7FC01F813FE48B4 +5BB612F05D5D92C8FC6C5B6C13F8000F13E0000113802A347AB32A>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi vcc14 14.4 32 +/Fi 32 123 df<1440EB01E01303EB0FF0131FA214F8130FA2130714F0A214E0EB0FC014 +80EB1F00133E1378EA03F0EA0FE0EA1F8048C7FC12FC1230151869DA2A>39 +D<EB0180EB03C0130F131FEB3FE0A214F0131FA3EB0FE014C0A2EB1F801400133E5B5BEA +03E0EA0FC048C7FC127E12F85A14187C8B21>44 D<5AEA0780120F123F127FA31300A212 +7E12F85A12C0090D748C1E>46 D<EEFFFC037F13FF020FB6128091B712C01307013F16E0 +49EBE00048B5C7127F2603FE3FEC3FF0380FE07E261F00FE141FC75A0101150FA2495AA2 +18E013075C18C0171F010F16805CEF3F00A2011F157E5F4A5C4C5AEE03C0013FEC0F8004 +7FC7FCED1FFC913881FFF802877F028FEBFF80D97FBF14E091B67E023F14FCDA000F7F03 +007F49021F138016077013C049807013E0177F0001EE3FF0A249151F18F8170F1203A217 +075BA31207A24916F0A3000FEE0FE05B18C0171F001F17805BEF3F00A2003F167E495D5F +4C5A48C8485AEE078001E04AC7FCD8FFFC147E9039FFC007F891B55A16C0001F92C8FC00 +0714FCC614F0010F90C9FC355679D13C>66 D<4AB512E0023F14FE49B712C0010716F049 +82013F16FE49D980077F2601F83FC7003F7FD9C07F020F7FC7007E02037F02FE804A6E7F +0101707E183F49486F7E180FA249486F7EA2180385010F825C841A80A2131FA24A167FA3 +133FA25CA3017F1800A391CA5AA2615BA249160161A212014E5AA25B4E5AA2000360180F +495F181F610007173F96C7FC49167EA260000F5F4D5A4915034D5A60001F4C5A494BC8FC +173E177848485D4C5AEE07C0041FC9FC486C14FE01FEEB1FF890B612E0B75A93CAFC6C14 +F8000F14E026007FFCCBFC415478D142>68 D<1C601CE0F307C094B81280041FEEFE0004 +7F5E4BB812F003075F4B94C7FC92273FE00FF0C9FCED7C0003F05CEC03E04A5A4A48131F +141F4AC75BA2147E02FE143FA2495A60A21303177FA295CAFCA2805F5C5C6D485CEB00C0 +91C8FC1601A25FA41603A25FA3047FB612F893B77E03035E4B5E4B16C0629226000FF0CA +FCA25FA3161FA35FA3163FA25FA3167FA394CBFCA35EA25EA31501A35EA315035EA34B5A +A25E150F5E4B5AA24BCCFC153E5D5DEC01E00007495A390FE03F80263FFFFECDFC485BB5 +12F06C13C06C90CEFCEA07F8536E83D442>70 D<EF0FE0EF3FFE94B5EAE0040403ECFFFE +4C15FC041F15F8DC3C0714E09326F0007F13C04C90B5120093C790C7FC60A31701A360A3 +1703A260A31707A360A3170FA260A3171FA360A3173FA260A3177FA395C8FCA35FA25FA3 +1601A25FA31603A35FA31607A25FA3160FA35FA3161FA25FA3163F5FA34CC9FCA2167E16 +FE5E4B5AA24B5A5E4B5A4B5A031ECAFC5DD8078013F8390FF00FE0003FB55A4891CBFCB5 +5A6C13F8001F13C0D803FECCFC476D91D328>74 D<EF03FCEF1FFF057F13C04CB512E04C +14F0160F93391F807FF893387C003F04F0131FDB03E0EB0FFC4B4813074B5A4BC712035D +157E157C03FC15F84A5AA20203ED07F04B15E01407F00FC04A481580F01F00183C4A485C +60EF03C04A48495A94C8FCA2147F92CAFCA35C5CA313015CA31303A25CA313075CA3130F +A25CA3131FA25CA3133FA25CA3137F91CBFCA3495E49EE0780F00F00183F4848167E6090 +B500F8EB03F84891B612E0604894C7FC5F4816F8261F00031480003C90CBFC12F012403E +587DD43C>76 D<EF7FE0933807FFFC043F13FF93B612C0030381030F8192261FF0037F03 +7FC7FC03F8EC3FFCDA03E0141FDA07806E7E4AC81207023E15034A824A81495A01038249 +4817805C130F4948167F49CAFCA2137EA25BA212015B12031A00485AA261485AA261121F +5B180161123FA249160361A2127F4E5AA290CAFC4E5AA24860181FA261183F96C7FC6018 +7E60A26D4B5A4D5A6017076C6C4B5A606D4BC8FC173E6C6C5D6D15F06DEC03E06C6CEC0F +C06C6C6C013FC9FC9138F007FE6C90B512F86C15E0C615806D49CAFC011F13F801031380 +415274D149>79 D<EF0FFC94B57E040714E0041F14F8047F804BB67E4B48C66C7EDB0FE0 +131F4BC700077F037C8003F06E7F4A4880DA07C0157F4A48824AC9123F143E027E161F4A +835C13014948160F495AA2495AA2495AA2133F91CAFC5B6213FEA2191F485AA26212035B +193F621207A249177F97C8FCA2120F19FEA25B4E5AA2001F601803A261180761180F614E +5AA26D4CC9FC187E187C18FC6C6C4B5A606D4B5A4D5A6C6C4B5A6D031ECAFC6E147C6C6D +495A6C01F0EB07E002FEEBFFC06C90B6CBFC6D14FC011F14F06D14C0010314F86D14FF01 +0715C0011F15F8017F15FE2701FF003FEBFFC0D807F8010114F0D80FC0D9003F01FE1510 +003FC80007D9FFC01470007C030102F8EB01F000E0DB003F9039FF801FC0CA000F91B512 +8005011600716C14FC060F14F0060114C09526001FFCC7FC546177D149>81 +D<1A181A38F101F0033FB712E00207B81280021F1700027F16FC49B85A4917C090280FF8 +000FE0C8FC49C7FC133C01F8141F485A48485D1207485A163F485A003F5EA248C8FC167F +A25A94C9FCA35E7F5E90C8FC5A007C14011230C8FC5EA31503A25EA31507A35EA3150FA2 +5EA3151FA35EA3153FA25EA3157FA293CAFCA35D5DA35D14015DA24A5A5DEC078049B67E +130704FCC9FC455575D442>84 D<143814F8EB03F0EB07E0EB1F80EB3F001378485A485A +485A485A121F48C7FCA25A487EA27FA26C7E5B6C5A003EC7FC121C15185EDA2A>96 +D<DA01E01310DA07F813704A6C13F091393FFE03E091387FFF8791B512CFD903E7EBFFC0 +EB07C1EB0FC049487E49486C138081017E7F01FE6D1300497F000180497F00035D5B1207 +1501495C000F1403A2484813075E150F123F49131F5E153F007F147FA290C712FF4A5BA2 +48EB03EFEC07DF020F5BEC1F9F151FEC3E3F027C1440D980F8EB81C0D9C1F01387D9E3C0 +EB9F803B7FFF807FFE0002005B01FC14F06C4814C0D81FE091C7FCD807C0133C2C3477B3 +32>I<ED0FE0ED3FF8EDFFFC1403140F4A13FEEC7E07ECF003903801E001EB07C0EB0F80 +D91F0013FC4914F8017E14E049EB03C092C7FC485A12035B12075B120FA2485AA3123F5B +A3127F90C9FCA35AA77F5D6D13076C6C133E9038F803FC90B55A6C14E05D6C91C7FC0007 +13F800011380273479B327>99 D<ED0FE0ED3FF8EDFFFC1403140F4A13FEEC7F07ECF003 +903801E001EB07C0D90F8013FCEB1F004914F8137E49EB03F016E04848EB07C00003EC0F +8049EB1E0000075C4913F8000FEB03E0EC0FC0261FC07FC7FCEBC1FCEBCFF8383FFFE014 +8049C8FC13F0EA7F8090C9FCA35AA77F5D6D13076C6C133E9038F803FC90B55A6C14E05D +6C91C7FC000713F800011380273479B327>101 D<05F81440DC03FE14E0933A07FF8003 +C0041F9038E007804C9038F01F004CEBFC3EDB01F1EBFF7E922603E07F5B0307131F9226 +0FC0075B4B487E05005B4BC7123F4B141F037E6E5A15FE4B141F02015E4B143F14034E5A +5D020715FFA24A484990C7FC5FA2021F5C4B5C170F171F143F173F4B495A17FD17F9027F +EB01F31603933807E3F817C3EE0F83EE1F07163E167CDBC0F85BEDE1E0EDFFC06EEB800F +EDFE005DEC1FF0DA07C05C91C8FC14100270141F14F0EB03E0D907805D49C8FC133C4915 +3F5BD803E05E485A485A001F4CC8FC48C9FC177E485E5F486CEC01E06DEC0FC001F0EC7F +8001FFD90FFEC9FC6C90B512F85E6C15C0000F4ACAFC000314F026003FFECBFC435087B3 +32>103 D<152015E014011407140F4A5A147F14FF1303495B5BEB1C3FEB007F92C8FCA3 +14FEA313015CA313035CA3495AA3130F5CA3131F5CA2ED07F0013FEB3FFC4AB47E02837F +1487D97F9F1480EC3F03DA780113C04A7E4948137F4A14E0163F5C4890C7FC161F5BA212 +035BA34915C01207A249143FA2000F1680A25B167F1700121FA2495C5EA2123F4B5AA25B +4B5AA2007F5D15075E90C7120F913803CFC091380FFF80484990C7FC48EB3FFC48495A00 +F0EB3FE00060EB0F802B5A76D932>I<1580EC03C01407141F143FA21580A21500147E14 +7C1470146091C7FCB0EB01E0130F133F13FF12035AEA1FDF383E1FC012381200133F5CA3 +49C7FCA413FEA312015BA3485AA3485AA4485AA3485AA4485AA3127FEB01C0EB0780013F +C7FCEAFFFE13F813E05B90C8FC12781A5176D01B>I<15301570EC01F014034A5A141F14 +3FECFFC05B13075B90380E3F801300A24AC8FCA414FEA313015CA3495AA4495AA3130F5C +A3131F5CED01FE92380FFF80013F013F13C04A5A0281B512E01483903A7F8FC07FF09138 +1E003F027C131F5C4948130F5C17E05C484914C0EE1F8091C7FCEE3F0049143E00035D49 +5CED01E049495A00074A5A031FC7FC49137C5DEC03E0000FEB0FC0143FEBE07F9038E1FF +E013E3391FEFBFF0EBFE1F01FC7F13F8496C7E003F80EBE00701C07F6E7F6E7F01808000 +7F6D7FED7FFCEEFFC090C76C13E0007E6E1380007C6E130048EC03FC0060EC00F82C5A78 +D932>107 D<02E00278141E0103DA01F8147E010F4A6CEB01FF013F020F5C01FF021F5C +48037F141F00074901F3143CD80F1FD901E35C000E913B07C3F801F0FED8003FD90F83EB +03E0DB1F03EB07C09126803E07EB0F81037C91381F01FC03F8EBF03E90267F81F0147E02 +03EDFC03DBE00F01F813F8DA07C0EBE1F09026FF0F8013E3D9FE1F9139E7E007F0913A3F +001FEFC0023EECCF804A14DF000101FC9139FF000FE0D9FDF8495A5C01FF4BEB1FC04849 +5C4A137F5F4A4AEB3F804890C712FF5F49EF7F005F48485B94C75A494A5C5B001F4A5A49 +4C5A5E491307003F191C4C903803F87849EFF9F04B48ECFFE048C74B1380007E4BECFE00 +007C4A485C48021EC713F00060020CEC03C0483478B34D>109 D<02E014F00103140301 +0FEC0FF8013F141F01FF147F4815FF00079038C001E7D80F1FEB07C7000E91380F87F0D8 +003FEB1F07153E9138807C0F03F813E0148190387F83F0913803E01FDA07C013C0EC0F80 +EBFF1F903AFE3F003F80143E147E5C486C48EB7F0013FDEBFFF04A13FE5A5C5C4B5A4813 +00A249495A5B120F4913075E5B121F49495AA25B003F16E092381FC3C049ECCF80EEFF00 +48C7EA3FFC007E15F0007C5D4815800060021EC7FC2D3478B332>I<ED0FF0ED3FFCEDFF +FE02037F140F4A1480EC7E03ECF00149487ED907C0EB7FC0495A49C7FC49143F137E5BA2 +485A120349158012075B000F157F1700485AA216FE123F5B4B5AA2127F90C7485AA25E48 +4A5AA24B5A5E151F4BC7FC153E6D5B5D6D485A397FE003C09038F81F8090B5C8FC6C13FC +5C6C13E000071380D801FCC9FC2A3479B32C>I<15301570EC01F014034A5A140FA2141F +5D92B512E017F84A14FE91B7FC491680130749D9000713C0496C010113E0013880D900FE +EC7FF0173F171F13014AEC0FF8A349481407A4495AA218F0130F5C170F18E0131F5CEF1F +C0A2495AEF3F80A2017F160091C8127EA25F495D4914014C5A5F00014B5A6D4A5A6E011E +C7FC02F8137C4890B55A16E05E93C8FC4814FC01F113F001F0CAFCA2120F5BA3121FA25B +A3123FA25BA3127FA290CBFCA35AA55A5A5A1260355B7FBC32>I<02E0EB0F800103EC1F +C0010F147F013F903801FFE001FF5B485C00079038C01F3FD80F1F90383E1FC0000E027C +1380D8003F01F8130002C1130C4A48C7FC5DEC87C0EB7F8F4A5A4AC8FCA2EBFF7E495AA2 +6D5AA2485B5CA25C5A5CA291C9FC5A5BA25B120F5BA25B121F5BA25B123FA25BA248CAFC +127E127C5A12602B3478B32A>114 D<ED3FE0EDFFFC020313FE140F023F13FF5CECF807 +903803E00149487E010F14FE494813FC16F8013FEB01F0017F14E0ED03809138C001006E +C7FC8080EB3FFE806D13C06D13F001037F6D13FE6D6C7E6E1380140F020313C0806E13E0 +157F153FA2151F132001F014C0485A48481480D80F80133F001F150048C7FC48147E6D13 +7CD8FFE05B9038FC03E090B55A5D6C49C7FC001F13F800075BC6138028347BB327>I<14 +18143814F813011303495AA3495AA490B512F812034814F0001F14E04814C0150038003F +80137F91C7FCA35B5BA312015BA312035BA312075BA3120F5BA3121F5BA3123F5BA3127F +14F0EB03E0EB1FC0EBFF804848C7FC13F813E01380007CC8FC1D3D75BC1E>I<010F1540 +013FEC01C04914034848140F0007ED1F8048153F123ED878FE147F00701600120000015D +A249495AA215031203495C1507A200074A5AA249131F153F5E000F147F5B15FF5E001F5B +5C13C04A5BA2003FEB0FDFEC1FBF0180EB3F80143F147E007FEB7C7F02F890C7FC1301EB +03F04A5A484848130790390F80FE1ED91F00137C01FC6D5A494813E001F0148001C091C7 +FC018013FC003EC712F02A3475B332>I<0107EC01F0013FEC0FF8D9FF80133F000315FF +484A13FC001F1407D83F7FEB0FC70078EC1E0300E0143800001400A291C713F8A3491407 +17F0A349EC0FE0A217C00001151F1780163F17005B167EA200035DA24B5A4B5A5B4B5A5E +00074A5A151F4BC7FC153E495B5D4A5A000F495AEC0780021FC8FC14FEEBFFF85C14C091 +C9FC13FCEA03E02E3475B332>I<01070360143C013F03E0EB01FED9FF80D903F0130700 +030307141F48031FEC3FFF001F95B5FCD83F7FEE01F90078EF03C000E04DC6FC000094C7 +FCA21AFE91C7485AA2491701047F15FCA304FFEC03F8495D4B16F0000118074B16E0190F +4B16C0494B131F4B1680193F00034A1600DB3F7F5C197E037E5D49017C90C7FC03FC4A5A +0007494848495A4A485D4B14074A484A5A020F5E4948484849C7FC0300143E000FD93E01 +5C027C5D02F8EC01E0D9F1F04A5AD9F3C0EC1F80D9FF80D9FFFEC8FC02005C01FC15F049 +5D01E01580D80380D9007CC9FC483475B34D>I<DA01E0EC03C0DA07F0140F021FED3FE0 +DA7FF8147F02FFEC01FF01034B13C0902607CFFC9038079F80D91E0791381F1F00011CED +3E1C90260003FE49C7FC5F4C5A6E6C485A4C5A4C5A6E49C8FC16BF16BE16FC6F5A5E5EA2 +5E153F82A2157F15FF825C5CEC07DF91380FCFF8EC1F8F150F143E4A6C7E14F81301D903 +F07FECE003260107C07F26070F801570270F9F0001EB81E0D83FFEEDC7C048486DEBFF80 +D8FFF04BC7FC496E5A6C4815F06CC8EA3FC0000E030FC8FC3B347EB335>I<190C031E15 +1C037F157C4B6C14FE020315014A6D1303021F1501023C7FEC707FECE03F02006D14FC15 +1FA2701303030F15F8A36F6CEB07F0A219E00303140F7014C0181F19801501F03F008218 +7EA26F5CA24D5AA2EF83F0178760EF8FC0167FEF9F8017BF95C7FC17FEA25F5FA25F5FA2 +5F5F94C8FC5E5E5EA24B5A4B5A5E4B5A150F4B5A93C9FC153E5D5D14015D4A5A4A5A4A5A +4ACAFC143E00025B000F5B381F81E0383FC3C0B55A49CBFC5BEA7FF06C5AEA0F803F5385 +B432>I<ED3F80912601FFF01330020701FC13704A9038FF81E0023FECFFC04A15809026 +01F81F1400902603C0035B010FC76C5A011EEC1FF80138EC01F001104A5A90C8485A4C5A +4CC7FC163E5E5E4B5A4B5A4B5A4B5A4BC8FC153E5D5D4A5A4A5A4A5A4A5A4AC9FC143E5C +5C495A5C1303494814184948147849C812FC013E14034914075B4848140348485D3807FF +F048D9FF805B489138F807E092B512804893C7FC485DD8F80314F82660001F13E0C70001 +138034367DB42F>I E +%EndDVIPSBitmapFont +end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: a4 +a4 +%%EndPaperSize + +%%EndSetup +%%Page: 1 1 +1 0 bop 515 530 a Fi(This)28 b(is)e(the)i(`cursive')e(shape,)i +Fh(in)h(Bold)h(series)36 b Fi(The)28 b(Quick)g(Br)-6 +b(own)28 b(Fox)515 679 y(J)-7 b(umps)27 b(Over)g(The)h(Lazy)h(Dog.)515 +829 y Fg(This)f(is)e(the)i(`modern)g(script')e(shape,)i +Ff(in)h(Bold)h(series)j Fg(The)28 b(Quick)g(Br)-6 b(own)515 +978 y(Fox)29 b(J)-7 b(umps)27 b(Over)g(The)h(Lazy)h(Dog.)515 +1127 y Fe(This)f(is)e(the)i(`twist')e(shape)i Fd(in)i(Bold)g(series)d +Fe(The)h(Quick)g(Br)-6 b(own)28 b(Fox)h(J)-7 b(umps)515 +1277 y(Over)27 b(The)h(Lazy)g(Dog.)2612 1426 y Fc(J)-9 +b(ames)34 b(K)l(il\014ge)p Fb(r)1926 5255 y Fa(1)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/fonts/vicentino/kilfiger/testvic.tex b/fonts/vicentino/kilfiger/testvic.tex new file mode 100644 index 0000000000..2002636001 --- /dev/null +++ b/fonts/vicentino/kilfiger/testvic.tex @@ -0,0 +1,20 @@ +\documentclass{article} +\usepackage{vicent} +\begin{document} +\Large\raggedright +\textcursive{This is the `cursive' shape, \textbf{in Bold series} +The Quick Brown Fox Jumps Over The Lazy Dog.} + +\textmodernscript{This is the `modern script' shape, \textbf{in Bold +series} The Quick Brown Fox Jumps Over The Lazy Dog.} + +\texttwist{This is the `twist' shape \textbf{in Bold +series} The Quick Brown Fox Jumps Over The Lazy Dog.} + + + + +%example of using low level font selection to get a swash `r' +\raggedleft{\LARGE\fontfamily{vc}\fontshape{ui}\selectfont +James Kilfige\fontshape{its}\selectfont r } +\end{document} diff --git a/fonts/vicentino/kilfiger/vicent.sty b/fonts/vicentino/kilfiger/vicent.sty new file mode 100644 index 0000000000..817e845af5 --- /dev/null +++ b/fonts/vicentino/kilfiger/vicent.sty @@ -0,0 +1,15 @@ +%This was written by James Kilfiger, to support the Vicentino fonts of +%Willibald Kraml +\ProvidesFile{vicent.sty}[1999/09/24 Vicentino Font Package] +\newcommand\cursiveshape{\fontencoding{OT1}\fontfamily{vc}\fontshape{it}\selectfont} +\newcommand\modernscriptshape{\fontencoding{OT1}\fontfamily{vc}\fontshape{sl}\selectfont} +\newcommand\twistshape{\fontencoding{OT1}\fontfamily{vc}\fontshape{ui}\selectfont} +\newcommand\vicentinofamily{\fontencoding{OT1}\fontfamily{vc}\selectfont} + +\DeclareTextFontCommand{\textcursive}{\cursiveshape} +\DeclareTextFontCommand{\textmodernscript}{\modernscriptshape} +\DeclareTextFontCommand{\texttwist}{\twistshape} +\DeclareTextFontCommand{\textvicentino}{\vicentinofamily} + + + diff --git a/fonts/vicentino/kraml/local.mf b/fonts/vicentino/kraml/local.mf new file mode 100644 index 0000000000..92094ec0ad --- /dev/null +++ b/fonts/vicentino/kraml/local.mf @@ -0,0 +1,160 @@ +% +% local.mf +% + +% +% Define modes +% +mode_def hplaser = % HP LaserJet+ + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=300; + blacker:=0; % The LaserJet is black enough + fillin:=.2; % and it tends to fill in diagonals + o_correction:=.6; % + enddef; + +mode_def kyocera = % Kyocera F-1010 + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=300; + blacker:=0; % The Kyocera is black enough + fillin:=.2; % and it tends to fill in diagonals + o_correction:=.6; % + enddef; + +mode_def epsonfx = % Epson FX-80 + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=240; + blacker:=0; % don't make the pens any blacker + fillin:=0; % and don't compensate for fillin + o_correction:=.2; % but suppress most overshoots + aspect_ratio:=9/10; % 216 dots/inch vertical + enddef; + +mode_def epsonmx = % Epson MX-80 + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=120; + blacker:=0; % don't make the pens any blacker + fillin:=0; % and don't compensate for fillin + o_correction:=.2; % but suppress most overshoots + aspect_ratio:=9/5; % 216 dots/inch vertical + enddef; + +mode_def lqhires = % NEC-P6 high resolution (360x360) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=360; + blacker:=0; % don't make the pens any blacker + fillin:=0; % and don't compensate for fillin + o_correction:=.4; % but suppress most overshoots + enddef; + +mode_def lqmedres = % LQ-1500, NEC-P6 medium resolution (360x180) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=360; + blacker:=0; % 0.3 avoids `holes' + fillin:=0; % and don't compensate for fillin + o_correction:=.1; % but suppress most overshoots + aspect_ratio:=1/2; % 180 dots/inch vertical + enddef; + +mode_def lqmedresl = % LQ-1500, NEC-P6 medium resolution (180x360) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=180; + blacker:=0; % 0.3 avoids `holes' + fillin:=0; % and don't compensate for fillin + o_correction:=.1; % but suppress most overshoots + aspect_ratio:=2; % 360 dots/inch vertical + enddef; + +mode_def lqlores = % LQ-1500, NEC-P6 low resolution (180x180) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=180; + blacker:=0; % don't make the pens any blacker + fillin:=0; % and don't compensate for fillin + o_correction:=.1; % but suppress most overshoots + enddef; + +mode_def itoh = % C.ITOH 8510A (160x144) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=160; + blacker:=0; % don't make the pens any blacker + fillin:=0; % and don't compensate for fillin + o_correction:=.1; % but suppress most overshoots + aspect_ratio:=9/10; % 144 dots/inch vertical + enddef; + +% +% Select default mode +% +localfont:=hplaser; + + +% +% Here are macros for Xerox-world font info: +% + +def font_family expr s = % string s names the font family, e.g., "CMR" + headerbyte 49: BCPL_string(s,20); + special "identifier "&s enddef; +def coding_scheme expr s = % string s names the scheme, e.g. "TEX TEXT" + headerbyte 9: BCPL_string(s,40); + special "codingscheme "&s enddef; +def font_face_byte expr x = % integer x gives the family member number, + headerbyte 72: x; % which should be between 0 and 255 + special "fontfacebyte"; numspecial x enddef; + +def BCPL_string(expr s,n)= % string s becomes an n-byte BCPL string + for l:=if length(s)>=n: n-1 else: length(s) fi: l + for k:=1 upto l: , substring (k-1,k) of s endfor + for k:=l+2 upto n: , 0 endfor endfor enddef; + +Xerox_world:=1; % users can say `if known Xerox_world:...fi' + +inner end; +def bye= + if fontmaking>0: font_family font_identifier_; + coding_scheme font_coding_scheme_; + font_face_byte max(0,254-round 2designsize); fi + tracingstats:=1; % at least for now we want this + end + enddef; + +outer bye,end; + + +% +% Patch plain base (kill bugs) +% +def drawdot expr z = if unknown currentpen_path: def_pen_path_ fi + addto_currentpicture contour + currentpen_path shifted (z.t_) withpen penspeck enddef; + +% +% This has been fixed in plain 1.7 +% +%vardef cutoff(expr z,theta) = +% interim autorounding := 0; interim smoothing := 0; +% addto pic_ doublepath z.t_ withpen currentpen; +% addto pic_ contour +% (cut_ scaled (1+max(pen_lft,pen_rt,pen_top/aspect_ratio,pen_bot/aspect_ratio)) +% rotated theta shifted z.t_); +% cull pic_ keeping (2,2) withweight -default_wt_; +% addto currentpicture also pic_; +% pic_:=nullpicture enddef; diff --git a/fonts/vicentino/kraml/read.me b/fonts/vicentino/kraml/read.me new file mode 100644 index 0000000000..c80d7e0574 --- /dev/null +++ b/fonts/vicentino/kraml/read.me @@ -0,0 +1,30 @@ +=========================================================================== + Copyright Notice for VICENTINO fonts +=========================================================================== + +Dies ist eine vorl„ufige Version meiner Schrift "Vicentino". Diese +Schrift darf kopiert und benutzt werden, auáer fr kommerziellen +Gebrauch. Dies bezieht sich auf die Darstellung der Schrift in Form +von Metafont-Sourcecode, TeX Font Metrics und Pixeldateien. Die +Umwandlung in andere Fontformate bzw Fontprogramme (zB Postscript oder +TrueType) ist nur mit meiner ausdrcklichen Erlaubnis gestattet. + +This is a preliminary version of my "Vicentino" fonts. They may be used +and copied freely except for commercial use. This is with respect to the +representation of the fonts as Metafont source code, TeX Font Metrics and +pixel files (bitmaps). The conversion to other font formats or font programs +(e.g. Postscript or TrueType) may not be done without my explicit +permission. + +Willibald Kraml, 1992 +=========================================================================== + +Da dies nur eine vorl„ufige Version ist, behalte ich mir Žnderungen +aller Art fr zuknftige Versionen vor. Fr Kritik und Anregungen bin ich +dankbar. + +Willibald Kraml +Degengasse 27/16 +A-1160 Wien +e-mail: kraml@kpmg.co.at oder: a7511daa@awiuni11 (earn) + diff --git a/fonts/vicentino/kraml/readme.2 b/fonts/vicentino/kraml/readme.2 new file mode 100644 index 0000000000..79c82bb736 --- /dev/null +++ b/fonts/vicentino/kraml/readme.2 @@ -0,0 +1,47 @@ +Folgende Vicentino Fonts sind hier enthalten: +============================================= +Diverse Aenderungen, 31.03.92 Jobst-Hartmut Lueddecke + + +VCC Vicentino Corsiva, Design size = 10 pt, nur Laserjet +VCC10 Vicentino Corsiva, Design size = 10 pt, alle Modi, jhl +VCC14 Vicentino Corsiva, Design size = 14 pt, alle Modi, jhl +VCCB Vicentino Corsiva Bold, Design size = 10 pt, nur Laserjet +VCCB10 Vicentino Corsiva Bold, Design size = 10 pt, alle Modi, jhl +VCCB14 Vicentino Corsiva Bold, Design size = 14 pt, alle Modi, jhl + +VCM Vicentino Modern, Design size = 10 pt, nur Laserjet +VCM10 Vicentino Modern, Design size = 10 pt, alle Modi, jhl +VCM14 Vicentino Modern, Design size = 14 pt, alle Modi, jhl +VCMB Vicentino Modern Bold, Design size = 10 pt, nur Laserjet +VCMB10 Vicentino Modern Bold, Design size = 10 pt, alle Modi, jhl +VCMB14 Vicentino Modern Bold, Design size = 14 pt, alle Modi, jhl + +VCT Vicentino Twist, Design size = 10 pt, nur Laserjet +VCT10 Vicentino Twist, Design size = 10 pt, alle Modi, jhl +VCT14 Vicentino Twist, Design size = 14 pt, alle Modi, jhl +VCTB Vicentino Twist Bold, Design size = 10 pt, nur Laserjet +VCTB10 Vicentino Twist Bold, Design size = 10 pt, alle Modi, jhl +VCTB14 Vicentino Twist Bold, Design size = 14 pt, alle Modi, jhl + +VCCA Swash characters for Vicentino, Design size = 10 pt, nur Laserjet +VCCA10 Swash characters for Vicentino, Design size = 10 pt, alle Modi, jhl +VCCA14 Swash characters for Vicentino, Design size = 14 pt, alle Modi, jhl +VCCBA bold, Design size = 10 pt, nur Laserjet +VCCBA10 bold, Design size = 10 pt, alle Modi, jhl +VCCBA14 bold, Design size = 14 pt, alle Modi, jhl + +VCMA Swash for Vicentino Modern, Design size = 10 pt, nur Laserjet +VCMA10 Swash for Vicentino Modern, Design size = 10 pt, alle Modi, jhl +VCMA14 Swash for Vicentino Modern, Design size = 14 pt, alle Modi, jhl +VCMBA bold, Design size = 10 pt, nur Laserjet +VCMBA10 bold, Design size = 10 pt, alle Modi, jhl +VCMBA14 bold, Design size = 14 pt, alle Modi, jhl + +VCTA Swash for Vicentino Twist, Design size = 10 pt, nur Laserjet +VCTA10 Swash for Vicentino Twist, Design size = 10 pt, alle Modi, jhl +VCTA14 Swash for Vicentino Twist, Design size = 14 pt, alle Modi, jhl +VCTBA bold, Design size = 10 pt, nur Laserjet +VCTBA10 bold, Design size = 10 pt, alle Modi, jhl +VCTBA14 bold, Design size = 14 pt, alle Modi, jhl + diff --git a/fonts/vicentino/kraml/vcaltdri.mf b/fonts/vicentino/kraml/vcaltdri.mf new file mode 100644 index 0000000000..ca066a6895 --- /dev/null +++ b/fonts/vicentino/kraml/vcaltdri.mf @@ -0,0 +1,13 @@ +% driver file for vicentino fonts (alternative character set): +% input all character sources + +input vcdefs; +%input vcupper; +input vcaltlow; +input vcbigdig; +input vcaltpun; +% ligatures & kerning +input vcaltlig; +input vcaltlgt; +%that's it! + diff --git a/fonts/vicentino/kraml/vcaltlgt.mf b/fonts/vicentino/kraml/vcaltlgt.mf new file mode 100644 index 0000000000..cbb500401b --- /dev/null +++ b/fonts/vicentino/kraml/vcaltlgt.mf @@ -0,0 +1,12 @@ +% VCALTLGT - ligature tables & kerning for vicentino fonts (alternative +% character set) +% w. kraml, 1991, 92 + +%ligtable "f" : "i" =: 12, "f" =: 11, "t" kern -1/8sw#; +ligtable "f" : "f" kern -.3sw#, "u" kern -1/6sw#; +ligtable "c" : "t" =: 12; +ligtable "s" : "t" =: 11, "p" =: 13; +%ligtable "t" : "t" kern -1/8sw#; +%ligtable "'" : "'" =: 34; +%ligtable "`" : "`" =: 92; + diff --git a/fonts/vicentino/kraml/vcaltlig.mf b/fonts/vicentino/kraml/vcaltlig.mf new file mode 100644 index 0000000000..fea4577bb1 --- /dev/null +++ b/fonts/vicentino/kraml/vcaltlig.mf @@ -0,0 +1,90 @@ +% vcaltlig.mf ligatures for vicentino fonts +% kraml 1992 +slant := lowerslant; +currenttransform := identity slanted slant; + + +beginchar(char11, 2sw#+1.5tw#, xh#, 0); "the st ligature"; +pickup lower_pen; +x1=x2=.5sw+.5tw; top.y1=h; bot.y2=0; +x3=.75tw; rt.x4=sw+tw; y3=.76h; y4=.3h; +x5=sw+.3tw; lft.x6=.6s; y5=y3+.55th; y6=y4-3/4th; +path trial,p; +trial = z3{down}..tension1.1..{down}z4; +z7 = trial intersectionpoint (z6{up}..{up}z5); +p = z7..tension1.3..z5..z1{left}..z3{down}..tension1.1.. +z4{down}..z2{left}..z6..tension2.5..cycle; +draw subpath if modern:(.77,6.11) else: (.75,6.23) fi of p; +% t part +x11=x12=w-1.26tw; rt.x13=w; y11=h+2.5th; bot.y12=0; y13=th; +y14=y15=xh-th; lft.x14=sw+1tw; x15=x13; +path stem; +stem=z11{curl0}..tension7..z12..tension2..{dir40}z13; +draw if modern: subpath(0,1.6) of fi stem; +draw z14--z15; +% connection +x19=.66sw; y19=h+th; +path conn; conn=subpath(0,1) of p & z5{up}...z19{dir79} + ..tension.9 ..{dir59}z11; +if not.modern: pickup cap_serif_pen; fi +draw if modern: subpath(1.1,2.93) else: subpath(1.15,2.8) fi of conn; +labels(19); +end_char; + +beginchar(char12, 2sw#+1.5tw#, xh#, 0); "the ct ligature"; +pickup lower_pen; +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.5s; +rt x1=2axis-.5s; lft x3=.5s; +x2-dev=x4+dev=axis; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +rt.x5+.25s=rt.x6=sw+tw-.2s; y5=3/4h; y6=th; +path p,q ; p= superellipse(z1,z2,z3,z4,0.73); +q= z5..{left}z2 & subpath(2,6) of p & z4{right}..{dir36}z6; +draw q; +% t part +x11=x12=w-1.26tw; rt.x13=w; y11=h+2.5th; bot.y12=0; y13=th; +y14=y15=xh-th; lft.x14=sw+1tw; x15=x13; +path stem; +stem=z11{curl0}..tension7..z12..tension2..{dir40}z13; +draw if modern: subpath(0,1.6) of fi stem; +draw z14--z15; +% connection +x19=.72sw; y19=h+th; +path conn; conn=z2{left}..z19{dir79} + ..tension.9 ..{dir59}z11; +if not.modern: pickup cap_serif_pen; fi +draw if modern: subpath(0.1,1.93) else: subpath(0.1,1.8) fi of conn; +labels(19); +end_char; + +beginchar(char13, 3sw#+tw#, xh#, 0); "the sp ligature"; +pickup lower_pen; +x1=x2=.5sw+.5tw; top.y1=h; bot.y2=0; +x3=.75tw; rt.x4=sw+tw; y3=.76h; y4=.3h; +x5=sw+.3tw; lft.x6=.6s; y5=y3+.55th; y6=y4-3/4th; +path trial,p; +trial = z3{down}..tension1.1..{down}z4; +z7 = trial intersectionpoint (z6{up}..{up}z5); +p = z7..tension1.3..z5..z1{left}..z3{down}..tension1.1.. +z4{down}..z2{left}..z6..tension2.5..cycle; +draw subpath if modern:(.77,6.11) else: (.75,6.23) fi of p; +% p part +x11=x12=w-sw-tw; y11=h+2.55th; bot.y12=-dh+1.3th; +lft.x13=w-sw-2.25tw; y13=h-th; top.y14=h; x14=x15=w-.5sw-tw; bot.y15=0; +rt.x14'=w-.5s; y14'=.525h; +rt.x12'=lft.x13; bot.y12'=-dh; +path stem, bowl; stem = z11{dir240}..tension3.3..{dir255}z12..{dir170}z12' ; +z16 = stem horintersection 1.25th; +draw if modern: subpath(0,1.8) of fi stem; +bowl=z13{dir35}...z14{right}..z14'{down}..z15{left}..{dir105}z16; +draw if modern: subpath(0.15,4) of fi bowl; +% connection +x19=.66sw; y19=h+th; +if not.modern: pickup cap_serif_pen;fi +path conn; conn=subpath(0,1) of p & z5{up}...z19{dir79} + ..tension.9..{dir59}z11; +draw if modern: subpath(1.1,2.93) else: subpath(1.15,2.8) fi of conn; +labels(19); +end_char; + diff --git a/fonts/vicentino/kraml/vcaltlow.mf b/fonts/vicentino/kraml/vcaltlow.mf new file mode 100644 index 0000000000..dab978409b --- /dev/null +++ b/fonts/vicentino/kraml/vcaltlow.mf @@ -0,0 +1,333 @@ +% VCALTLOW - lower characters for vicentino font (alternative set) +% w. kraml, 1991, 92 + +% lower case: +slant := lowerslant; +currenttransform := identity slanted slant; + +beginchar("a", 2tw#+sw#+1.5sw#, xh#, 0); "the letter a"; +pickup lower_pen; +x1=x2=w-1.5sw-tw; top.y1=top.y5=h; +rt.x3=w-.75s; y3=3.5th; bot.y6=bot.y2=0; +lft x5=1.5tw; lft x6=1.25tw; +path rightstem; rightstem = z1---z2{right}...{dir126}z3; +z4 = rightstem horintersection .7h; +draw if modern: subpath(0,1.9) of fi rightstem; +draw z4..tension3..z5..tension2.5..z6{right}..tension1.75..{up}z4; +end_char; + +beginchar("b", 2tw#+sw#, ah#, 0); "the letter b"; +pickup lower_pen; +x2=x3=tw+.25s; x2-x1=halfser; y2=3/4h; bot.y3=1.667th; +z2-z1=whatever*dir40; +top.y2'=h; x2'=x2+4/3tw; +path stem, loop; stem = z2'{dir170}..z2{down}..{dir275}z3; +z4 = stem horintersection y1; +draw if modern: subpath(.1,2) of fi stem; +x5=x8=w/2; top.y5=xh; bot.y8=0; +z6 = stem horintersection xh/2; +y7=y6; rt.x7=w-2/3s; +loop = z6{up}..z5..tension.9..z7..z8..{dir95}z3; +draw loop; +end_char; + +beginchar("c", sw#+tw#+1.5sw#, xh#, 0); "the letter c"; +pickup lower_pen; +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.5s; +rt x1=2axis-.5s; lft x3=.5s; +x2-dev=x4+dev=axis; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +rt.x5=w-1.5sw; rt.x6=w-.25s; y5=3/4h; y6=3.5th; +path p,q ; p= superellipse(z1,z2,z3,z4,0.73); +q= z5..{left}z2 & subpath(2,6) of p & z4{right}...{dir126}z6; +draw q; +end_char; + +beginchar("d", sw#+tw#+s#, ah#, 0); "the letter d"; +pickup lower_pen; +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.5s; +rt x1=2axis-.5s; lft x3=.5s; +x2-dev=x4+dev=axis; +y1-dev=y3+dev=.52xh; +top.y2=xh; bot y4=0; +x5=.41w; top.y5=h; lft.x6=0; y6=h-1.25th; +path p,q ; p= superellipse(z1,z2,z3,z4,0.73); +q=z1{up}...{left}z5..{dir216}z6; +draw p & q; +end_char; + +beginchar("e", sw#+tw#+1.5sw#, xh#, 0); "the letter e"; +pickup lower_pen; +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.75s; +rt x1=2axis-.5s; lft x3=.5s; +x2-dev=x4=axis; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +rt.x5=w-1.5sw; rt.x6=w-.25s; y5=3/4h; y6=3.5th; +path p,q ; p= superellipse(z1,z2,z3,z4,0.73); +z7 = (subpath(2,6) of p) horintersection .425h; +q= z7{dir18}..tension1.25.. + z5..{left}z2 & subpath(2,6) of p & z4{right}...{dir126}z6; +draw if modern: subpath(0,6.925) of fi q; +end_char; + +beginchar("f", 3.25tw#, ah#, dh#); "the letter f"; +pickup lower_pen; +x2-.8s=x3+.8s=w/2; x1=w+1sw; x4=-1.25sw; +top.y2+2s=top.y1+3s=h; bot.y3=-dh+2s; bot.y4=-dh+s; +y5=y6=xh-th; lft.x5=0.25s; x6=w; +path stem; +stem = z1{dir105}..tension1.2..z2..tension 2.25.. + z3{dir240}..if modern: else: {dir145}fi z4; +draw if modern: subpath(0,2.7) of fi stem; +draw z5--z6; +end_char; + +beginchar("g", sw#+tw#+s#, xh#, dh#); "the letter g"; +pickup lower_pen; +x1=w/2+2/3s; x3=w/2-2/3s; x2=w-x4=.9tw; +top.y1=h; y2=y4=.63h; y3=.24h; +draw z1..z2..z3; +draw z1..z4..z3; +x8=x3-.5s; x5=.4[x2,x3]; rt.x7=w-.4s; +bot.y8=-dh; bot.y5=.25s; y7=y8+1.65th; +path p; +p =z3..z5{down}..{down}z7..{left}z8; +draw p; +z6 = p horintersection 0; +lft.x9=0; y9=y8+1.25th; +draw z8{left}..z9{up}..{dir30}z6; +end_char; + +beginchar("h", 2tw#+sw#, ah#, 0); "the letter h"; +pickup lower_pen; +x2=x3=tw+.25s; x2-x1=halfser; y2=3/4h; bot.y3=0; +z2-z1=whatever*dir40; +top.y2'=h; x2'=x2+4/3tw; +path stem, loop; stem = z2'{dir170}..z2{down}..{dir275}z3; +z4 = stem horintersection y1; +draw if modern: subpath(.1,2) of fi stem; +x5=w/2; top.y5=xh; bot.y8=0; x8=x5+.6tw; +z6 = stem horintersection xh/2; +y7=y6; rt.x7=w-2/3s; +x9=x5+.8s; y9=.66th; +loop = z6{up}..z5..tension.9..z7{down}..z8..z9; +draw if modern: subpath(0,3.2) of fi loop; +end_char; + +beginchar("k", 2tw#+sw#, ah#, 0); "the letter k"; +pickup lower_pen; +x2=x3=tw; x2-x1=halfser; y2=3/4h; bot.y3=0; +z2-z1=whatever*dir40; +top.y2'=h; x2'=x2+4/3tw; +path stem, loop; stem = z2'{dir170}..z2{down}..{dir275}z3; +z4 = stem horintersection y1; +draw if modern: subpath(.1,2) of fi stem; +x5=w/2 + .5s; top.y5=xh; +x5'=w-tw; y5'= if modern: .8xh else: .7xh fi; +z6 = stem horintersection 0.45xh; +loop = z6{up}..z5..z5' + if modern:{dir220} else:{dir245} fi + ..tension.825..{dir275}z3; +draw if modern: subpath(1.5,3) of fi loop; +z7 = loop horintersection 7/16xh; +bot.y8=-2th; top.y9=-s; rt.x9=w+2tw; lft.x8=w; +draw z7..tension1.75..z8..z9; +end_char; + +beginchar("l", 2tw#+s#, ah#, 0); "the letter l"; +pickup lower_pen; +x2=x3=w/2; x2-x1=halfser; rt x4=w; y2=3/4h; bot y3=0; y4=th; +z2-z1=whatever*dir40; +top.y2'=h; x2'=x2+4/3tw; +path stem; +stem = z2'{dir170}..z2{down}..tension7..z3..tension2..{dir40}z4; +draw if modern: subpath(0.1,2.2) of fi stem; +end_char; + +beginchar("m", 2tw#+2sw#+1.5sw#, xh#, 0); "the letter m"; +pickup lower_pen; +x2=x3=tw; x4=x5=tw+sw; x6=x7=w-tw-1.5sw; lft.x1=0; rt.x8=w-.75s; +top.y2=top.y4=top.y6=h; bot.y3=bot.y5=bot.y7=0; +y1=h-th; y8=3.5th; +path lstem, mstem, rstem; +lstem=z1{dir40}..tension2..z2..tension7..{curl0}z3; +mstem=z3{dir86}..tension1.9..z4{dir-30}..tension6..{curl0}z5; +rstem=z5{dir86}..tension1.9..z6{dir-30}..tension6..z7{right}...{dir126}z8; +draw if modern: subpath(0.8,2) of fi lstem; +draw mstem; +draw if modern: subpath(0,2.9) of fi rstem; +end_char; + +beginchar("n", 2tw#+sw#+1.5sw#, xh#, 0); "the letter n"; +pickup lower_pen; +x2=x3=tw; x4=x5=w-1.5sw-tw; lft.x1=.1s; rt.x6=w-.75s; +top.y2=top.y4=h; bot.y3=bot.y5=0; +y1=h-th; y6=3.5th; +path lstem, rstem; +lstem = z1{dir40}..tension2..z2..tension7..{curl0}z3; +draw if modern: subpath(.8,2) of fi lstem; +rstem = z3{dir86}..tension1.9..z4{dir-30}..tension6..z5{right}...{dir126}z6; +draw if modern: subpath(0,2.9) of fi rstem; +end_char; + +beginchar("p", 2tw#+sw#, xh#, dh#); "the letter p"; +pickup lower_pen; +x1=x2=tw; y1=h+s; bot.y2=-dh+1.3th; +lft.x3=0; y3=h-th; top.y4=h; x4=x5=.52w; bot.y5=0; +rt.x4'=w-.5s; y4'=.525h; +rt.x2'=0; bot.y2'=-dh; +path stem, bowl; stem = z1{down}..tension2.3..{dir255}z2..{dir170}z2' ; +z6 = stem horintersection 1.25th; +draw if modern: subpath(0,1.8) of fi stem; +bowl=z3{dir35}...z4{right}..z4'{down}..z5{left}..{dir105}z6; +draw if modern: subpath(0.15,4) of fi bowl; +labels(2', 4'); +end_char; + +beginchar("q", 2tw#+sw#, xh#, dh#); "the letter q"; +pickup lower_pen; +x1=w-tw; top.y1+.25th=top.y5=h; +bot.y6=0; +x2=1.2tw; bot.y2=-dh; +x2''=w+1.55tw; x2'=.5[x2,x2'']; +y2'-.25s=y2''-.75s=y2; +lft.x5=1.25tw; lft.x6=tw; +path rightstem; +rightstem = z1{dir-85}..tension.8..{dir220}z2 & z2{dir40}..tension.8..z2' + ..tension.8..{dir40}z2'' ; +draw if modern: subpath(0,2.85) of fi rightstem; +draw z1..tension2.1..z5..tension2.2..z6{right}..tension1.7..{up}z1; +labels(2',2''); +end_char; + +beginchar("r", tw#+sw#+.5s#+1.5sw#, xh#, 0); "r"; +pickup lower_pen; +x2=x3=tw; bot y3=0; top.y2=top.y5=h; +lft.x1=0; y1=h-th; top.y4=h+1/3s; rt.x4=w-.75s; x5=w-.7tw-1.5sw; +x4'=.22[x5,x4]; y4'=h-2.2th; +path lstem, rstem; +lstem=z1{dir40}..tension2..z2..tension7..{curl0}z3; +rstem=z3{dir86}..tension2..z5{dir-30}..z4'{dir-10}..{dir126}z4; +draw if modern: subpath(0.8,2) of fi lstem; +draw if modern: subpath(0,2.95) of fi rstem; +labels(4'); +end_char; + +beginchar("s", 2.5tw#, ah#, dh#); "the letter s (long form)"; +pickup lower_pen; +x2-.8s=x3+.8s=w/2; x1=w+.42tw; rt.x4=-.4tw; +top.y2+.25s=top.y1+.5s=h; bot.y3=-dh+s; bot.y4=-dh; +path stem; +stem = z1{dir105}..tension1.2..z2..tension 2.25.. + z3{dir240}..if modern: else: {dir145}fi z4; +draw if modern: subpath(0,2.8) of fi stem; +end_char; + +beginchar("t", 2.5tw#+1.5sw#, xh#, 0); "the letter t"; +pickup lower_pen; +x1=x2=1.25tw; rt.x3=w-.75s; y1=h+s; bot.y2=0; y3=3.5th; +y4=y5=xh-th; lft.x4=0.25s; x5=2.5tw; +path stem; +stem=z1{curl0}..tension9..z2{right}...{dir126}z3; +draw if modern: subpath(0,1.9) of fi stem; +draw z4--z5; +end_char; + +beginchar("u", 2tw#+sw#+sw#, xh#, 0); "the letter u"; +pickup lower_pen; +x2=x3-.5s=tw+sw; x4=x5=w-tw; lft.x1=0.5s; rt.x6=w; +top.y2=top.y4=h; bot.y3=bot.y5=0; +y1=h-2.5th; y6=th; +path lstem, rstem; +lstem=z1{dir126}...z2{right}..tension5.5..z3{right}..tension1.5..{dir86}z4; +rstem=z4{curl0}..tension8..z5..tension1.5..{dir40}z6; +draw if modern: subpath(.07,3) of fi lstem; +draw if modern: subpath(0,1.2) of fi rstem; +end_char; + +beginchar("v", 2tw#+sw#+sw#, xh#, 0); "the letter v"; +pickup lower_pen; +x2=tw+sw; x4-x5=2/3tw; +lft.x1=0.5s; rt.x4=w-2/3tw; x3=.7[x1,x4]; +top.y2=top.y4=h; y1=h-2.5th; y5=h-th; bot.y3=0; +path stem; +stem = z1{dir126}...z2{right}..tension6.7.. + z3{right}..tension2..z4{left}..tension1.5..z5; +draw if modern: subpath(.07,3.2) of fi stem; +end_char; + +beginchar("w", 3tw#+2sw#-2s#+sw#, xh#, 0); "the letter w"; +pickup lower_pen; +x2=tw+sw; x7-x8=2/3tw; +lft.x1=0.5s; rt.x7=w-2/3tw; x3=.7[x1,x4]; +x7-x4=x6-x3=x4-x2; +top.y2=top.y4=top.y7=h; y1=h-2.5th; y8=h-th; bot.y3=bot.y6=0; +path lstem, rstem; +lstem=z1{dir126}...z2{right}..tension6.7.. + z3{right}..tension2.2..z4{dir130}; +rstem=z4{right}..tension6.7..z6{right}..tension2..z7{left}..tension1.5..z8; +draw if modern: subpath(.07,3) of fi lstem; +draw if modern: subpath(0,2.2) of fi rstem; +end_char; + +beginchar("x", 2tw#+sw#+.5s#, xh#, 0); "the letter x"; +pickup lower_pen; +lft.x1-.3s=lft.x5=0; x2=x6+.75s=tw+.1s; +x7-.5s=w-tw; rt.x8=w-.5s; x4=w+1.9tw; x3=w-.6tw; +top.y2=top.y7=h; y1=y8=h-th; +y5=th; y4=-1.5th; 0=bot.y6=bot.y3; +path nwso, swno; +nwso=z1{dir42}..tension1.75..z2..tension4..{z3-.75[z1,z2]}z3...{dir40}z4; +swno=z5..tension1.7..z6..tension3.3..z7..tension1.7..z8; +draw if modern: subpath(.8,2.9) of fi nwso; +draw if modern: subpath(.8,2.2) of fi swno; +end_char; + +beginchar("y", 2tw#+sw#+sw#, xh#, dh#); "the letter y"; +pickup lower_pen; +lft.x1=0; rt.x4=w; x2=2/3tw; +x4'=w-sw-s; y4'=h-1.2th; +x6=-tw; x5=x6+1.33tw; +top.y2=top.y4=h; y1=h-th; bot.y5=-dh; +y6=-dh+th; +path rstem, lstem; +rstem = z4...z4'..tension2.3..z5..tension1.2..z6; +z3=rstem horintersection -.55s; +lstem = z1{dir40}..tension2..z2{right}..tension2.7..{z5-z4'}z3; +draw if modern: subpath(0.07,2.7) of fi rstem; +draw if modern: subpath(.8,1.97) of fi lstem; +end_char; + +beginchar("z", 2tw#+sw#-.5s#, xh#, 0); "the letter z"; +pickup lower_pen; +lft.x1=lft.x4=0.175tw; rt.x3+.275tw=w; +x2=1.1tw; x5=w-1.275tw; +top.y2=top.y3=h; y1=h-1.225th; bot.y4=bot.y5=0; +x6 =w+2.1tw; y6=-2th; +path stem; +stem=z1{dir38}...z2.. + if modern: tension 1.2 else: tension.9 fi .. + {dir40}z3 & z3..tension6.. {dir265}z4 & + z4{dir40}..tension1.1..z5..{dir35}z6; +draw if modern: subpath(.25,4.9) of fi stem; +end_char; + +beginchar(char25, 5.1tw#, ah#, dh#); "the ss ligature (long forms)"; +pickup lower_pen; +x2-.8s=x3+.8s=1.5tw+.1s; x1=3.2tw+0.5s; rt.x4=-.25s; +top.y2+.75s=top.y1+s=h; bot.y3=-dh+s; bot.y4=-dh; +x11=x1+2.2tw; x12=x2+2.2tw; x13=x3+2.2tw; x14=x4+2.2tw; +y11=y1; y12=y2+.2s; y13=y3; y14=y4; +path lstem, rstem; +rstem = z11{dir106}..tension1.1..z12..tension2.25.. + z13{dir240}..if not.modern: {dir145}fi z14; +z1'=rstem horintersection h-2th; +lstem = z1'{dir110}..tension1.25..z2..tension 2.25.. + z3{dir240}..if modern: else: {dir145}fi z4; +draw if modern: subpath(0,2.75) of fi rstem; +draw if modern: subpath(0,2.6) of fi lstem; +labels(1'); +end_char; + diff --git a/fonts/vicentino/kraml/vcaltpun.mf b/fonts/vicentino/kraml/vcaltpun.mf new file mode 100644 index 0000000000..cfd64ebc63 --- /dev/null +++ b/fonts/vicentino/kraml/vcaltpun.mf @@ -0,0 +1,22 @@ +% VCALTPUNCT - punctuation characters for vicentino fonts - alternative forms +% w. kraml, 1991 + +%% punctuation marks follow here: +slant:= lowerslant; +currenttransform := identity slanted slant; + +beginchar(char38, 2.5sw#+2.5tw#, ch#, 0); "the ampersand \&"; +pickup lower_pen; +x2=1/4w; x1=x2+tw; x3=w-1.33tw; rt.x4=w-.3s; +top.y2=h; y1=h-th; bot.y3=0; y4=1.1th; +path p,q,r; +p = z1..tension1.2..{dir230}z2..tension1.94..z3{right}..{dir40}z4; +z5=p horintersection .85xh; z9=p horintersection .45xh; +lft.x6=.5s; x7=.45w; x8=2/3w; +bot.y7=0; y6=.75[y7,y5]; top.y8=xh; +q = z5{z2-z4}..{down}z6..{right}z7..{dir160}z8..{z3-z1}z9; +rt.x10=w-.5s; y10=xh+th; +r = z8{dir-20}..{dir126}z10; +draw p; draw q; draw r; +end_char; + diff --git a/fonts/vicentino/kraml/vcbigdig.mf b/fonts/vicentino/kraml/vcbigdig.mf new file mode 100644 index 0000000000..cf59869adb --- /dev/null +++ b/fonts/vicentino/kraml/vcbigdig.mf @@ -0,0 +1,97 @@ +% VCBIGDIG - "big" (modern style) digits for vicentino font +% w. kraml, 1991 + +% the figures start here +slant := upperslant; +currenttransform := identity slanted slant; + +beginchar("1", 4/10size#, ch#, 0); "the figure 1"; +pickup lower_pen; +top.lft.z1=(w/2,h); bot.lft.z2=(w/2,0); +lft.x1'=1.5s; z1-z1'=whatever*dir50; +draw z1'{dir35}..z1 & + z1{dir267}..tension7..{dir10}z2; +end_char; + +beginchar("2", 4/10size#, ch#, 0); "the figure 2"; +pickup lower_pen; +x1=w-x3=tw; x2=w/2; x4=w-x5=.5tw; +top.y2=h; bot.y4=bot.y5=0; +y1=y3=.625h; +path stem; +stem = z1..z2{right}..z3..{z4-z3}z4 & + z4{dir40}..if modern: tension2.. fi z5{dir40}; +draw stem; +end_char; + +beginchar("3", 4/10size#, ch#, 0); "the figure 3"; +pickup lower_pen; +x1=x4-.5s=w-x3=tw; x2=x6=w/2; +lft.x7=.5s; rt.x5=w-.5tw; +top.y2=h; bot.y6=0; +y1-th=y3=.7h; y4=.52h; y5=.5[y6,y4]; y7=1.25th; +draw z1{z1-z5}..z2{right}..z3..{dir205}z4 & + z4{dir20}..z5{down}..z6{left}..z7; +end_char; + +beginchar("4", 4/10size#, ch#, 0); "the figure 4"; +pickup lower_pen; +lft.x2=w-rt.x1=.5s; x3=x4=w-1.25tw; +top.y3=h; bot.y4=0; y2=y1=1/3h; +draw z1{dir160}..tension2.75..{left}z2 & + z2{up}..tension1.5..{z3-z2}z3 & + z3{dir267}..tension7..{dir10}z4; +end_char; + +beginchar("5", 4/10size#, ch#, 0); "the figure 5"; +pickup lower_pen; +rt.x1=w-.25s; rt.x4=w-.5tw; x2=2/3tw; lft.x3=lft.x5=.5s; +y1=top.y2=h; y3=.65h; bot.y5=0; y4=.55[y5,y3]; +draw z1{dir215}...z2{left} ---z3 & + z3{dir35}..z4{down}..tension1.5..{dir120}z5; +end_char; + +beginchar("6", 4/10size#, ch#, 0); "the figure 6"; +pickup lower_pen; +rt.x4=rt.x1=w-.5s; +lft.x2=.5s; x3=w/2; x5=.7[x2,x3]; +bot.y1=h; bot.y3=0; +y2=y4=1/3h; y5=.6h; +draw z1{dir207}..z2{down}..z3{right}..z4..z5{dir190}; +end_char; + +beginchar("7", 4/10size#, ch#, 0); "the figure 7"; +pickup lower_pen; +lft.x1=w-rt.x3=.5s; +x4=1.5tw; +top.y3=h; top.y4=0; bot.y1=h; +path stem; +stem=z1{dir260}..tension1.1..{right}z3 & + z3{curl0}..{dir-80}z4; +draw if modern: subpath(0.2,2) of fi stem; +end_char; + +beginchar("8", 4/10size#, ch#, 0); "the figure 8"; +pickup lower_pen; +x1=x2=x3=w/2; top.y1=h; bot.y3=0; y2=.55h; +lft.x4=w-rt.x5=.5s; y4=y5=.52[y3,y2]; +lft.x6=w-rt.x7=.6tw; y6=y7=.52[y2,y1]; +draw z1{right}..z7..z2..z4..z3{right}..z5..z6..cycle; +end_char; + +beginchar("9", 4/10size#, ch#, 0); "the figure 9"; +pickup lower_pen; +lft.x4-.25s=lft.x1=.5s; +rt.x2=w-.75s; x3=w/2; x5=.7[x2,x3]; +top.y1=0; top.y3=h; +y2=y4=2/3h; y5=.4h; +draw z1{dir27}..z2{up}..z3{left}..z4..z5{dir10}; +end_char; + +beginchar("0", 4/10size#, ch#, 0); "the figure 0"; +pickup lower_pen; +rt x1=w-.75s; lft x3=.75s; y1=y3=.55h; +x2=x4=w/2; top.y2=h; bot.y4=0; +draw superellipse(z1,z2,z3,z4,0.699); +end_char; + diff --git a/fonts/vicentino/kraml/vcc10.mf b/fonts/vicentino/kraml/vcc10.mf new file mode 100644 index 0000000000..dd7b52beff --- /dev/null +++ b/fonts/vicentino/kraml/vcc10.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcc11.mf b/fonts/vicentino/kraml/vcc11.mf new file mode 100644 index 0000000000..16299bac0b --- /dev/null +++ b/fonts/vicentino/kraml/vcc11.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=11pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcc12.mf b/fonts/vicentino/kraml/vcc12.mf new file mode 100644 index 0000000000..b0702582fc --- /dev/null +++ b/fonts/vicentino/kraml/vcc12.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=12pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcc14.mf b/fonts/vicentino/kraml/vcc14.mf new file mode 100644 index 0000000000..e7f8008366 --- /dev/null +++ b/fonts/vicentino/kraml/vcc14.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=14pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcc17.mf b/fonts/vicentino/kraml/vcc17.mf new file mode 100644 index 0000000000..0877f04666 --- /dev/null +++ b/fonts/vicentino/kraml/vcc17.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=17pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcc20.mf b/fonts/vicentino/kraml/vcc20.mf new file mode 100644 index 0000000000..941e5be49e --- /dev/null +++ b/fonts/vicentino/kraml/vcc20.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=20pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcca.mf b/fonts/vicentino/kraml/vcca.mf new file mode 100644 index 0000000000..dccd41b044 --- /dev/null +++ b/fonts/vicentino/kraml/vcca.mf @@ -0,0 +1,20 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +% generate it: + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcca10.mf b/fonts/vicentino/kraml/vcca10.mf new file mode 100644 index 0000000000..2b91a2b676 --- /dev/null +++ b/fonts/vicentino/kraml/vcca10.mf @@ -0,0 +1,21 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 +% changed for using with multiple modes, J.-H. Lueddecke +% +%input local; +%mode=hplaser; +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +% generate it: + +input vcaltdri; +end; diff --git a/fonts/vicentino/kraml/vcca11.mf b/fonts/vicentino/kraml/vcca11.mf new file mode 100644 index 0000000000..cf7a365735 --- /dev/null +++ b/fonts/vicentino/kraml/vcca11.mf @@ -0,0 +1,21 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 +% changed for using with multiple modes, J.-H. Lueddecke +% +%input local; +%mode=hplaser; +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=11pt#; % design size + +% generate it: + +input vcaltdri; +end; diff --git a/fonts/vicentino/kraml/vcca12.mf b/fonts/vicentino/kraml/vcca12.mf new file mode 100644 index 0000000000..159c63a6d5 --- /dev/null +++ b/fonts/vicentino/kraml/vcca12.mf @@ -0,0 +1,21 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 +% changed for using with multiple modes, J.-H. Lueddecke +% +%input local; +%mode=hplaser; +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=12pt#; % design size + +% generate it: + +input vcaltdri; +end; diff --git a/fonts/vicentino/kraml/vcca14.mf b/fonts/vicentino/kraml/vcca14.mf new file mode 100644 index 0000000000..d6567e863c --- /dev/null +++ b/fonts/vicentino/kraml/vcca14.mf @@ -0,0 +1,21 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 +% changed for using with multiple modes, J.-H. Lueddecke +% +%input local; +%mode=hplaser; +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=14pt#; % design size + +% generate it: + +input vcaltdri; +end; diff --git a/fonts/vicentino/kraml/vcca17.mf b/fonts/vicentino/kraml/vcca17.mf new file mode 100644 index 0000000000..e130e957ee --- /dev/null +++ b/fonts/vicentino/kraml/vcca17.mf @@ -0,0 +1,21 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 +% changed for using with multiple modes, J.-H. Lueddecke +% +%input local; +%mode=hplaser; +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=17pt#; % design size + +% generate it: + +input vcaltdri; +end; diff --git a/fonts/vicentino/kraml/vcca20.mf b/fonts/vicentino/kraml/vcca20.mf new file mode 100644 index 0000000000..e25329ed27 --- /dev/null +++ b/fonts/vicentino/kraml/vcca20.mf @@ -0,0 +1,21 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 +% changed for using with multiple modes, J.-H. Lueddecke +% +%input local; +%mode=hplaser; +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := false; + +% metrics +size#:=20pt#; % design size + +% generate it: + +input vcaltdri; +end; diff --git a/fonts/vicentino/kraml/vccb.mf b/fonts/vicentino/kraml/vccb.mf new file mode 100644 index 0000000000..df31cd7090 --- /dev/null +++ b/fonts/vicentino/kraml/vccb.mf @@ -0,0 +1,17 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vccb10.mf b/fonts/vicentino/kraml/vccb10.mf new file mode 100644 index 0000000000..38213bf02f --- /dev/null +++ b/fonts/vicentino/kraml/vccb10.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vccb14.mf b/fonts/vicentino/kraml/vccb14.mf new file mode 100644 index 0000000000..da105b584c --- /dev/null +++ b/fonts/vicentino/kraml/vccb14.mf @@ -0,0 +1,15 @@ +% VCC - Vicentino Corsiva (humanistische cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := true; + +% metrics +size#:=14pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vccba.mf b/fonts/vicentino/kraml/vccba.mf new file mode 100644 index 0000000000..629c355080 --- /dev/null +++ b/fonts/vicentino/kraml/vccba.mf @@ -0,0 +1,20 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +% generate it: + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vccba10.mf b/fonts/vicentino/kraml/vccba10.mf new file mode 100644 index 0000000000..3e5a66edf1 --- /dev/null +++ b/fonts/vicentino/kraml/vccba10.mf @@ -0,0 +1,19 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +% generate it: + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vccba14.mf b/fonts/vicentino/kraml/vccba14.mf new file mode 100644 index 0000000000..3243c24b77 --- /dev/null +++ b/fonts/vicentino/kraml/vccba14.mf @@ -0,0 +1,19 @@ +% VCCALT - Vicentino Corsiva (humanistische cursive) +% alternative character set +% w. kraml, 1991,92 + +mode_setup; + +boolean modern, twisted, bold; + modern := false; + twisted := false; + bold := true; + +% metrics +size#:=14pt#; % design size + +% generate it: + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcdefs.mf b/fonts/vicentino/kraml/vcdefs.mf new file mode 100644 index 0000000000..e4006e1e42 --- /dev/null +++ b/fonts/vicentino/kraml/vcdefs.mf @@ -0,0 +1,136 @@ +% VCDEFS - definitions & macros for vicentino fonts +% w. kraml, 1991 + +% some metrics + +ah# + dh# = size#; % = height of ascenders + depth of descenders +xh#= 7/16 size#; % x-height +ah#= xh# + 5/16 size#; % ascender height +ch#= xh# + 4/16 size#; % caps height +th# = 1/8 xh#; % terminal height + +digh# = xh#; % lower case digits height +diga# = xh# + 3/16 size#; % small digits ascenders +digd# = 3/16 size#; % small digits descenders + +% (almost all the time) horizontal: + +s# := 1/20 size#; % (orig. sidebar, now ) a small distance % normal! +tw# := 2/20 size#; % terminal width +sw# := 4/18 size#; % stem to stem width +halfser#:=.6tw#; % width of 'half' serif + +if bold: + s#:= 1.08s# ; + tw#:=1.08tw#; + sw#:=1.09sw#; + halfser#:=1.10halfser#; +fi +% pixels: +define_pixels(size,ah,xh,ch,digh,diga,digd,dh,th,s,tw,sw,halfser); + +% pen(s): + +xfactor := if bold: 1.37 else: 1 fi; +yfactor := if bold: 1.30 else: 1 fi; + +pen myoddpen; +capsule_def(myoddpen) + makepen((-40,15)-- + (-35.5,0)-- + (-30,-15)-- + (-20,-16.5)-- + (-10,-17)-- + (10,-17)-- + (20, -16.5)-- + (35,-15)-- + (38,0)-- + (40,15)-- + (34, 16.5)-- + (25,17.5)-- + (17.5,18)-- + (5,18.5)-- + (-5,18.5)-- + (-17.5,18)-- + (-25,17.5)-- + (-34,16.5)-- + cycle); +if modern: +pickup pencircle xscaled (.0645 size*xfactor) + yscaled (.046 size*yfactor) rotated 15; +else: +pickup myoddpen xscaled (.00095 size*xfactor) + yscaled (.00054 size*yfactor) rotated 35; % normal! +fi +lower_pen := savepen; + +pickup myoddpen xscaled (.0009size*xfactor) + yscaled (.00055size*yfactor) rotated 6; %! +cap_serif_pen := savepen; + +if twisted: + pickup pencircle xscaled (.074 size*xfactor) + yscaled (.02625 size*yfactor) rotated 130; + lower_pen := savepen; +fi + +% font slants: +upperslant := if modern: 1/6 else: 11/60 fi; % 1/5 +lowerslant := if modern: 1/6 else: 7/30 fi; % 1/4 +if twisted: upperslant := lowerslant := -2/60; fi + +% TFMs: +font_size size#; +font_quad 10/15 size#; +font_normal_space := 2tw#+.6s#; +font_normal_stretch := 3/50 size#; +font_normal_shrink := 2/50 size#; +font_x_height := xh#; + +% macros: + +def ltopserif(expr startpoint,endpoint,stempoint) = + draw startpoint--endpoint; + draw startpoint{endpoint-startpoint}..tension2.. + {stempoint-endpoint}stempoint + enddef; + +def cap_top_serif(expr startx, rwidth) = + pair outer_left_z_, left_zz_, z_, right_z_; + outer_left_z_ = (startx-1.43tw, h-.7th); + left_zz_ - outer_left_z_ =whatever*dir29; + left_zz_= (whatever, h-.15s); + top.z_ = (startx, h); + top.right_z_ = (startx+rwidth, h); + draw outer_left_z_{dir42} ... left_zz_..tension1.25..z_ + ..tension1.25..{dir35}right_z_ ; + enddef; +def cap_bot_serif(expr startx) = + pair left_z_, z_, right_z_; + pickup cap_serif_pen; + bot.left_z_ = (startx-.8tw,0); + bot.z_ = (startx, 0); + bot.right_z_ = (startx+.9tw, 0); + draw left_z_ ... z_{right} ... {dir70}right_z_ + enddef; + +def horintersection expr height = + intersectionpoint ((-w,height)--(2w,height)) enddef; + +def end_char = italcorr (charht*slant - .25tw#); + labels(range 1 thru 15); endchar enddef; + +def dot expr z = pair upper_z_; + upper_z_ := z + (0,1.1s); + draw upper_z_{right}..tension4..{left}z enddef; + +def comma expr z = pair upper_z_, lower_z_; + upper_z_ := z + (-1/32size,1s); + lower_z_ := z - (1/12size, 2s); + draw upper_z_{right}..tension4..z..tension2..lower_z_ enddef; + +def revcomma expr z = pair upper_z_, lower_z_; + upper_z_ := z + (1/12size, 2s); + lower_z_ := z - (-1/32size,1s); + draw lower_z_{left}..tension4..z..tension2..upper_z_ enddef; + diff --git a/fonts/vicentino/kraml/vcdriver.mf b/fonts/vicentino/kraml/vcdriver.mf new file mode 100644 index 0000000000..9e517a3985 --- /dev/null +++ b/fonts/vicentino/kraml/vcdriver.mf @@ -0,0 +1,12 @@ +% driver file for vicentino fonts: input all character sources + +input vcdefs; +input vcupper; +input vclower; +input vcsmdig; +input vcpunct; +% ligatures & kerning +input vclig; +input vcligtbl; +%that's it! + diff --git a/fonts/vicentino/kraml/vclig.mf b/fonts/vicentino/kraml/vclig.mf new file mode 100644 index 0000000000..1a33e7c0c7 --- /dev/null +++ b/fonts/vicentino/kraml/vclig.mf @@ -0,0 +1,139 @@ +%%% vclig.mf ligatures for vicentino fonts +slant := lowerslant; +currenttransform := identity slanted slant; + +beginchar(char12, 5tw#, ah#, dh#); "the fi ligature"; +pickup lower_pen; +x2-s=x3+.85s=1.63tw; x1=4.15tw; rt.x4=.25s; +top.y2+.85s=h; bot.y3=-dh+s; bot.y4=-dh; +top.y1=.5[xh,ah]; +path stem; +stem = z1{dir45}..tension1.2..z2..tension 2.25.. + z3{dir240}..if modern: else: {dir145}fi z4; +draw if modern: subpath(0,2.6) of fi stem; +% i +lft.x5=1/3s; y5=xh-1.33th; +x6=x7=3.93tw; rt.x8=w; top.y6=xh; bot.y7=0; y8=th; +path ipart; +ipart = z5...z6{right}..tension7..z7{right}..tension2.. + {dir40}z8; +draw if modern: subpath(0.15,2.2) of fi ipart; +end_char; + +beginchar(char11, 5.5tw#, ah#, dh#); "the ff ligature"; +pickup lower_pen; +x2-.8s=x3+.8s=1.6tw+.1s; x1=3.2tw+0.5s; rt.x4=-.25s; +top.y2+.75s=top.y1+s=h; bot.y3=-dh+s; bot.y4=-dh; +x11=x1+2.3tw; x12=x2+2.3tw; x13=x3+2.3tw; x14=x4+2.3tw; +y11=y1; y12=y2+.2s; y13=y3; y14=y4; +path lstem, rstem; +rstem = z11{dir106}..tension1.1..z12..tension2.25.. + z13{dir240}..if not.modern: {dir145}fi z14; +z1'=rstem horintersection h-2th; +lstem = z1'{dir110}..tension1.25..z2..tension 2.25.. + z3{dir240}..if modern: else: {dir145}fi z4; +draw if modern: subpath(0,2.75) of fi rstem; +draw if modern: subpath(0,2.6) of fi lstem; +lft.x5=1/3s; x6=w+.1s; y5=y6=xh-th; +draw z5--z6; +labels(1'); +end_char; + +beginchar(char15, 2sw#+2.5tw#, ah#, 0); "the ch ligature"; +pickup lower_pen; +x2=x3=sw+1.65tw; x2-x1=halfser; top.y2=h; bot.y3=0; +z2-z1=whatever*dir40; +path stem, loop; stem = z2{curl0}..{dir275}z3; +z4 = stem horintersection y1; +draw stem; +if not.modern: ltopserif(z1,z2,z4); fi +x5=1.5sw+1.5tw; top.y5=xh; bot.y8=0; x8=x5+.6tw; +z6 = stem horintersection xh/2; +y7=y6; rt.x7=w-2/3s; +x9=x5+.8s; y9=.66th; +loop = z6{up}..z5..tension.9..z7{down}..z8..z9; +draw if modern: subpath(0,3.2) of fi loop; +% c: +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.33s; +rt x11=2axis-.5s; lft x13=.5s; +x12-dev=x14+dev=axis; +y11-dev=y13+dev=.52xh; +top.y12=xh; bot.y14=0; +rt.x15=sw+.66tw; y15=3/4xh; +path p,q ; p= superellipse(z11,z12,z13,z14,0.73); +q= z15..{left}z12 & subpath(2,6) of p & z14{right}..{up}z6; +draw q; +end_char; + +beginchar(char26, 2sw#+.5tw#, xh#, 0); "the ligature ae"; +pickup lower_pen; +x1=.475w; x2=1tw; x3=.9w; x4=w-1.15tw; rt.x5=w-.25s; +top.y1=h; bot.y2=bot.y4=0; y5=th; y3=h-1.25th; +path p; +p = z1{dir210}..tension2..{right}z2..tension2.2..{up}z3 & z3..tension2.. + {dir220}z1..tension2..{right}z4..{dir40}z5; +draw p; +end_char; + +beginchar(char27, 2sw#+tw#+s#, xh#, 0); "the ligature oe"; +pickup lower_pen; +numeric dev; dev=.5s; +rt x1=w-sw-.5s; lft x3=0+.5s; +x2-dev=x4+dev=w/2-sw/2; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +draw superellipse(z1,z2,z3,z4,0.73); +% e +numeric edev, axis; edev=.5s; axis=w-.5sw-.5tw+.5s; +rt x11=w+.5s; x13=x1; +x12-edev=x14+edev=axis; +y11-edev=y13+edev=.52h; +top.y12=h; bot y14=0; +rt.x15+.25s=rt.x16=w-.25s; y15=3/4h; y16=th; +path p,q ; p= superellipse(z11,z12,z13,z14,0.73); +z17 = (subpath(2,6) of p) horintersection .425h; +q= z17{dir18}..tension1.25.. + z15..{left}z12 & subpath(2,6) of p & z14{right}..{dir36}z16; +draw q; +end_char; + +beginchar(char29, 4.5sw#, ch#, 0); "the ligature AE"; +pickup lower_pen; +% E +lft.x1=2sw; x4=2sw+tw; x2-3s=x3-2s=x5=w-1.25sw; x6=w-.5tw; +y1=y2=.7h; y3=h; y5=0; y6=1.5th; y4=.5h; +path curve; +curve=z1{dir35}..tension.9..z2{dir35}..tension.85..z3{left}..z4..z5{right}..z6; +draw if modern: subpath(1.25,5) else: subpath(1.15,5) fi of curve; +%A +lft.x11=1.1s; x12=1.5tw; +top.y11=bot.y12=0; y13'=h; x13'= 2.5sw; +z13= (subpath(2,3) of curve) horintersection h-th; +y8=.43h; x8=w-1.25tw; +path p; +p=z8{left}..tension if modern: .89 else: .92 fi..z11{dir-55}..z12{dir65} + ..tension1.4..{right}z13'..z13; +if modern: draw subpath(0.05,.6) of p; draw subpath(1.8,4) of p; else: +draw p; fi +end_char; + +beginchar(char30, 5sw#-2tw#, ch#, 0); "the ligature OE"; +pickup lower_pen; +numeric dev; dev=3/4s; +rt.x1=2.5sw-s; lft.x3=s; +x2-dev=x4+dev=1.25sw; +y1-dev=y3+dev=.52h; +top.y2=h; bot.y4=0; +draw superellipse(z1,z2,z3,z4,.74); +% E +lft.x11=2sw; x14=x1; x12-1.75tw=x13-s=x15-s=w-1.25sw; x16=w-.5tw; +y11=y12=.7h; top.y13=h; bot.y15=0; y16=1.5th; y14=y1; +path curve; +curve=z11{dir35}..tension.9..z12{dir35}..tension.85..z13{left}.. + z14{down}..z15{right}..z16; +draw if modern: subpath(1.25,5) else: subpath(1.15,5) fi of curve; +y17=y18; z17=curve horintersection .55h; +x18=w-1.25tw; +draw z17--z18; +end_char; + diff --git a/fonts/vicentino/kraml/vcligtbl.mf b/fonts/vicentino/kraml/vcligtbl.mf new file mode 100644 index 0000000000..4ece8d2f11 --- /dev/null +++ b/fonts/vicentino/kraml/vcligtbl.mf @@ -0,0 +1,38 @@ +% VCLIGTBL - ligature tables & kerning for vicentino fonts +% w. kraml, 1991 + +ku#:=1.2tw#; + +ligtable "f" : "i" =: 12, "f" =: 11, "t" kern -1/8sw#; +ligtable "t" : "t" kern -1/8sw#; +ligtable "c" : "h" =: 15; +ligtable "r" : "." kern -1.1ku#, "," kern -1.1ku#, "a" kern-.4ku#, + "d" kern-.4ku#, "e" kern-.4ku#, "g" kern-.4ku#, + "o" kern-.4ku#, "q" kern-.4ku#; +ligtable "J" : "a" kern -.5ku#, "e" kern -.5ku#, "i" kern-.5ku#, + "o" kern -.5ku#, "u" kern -.5ku#; +ligtable "K" : "a" kern -.5ku#, "e" kern -.5ku#, "i" kern-.25ku#, + "o" kern-.5ku#, "r" kern -.25ku#, "u" kern-.5ku#; +ligtable "L" : "i" kern-.2ku#, "u" kern-.2ku#; +ligtable "P" : "a" kern-.3ku#, "e" kern-.3ku#, "o" kern-.3ku#; +ligtable "T" : "a" kern-ku#, "c" kern-ku#, "d" kern-ku#, "e" kern-ku#, + "f" kern-.75ku#, "g" kern-.5ku#, "i" kern-.25ku#, + "j" kern-.25ku#, "m" kern-ku#, "n" kern-ku#, "o" kern-ku#, + "r" kern-ku#, "s" kern-ku#, "t" kern-.5ku#, "u" kern-ku#, + "v" kern-ku#, "w" kern-ku#, "y" kern-ku#, "z" kern-ku#; +ligtable "V" : "a" kern-.2ku#, "e" kern-.2ku#, "o" kern-.2ku#; +ligtable "W" : "a" kern-.2ku#, "e" kern-.2ku#, "o" kern-.2ku#; +ligtable "Y" : "a" kern-ku#, "c" kern-ku#, "d" kern-.75ku#, "e" kern-ku#, + "f" kern-.5ku#, "g" kern-.5ku#, "m" kern-ku#, "n" kern-ku#, + "o" kern-ku#, "p" kern-ku#, "q" kern-ku#, "r" kern-ku#, + "s" kern-ku#, "t" kern-.5ku#, "u" kern-ku#, "v" kern-ku#, + "w" kern-ku#, "x" kern-ku#, "z" kern-ku#; +ligtable "Z" : "a" kern-ku#, "c" kern-ku#, "d" kern-.75ku#, "e" kern-ku#, + "g" kern+ku#, "i" kern-.5ku#, "n" kern-.5ku#, "o" kern-ku#, + "u" kern-ku#, "v" kern-ku#, "w" kern-ku#, "y" kern-.25ku#; +ligtable "'" : "'" =: 34; +ligtable "`" : "`" =: 92; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + diff --git a/fonts/vicentino/kraml/vclower.mf b/fonts/vicentino/kraml/vclower.mf new file mode 100644 index 0000000000..4816a985b2 --- /dev/null +++ b/fonts/vicentino/kraml/vclower.mf @@ -0,0 +1,367 @@ +% VCLOWER - lower characters for vicentino font +% w. kraml, 1991 + +% lower case: +slant := lowerslant; +currenttransform := identity slanted slant; + +beginchar("a", 2tw#+sw#, xh#, 0); "the letter a"; +pickup lower_pen; +x1=x2=x7=w-tw; top.y1=top.y5=h; +rt x3=w; y3=th; bot y6=bot y2=0; y7=3/4h; +x5=1.75tw; x6=1.5tw; +path rightstem; rightstem = z1..tension6.7 ..z2..tension2..{dir40}z3; +z4 = rightstem horintersection .7h; +draw if modern: subpath(0,1.2) of fi rightstem; +draw z4..tension3..z5..tension2.5..z6{right}..tension1.75..{up}z4; +end_char; + +beginchar("b", 2tw#+sw#, ah#, 0); "the letter b"; +pickup lower_pen; +x2=x3=tw+.25s; x2-x1=halfser; top.y2=h; bot.y3=1.667th; +z2-z1=whatever*dir40; +path stem, loop; stem = z2{curl0}..{dir275}z3; +z4 = stem horintersection y1; +draw stem; +if modern: else: ltopserif(z1,z2,z4); fi +x5=x8=w/2; top.y5=xh; bot.y8=0; +z6 = stem horintersection xh/2; +y7=y6; rt.x7=w-2/3s; +loop = z6{up}..z5..tension.9..z7..z8..{dir95}z3; +draw loop; +end_char; + +beginchar("c", sw#+tw#, xh#, 0); "the letter c"; +pickup lower_pen; +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.5s; +rt x1=2axis-.5s; lft x3=.5s; +x2-dev=x4+dev=axis; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +rt.x5+.25s=rt.x6=w-.25s; y5=3/4h; y6=th; +path p,q ; p= superellipse(z1,z2,z3,z4,0.73); +q= z5..{left}z2 & subpath(2,6) of p & z4{right}..{dir36}z6; +draw q; +end_char; + +beginchar("d", 2tw#+sw#, ah#, 0); "the letter d"; +pickup lower_pen; +x1-.5s=x2=x7=w-tw; top.y1=h; top.y5=xh; +rt x3=w; y3=th; bot y6=bot y2=0; +x5=1.75tw; x6=1.55tw; +path rightstem; rightstem = z1..tension6.7 ..z2..tension2..{dir40}z3; +z4 = rightstem horintersection .8xh; +draw if modern: subpath(0,1.2) of fi rightstem; +x1-x8=halfser; z1-z8=whatever*dir40; +z9 = rightstem horintersection y8; +if modern: else: ltopserif(z8,z1,z9); fi +draw z4..tension2..z5..tension2..z6{right}..tension1.75..{up}z4; +end_char; + +beginchar("e", sw#+tw#, xh#, 0); "the letter e"; +pickup lower_pen; +numeric dev, axis; dev=.5s; axis=.5sw+.5tw+.5s; +rt x1=2axis-.5s; lft x3=.5s; +x2-dev=x4+dev=axis; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +rt.x5+.25s=rt.x6=w-.25s; y5=3/4h; y6=th; +path p,q ; p= superellipse(z1,z2,z3,z4,0.73); +z7 = (subpath(2,6) of p) horintersection .425h; +q= z7{dir18}..tension1.25.. + z5..{left}z2 & subpath(2,6) of p & z4{right}..{dir36}z6; +draw q; +end_char; + +beginchar("f", 3.2tw#, ah#, dh#); "the letter f"; +pickup lower_pen; +x2-.8s=x3+.8s=w/2+.1s; x1=w+0.5s; rt.x4=-.25s; +top.y2+.75s=top.y1+s=h; bot.y3=-dh+s; bot.y4=-dh; +y5=y6=xh-th; lft.x5=1/3s; x6=w+.1s; +path stem; +stem = z1{dir105}..tension1.2..z2..tension 2.25.. + z3{dir240}..if modern: else: {dir145}fi z4; +draw if modern: subpath(0,2.6) of fi stem; +draw z5--z6; +end_char; + +beginchar("g", 2tw#+sw#, xh#, dh#); "the letter g"; +pickup lower_pen; +x1=x2=w-.8tw; top.y1=top.y5=top.y1'=h; +rt.x1'=w-.25s; +bot y6=bot y2=0; +x5=1.75tw; x6=1.5tw; lft.x9=if modern:s else: -.2s fi; +x8= if modern: w-.78tw else: w-1.5s fi; +bot.y8-s = bot.y9 = if modern: -dh+1.5s else: -dh+s fi; +path rightstem, rightstemtrial; +rightstemtrial = z1'{dir205}..tension2.1..z2..tension1.8..z8.. + if modern: tension1.1 else: tension1.56 fi + ..z9..{dir36}z6; +z4 = rightstemtrial horintersection 3/4h; +top.z6'= (subpath(2,4) of rightstemtrial) horintersection -.2s; +z6''=z6'-(.33s,0); +rightstem=z1'{dir205}..tension2.1..z2..tension1.8..z8.. + if modern: tension1.1 else: tension1.56 fi + ..z9..{dir36}z6''; +draw subpath(0, if modern:3.275 else: 4 fi) of rightstem; +draw z4..tension3..z5..tension2.5..z6{right}..tension1.75..{dir80}z4; +end_char; + +beginchar("h", 2tw#+sw#, ah#, 0); "the letter h"; +pickup lower_pen; +x2=x3=tw+.25s; x2-x1=halfser; top.y2=h; bot.y3=0; +z2-z1=whatever*dir40; +path stem, loop; stem = z2{curl0}..{dir275}z3; +z4 = stem horintersection y1; +draw stem; +if not.modern: ltopserif(z1,z2,z4); fi +x5=w/2; top.y5=xh; bot.y8=0; x8=x5+.6tw; +z6 = stem horintersection xh/2; +y7=y6; rt.x7=w-2/3s; +x9=x5+.8s; y9=.66th; +loop = z6{up}..z5..tension.9..z7{down}..z8..z9; +draw if modern: subpath(0,3.2) of fi loop; +end_char; + +beginchar("i", 2tw#+.5s#, xh#, 0); "i"; +pickup lower_pen; +x5=x2=x3=w/2; lft.x1=.1s; rt.x4=w-.1s; y1=h-th; top.y2=h; bot y3=0; y4=th; +y5=.5[xh,ah]; +path stem; +stem = z1{dir40}..tension2..z2..tension5..z3..tension2.. + {dir40}z4; +draw if modern: subpath(0.8,2.2) of fi stem; +dot z5; +end_char; + +beginchar("j", 2tw#+.5s#, xh#, dh#); "the letter j"; +pickup lower_pen; +x5=x2=w/2; lft x1=0; x4=w/2-.1s; y1=h-th; top.y2=h; bot.y6=-dh+.33th; +y5=.5[xh,ah]; bot.y4=-dh+1.1th; x6=0.1s; +path stem; +stem = z1{dir40}..tension2..z2..tension4.5.. + z4..tension.825..{dir133.5}z6; +draw if modern: subpath(0.8, 2.72) of fi stem; +dot z5; +end_char; + +beginchar("k", 2tw#+sw#, ah#, 0); "the letter k"; +pickup lower_pen; +x2=x3=tw; x2-x1=halfser; top.y2=h; bot.y3=0; +z2-z1=whatever*dir40; +path stem, loop; stem = z2{curl0}..{dir275}z3; +z4 = stem horintersection y1; +draw stem; +if modern: else: ltopserif(z1,z2,z4); fi +x5=w/2 + .5s; top.y5=xh; +x5'=w-tw; y5'= if modern: .8xh else: .7xh fi; +z6 = stem horintersection 0.45xh; +loop = z6{up}..z5..z5' + if modern:{dir220} else:{dir245} fi + ..tension.825..{dir275}z3; +draw if modern: subpath(1.5,3) of fi loop; +z7 = loop horintersection 7/16xh; +bot.y8=0; top.y9=th; rt.x9=w; lft.x8=w-tw; +draw z7..tension1.75..z8..z9; +end_char; + +beginchar("l", 2tw#+.5s#, ah#, 0); "the letter l"; +pickup lower_pen; +x2=x3=w/2; x2-x1=halfser; rt x4=w-.1s; top y2=h; bot y3=0; y4=th; +z2-z1=whatever*dir40; +path stem; +stem = z2{curl0}..tension7..z3..tension2..{dir40}z4; +draw if modern: subpath(0,1.2) of fi stem; +% top serif +z5 = stem horintersection y1; +if modern: else: ltopserif(z1,z2,z5); fi +end_char; + +beginchar("m", 2tw#+2sw#, xh#, 0); "the letter m"; +pickup lower_pen; +x2=x3=tw; x4=x5=tw+sw; x6=x7=w-tw; lft.x1=0.1s; rt.x8=w-.1s; +top.y2=top.y4=top.y6=h; bot.y3=bot.y5=bot.y7=0; +y1=h-th; y8=th; +path lstem, mstem, rstem; +lstem=z1{dir40}..tension2..z2..tension7..{curl0}z3; +mstem=z3{dir86}..tension1.9..z4{dir-30}..tension6..{curl0}z5; +rstem=z5{dir86}..tension1.9..z6{dir-30}..tension6..z7..tension2..{dir40}z8; +draw if modern: subpath(0.8,2) of fi lstem; +draw mstem; +draw if modern: subpath(0,2.2) of fi rstem; +end_char; + +beginchar("n", 2tw#+sw#, xh#, 0); "the letter n"; +pickup lower_pen; +x2=x3=tw; x4=x5=w-tw; lft.x1=0.1s; rt.x6=w-.1s; +top.y2=top.y4=h; bot.y3=bot.y5=0; +y1=h-th; y6=th; +path lstem, rstem; +lstem = z1{dir40}..tension2..z2..tension7..{curl0}z3; +draw if modern: subpath(.8,2) of fi lstem; +rstem = z3{dir86}..tension1.9..z4{dir-30}..tension6..z5..tension2..{dir40}z6; +draw if modern: subpath(0,2.2) of fi rstem; +end_char; + +beginchar("o", sw#+tw#+s#, xh#, 0); "the letter o"; +pickup lower_pen; +numeric dev; dev=.5s; +rt x1=w-.5s; lft x3=0+.5s; +x2-dev=x4+dev=w/2; +y1-dev=y3+dev=.52h; +top.y2=h; bot y4=0; +draw superellipse(z1,z2,z3,z4,0.73); +end_char; + +beginchar("p", 2tw#+sw#, xh#, dh#); "the letter p"; +pickup lower_pen; +x1=x2=tw; y1=h+s; bot.y2=-dh; +lft.x3=0; y3=h-th; top.y4=h; x4=x5=.52w; bot.y5=0; +rt.x4'=w-.5s; y4'=.525h; +path stem, bowl; +stem = z1{curl.0}..tension7..{dir-15}z2; +z6 = stem horintersection 1.4th; +draw if modern: subpath(0,.95) of fi stem; +bowl=z3{dir35}...z4{right}..z4'{down}..z5{left}..{dir100}z6; +draw if modern: subpath(0.15,4) of fi bowl; +labels(2', 4'); +end_char; + +beginchar("q", 2tw#+sw#, xh#, dh#); "the letter q"; +pickup lower_pen; +x1=x2=w-tw; top.y1+.25th=top.y5=h; +bot y6=0; bot.y2=-dh; +x5=1.5tw; x6=1.25tw; +path rightstem; rightstem = z1{curl.0}..tension7..{dir-15}z2; +draw if modern: subpath(0,.95) of fi rightstem; +draw z1..tension2.1..z5..tension2.2..z6{right}..tension1.7..{up}z1; +end_char; + +beginchar("r", tw#+sw#+.5s#, xh#, 0); "r"; +pickup lower_pen; +x2=x3=tw; bot y3=0; top.y2=top.y5=h; +lft x1=0.1s; y1=h-th; y4=h-1.25th; rt.x4=w-.15s; x5=w-.7tw; +path lstem, rstem; +lstem=z1{dir40}..tension2..z2..tension7..{curl0}z3; +rstem=z3{dir86}..tension2..z5{dir-30}..tension1.1..z4; +draw if modern: subpath(0.8,2) of fi lstem; +draw rstem; +end_char; + +beginchar("s", tw#+sw#, xh#, 0); "the letter s"; +pickup lower_pen; +x1=x2=w/2; top.y1=h; bot.y2=0; +x3=.75tw; rt.x4=w-.5s; y3=.76h; y4=.3h; +x5=w-.7tw; lft.x6=.6s; y5=y3+.55th; y6=y4-3/4th; +path trial,p; +trial = z3{down}..tension1.1..{down}z4; +z7 = trial intersectionpoint (z6{up}..{up}z5); +p = z7..tension1.3..z5..z1{left}..z3{down}..tension1.1.. +z4{down}..z2{left}..z6..tension2.5..cycle; +draw subpath if modern:(.77,6.11) else: (.75,6.23) fi of p; +end_char; + +beginchar("t", 2.5tw#, xh#, 0); "the letter t"; +pickup lower_pen; +x1=x2=w/2; rt.x3=w-.1s; y1=h+s; bot.y2=0; y3=th; +y4=y5=xh-th; lft.x4=0.25s; x5=x3; +path stem; +stem=z1{curl0}..tension7..z2..tension2..{dir40}z3; +draw if modern: subpath(0,1.6) of fi stem; +draw z4--z5; +end_char; + +beginchar("u", 2tw#+sw#, xh#, 0); "the letter u"; +pickup lower_pen; +x2=x3-.5s=tw; x4=x5=w-tw; lft.x1=0.1s; rt.x6=w-.1s; +top.y2=top.y4=h; bot.y3=bot.y5=0; +y1=h-th; y6=th; +path lstem, rstem; +lstem=z1{dir40}..tension1.5..z2..tension5..z3{dir-30}..tension1.9..{dir86}z4; +rstem=z4{curl0}..tension7..z5..tension2..{dir40}z6; +draw if modern: subpath(.8,3) of fi lstem; +draw if modern: subpath(0,1.2) of fi rstem; +end_char; + +beginchar("v", 2tw#+sw#, xh#, 0); "the letter v"; +pickup lower_pen; +x2=tw; x4-x5=2/3tw; +lft.x1=0; rt.x4=w-2/3tw; x3=.45[x1,x4]; +top.y2=top.y4=h; y1=y5=h-th; bot.y3=0; +path stem; +stem = z1..tension2..z2{right}..tension6.7.. + z3{right}..tension2..z4{left}..tension1.5..z5; +draw if modern: subpath(.8,3.2) of fi stem; +end_char; + +beginchar("w", 3tw#+2sw#-2s#, xh#, 0); "the letter w"; +pickup lower_pen; +x2=tw; x7-x8=2/3tw; +lft.x1=0; rt.x7=w-2/3tw; x3=.45[x1,x4]; +x7-x4=x6-x3=x4-x2; +top.y2=top.y4=top.y7=h; y1=y8=h-th; bot.y3=bot.y6=0; +path lstem, rstem; +lstem=z1..tension2..z2{right}..tension6.7.. + z3{right}..tension2.2..z4{dir130}; +rstem=z4{right}..tension6.7..z6{right}..tension2..z7{left}..tension1.5..z8; +draw if modern: subpath(.8,3) of fi lstem; +draw if modern: subpath(0,2.2) of fi rstem; +end_char; + +beginchar("x", 2tw#+sw#+.5s#, xh#, 0); "the letter x"; +pickup lower_pen; +lft.x1-.3s=lft.x5=0; x2=x6+.75s=tw+.1s; +x7-.5s=w-tw; rt.x8=w-.5s; rt.x4=w-.1s; x3=w-tw; +top.y2=top.y7=h; y1=y8=h-th; +y5=th; y4=th; 0=bot.y6=bot.y3; +path nwso, swno; +nwso=z1{dir42}..tension1.75..z2..tension3..{right}z3..tension2..z4; +swno=z5..tension1.7..z6..tension3.3..z7..tension1.7..z8; +draw if modern: subpath(.8,2.2) of fi nwso; +draw if modern: subpath(.8,2.2) of fi swno; +end_char; + +beginchar("y", 2tw#+sw#, xh#, dh#); "the letter y"; +pickup lower_pen; +lft.x1=0; rt.x4=w-.4tw; x2=.8tw; +lft.x6=0; x5=x6+.75s; +top.y2=h; top.y4=h+.17s; y1=h-th; bot.y5=-dh; +y6=-dh+th; +path rstem, lstem; +rstem = z4{dir-35}..tension3.55..z5{dir155}..tension1.2..z6; +z3=rstem horintersection -.55s; +lstem = z1{dir42.5}..tension1.75..z2..tension3.4..z3; +draw if modern: subpath(0,1.2) of fi rstem; +draw if modern: subpath(.8,2) of fi lstem; +end_char; + +beginchar("z", 2tw#+sw#-.5s#, xh#, 0); "the letter z"; +pickup lower_pen; +lft.x1=lft.x4=0.175tw; rt.x3+.275tw=x6+.5tw=w; +x2=1.1tw; x5=w-.5tw; +top.y2=top.y3=h; y1=h-1.225th; bot.y4=bot.y5-1/3s=0; +y6=2th; +path stem; +stem=z1{dir38}...z2.. + if modern: tension 1.2 else: tension.9 fi .. + {dir40}z3 & z3..tension6.. {dir265}z4 & + z4{dir40}..tension1.2..z5{dir46}..z6; +draw if modern: subpath(.25,4.5) of fi stem; +end_char; + +beginchar(char 25, 2.1tw# +sw#, ah#, dh#); "the german ss ligature"; +pickup lower_pen; +x2-.8s=x3+.8s=1.05tw; x1=w-.85s; rt.x4=-.2s; +top.y2=h-th; top.y1=h-1.6th; bot.y3=-dh+s; bot.y4=-dh; +path lpart, rpart; +lpart=z1{dir105}..tension1.2..z2..tension2.25.. + z3{dir240}..if not.modern: {dir145}fi z4; +lft.x7=.8sw; rt.x6=w-0.75s; +lft.x5=sw; x6'=.5[x6,x7]; bot.y6'=0; +y5=xh-th; y6=y7=1.4th; +rpart=z1{dir285}..z5%{down} +..tension1.25..z6..z6'..{dir120}z7; +draw if modern: subpath(0,2.6) of fi lpart; +draw if modern: subpath(0,3.75) of fi rpart; +end_char; + diff --git a/fonts/vicentino/kraml/vcm.mf b/fonts/vicentino/kraml/vcm.mf new file mode 100644 index 0000000000..3368aadbe0 --- /dev/null +++ b/fonts/vicentino/kraml/vcm.mf @@ -0,0 +1,17 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcm10.mf b/fonts/vicentino/kraml/vcm10.mf new file mode 100644 index 0000000000..2e9e3cd8b2 --- /dev/null +++ b/fonts/vicentino/kraml/vcm10.mf @@ -0,0 +1,15 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcm14.mf b/fonts/vicentino/kraml/vcm14.mf new file mode 100644 index 0000000000..e2c359e268 --- /dev/null +++ b/fonts/vicentino/kraml/vcm14.mf @@ -0,0 +1,15 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := false; + +% metrics +size#:=14pt#; % design size + +input vcdriver; +end; diff --git a/fonts/vicentino/kraml/vcma.mf b/fonts/vicentino/kraml/vcma.mf new file mode 100644 index 0000000000..ebf9fbed28 --- /dev/null +++ b/fonts/vicentino/kraml/vcma.mf @@ -0,0 +1,17 @@ +% VCMALT - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcma10.mf b/fonts/vicentino/kraml/vcma10.mf new file mode 100644 index 0000000000..389b7ab7f4 --- /dev/null +++ b/fonts/vicentino/kraml/vcma10.mf @@ -0,0 +1,16 @@ +% VCMALT - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcma14.mf b/fonts/vicentino/kraml/vcma14.mf new file mode 100644 index 0000000000..034412cc75 --- /dev/null +++ b/fonts/vicentino/kraml/vcma14.mf @@ -0,0 +1,16 @@ +% VCMALT - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := false; + +% metrics +size#:=14pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcmb.mf b/fonts/vicentino/kraml/vcmb.mf new file mode 100644 index 0000000000..817f80ad1c --- /dev/null +++ b/fonts/vicentino/kraml/vcmb.mf @@ -0,0 +1,17 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcmb10.mf b/fonts/vicentino/kraml/vcmb10.mf new file mode 100644 index 0000000000..d0e39f4652 --- /dev/null +++ b/fonts/vicentino/kraml/vcmb10.mf @@ -0,0 +1,16 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcmb11.mf b/fonts/vicentino/kraml/vcmb11.mf new file mode 100644 index 0000000000..e69e5b8768 --- /dev/null +++ b/fonts/vicentino/kraml/vcmb11.mf @@ -0,0 +1,16 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=11pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcmb12.mf b/fonts/vicentino/kraml/vcmb12.mf new file mode 100644 index 0000000000..69d5bda277 --- /dev/null +++ b/fonts/vicentino/kraml/vcmb12.mf @@ -0,0 +1,16 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=12pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcmb14.mf b/fonts/vicentino/kraml/vcmb14.mf new file mode 100644 index 0000000000..655598864c --- /dev/null +++ b/fonts/vicentino/kraml/vcmb14.mf @@ -0,0 +1,16 @@ +% VCM - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=14pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcmba.mf b/fonts/vicentino/kraml/vcmba.mf new file mode 100644 index 0000000000..aba93b6320 --- /dev/null +++ b/fonts/vicentino/kraml/vcmba.mf @@ -0,0 +1,17 @@ +% VCMLATB - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcmba10.mf b/fonts/vicentino/kraml/vcmba10.mf new file mode 100644 index 0000000000..58273a2ec6 --- /dev/null +++ b/fonts/vicentino/kraml/vcmba10.mf @@ -0,0 +1,16 @@ +% VCMLATB - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcmba11.mf b/fonts/vicentino/kraml/vcmba11.mf new file mode 100644 index 0000000000..a55a11f1b5 --- /dev/null +++ b/fonts/vicentino/kraml/vcmba11.mf @@ -0,0 +1,16 @@ +% VCMLATB - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=11pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcmba12.mf b/fonts/vicentino/kraml/vcmba12.mf new file mode 100644 index 0000000000..7d20bfbab2 --- /dev/null +++ b/fonts/vicentino/kraml/vcmba12.mf @@ -0,0 +1,16 @@ +% VCMLATB - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=12pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcmba14.mf b/fonts/vicentino/kraml/vcmba14.mf new file mode 100644 index 0000000000..aff7138a3c --- /dev/null +++ b/fonts/vicentino/kraml/vcmba14.mf @@ -0,0 +1,16 @@ +% VCMLATB - Vicentino Modern (moderne cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := false; + bold := true; + +% metrics +size#:=14pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcpunct.mf b/fonts/vicentino/kraml/vcpunct.mf new file mode 100644 index 0000000000..8b4eb551c4 --- /dev/null +++ b/fonts/vicentino/kraml/vcpunct.mf @@ -0,0 +1,324 @@ +% VCPUNCT - punctuation characters for vicentino fonts +% w. kraml, 1991 + +%% punctuation marks follow here: +slant:= upperslant; +currenttransform := identity slanted slant; + +beginchar(char 0, 2sw#+s#, ch#, dh#); "the paragraph (or alinea) sign"; +pickup lower_pen; +x2=x4=.66w; top.y2=h; y6=-dh+th; +bot.y4=-dh+2th; lft.x6=.25s; +path stem; +stem = z2{dir-30}..tension11.. + z4{dir255}..tension1.1..z6; +rt.x1=w-.33s; top.y1=h; lft.x3=.1s; +z5=stem horintersection 2th; y3=.5[y2,y5]; +x7=x3+tw; y7=y3; z9=z5+(tw,0); +path p; p=z2{left}..{down}z3..{right}z5 & z5{dir170}..{up}z7..{dir10}z2..cycle; +draw stem; filldraw p; draw z1--z2; draw z5--z9; +end_char; + +beginchar(char 1, 2sw#-1.25s#, ch#, dh#); "the section sign"; +pickup lower_pen; +x2=x7=w/2; x3=x8=w-x1=w-x6=tw; lft.x5=w-rt.x4=.4s; +top.y2=h; bot.y7=-dh; y5=y4=.5[y2,y7]; y1=y3=6/7[y7,y2]; +y6=y8=1/7[y7,y2]; +path tra, trb, upp, lop; +tra= z1{up}..{left}z2..{down}z3..{down}z4; +trb= z8{down}..{right}z7..{up}z6..{up}z5; +z5'=tra horintersection 5/7[y7,y2]; +z4'=trb horintersection 2/7[y7,y2]; +upp= z1{dir60}..{left}z2..z3..z5'..z4...z4'; +lop= z8{dir240}..{right}z7..z6..z4'..z5...z5'; +draw upp; draw lop; +end_char; + +beginchar(".", 2tw#+s#, th#, 0); "dot"; +pickup lower_pen; +bot.z1 = (w/2,0); +dot.z1; +end_char; + +beginchar(",", 2tw#+1.5s#, th#, th#); "comma"; +pickup lower_pen; +bot.z1 = (w/2+.5s,0); +comma z1; +end_char; + +beginchar(":", 2tw#+s#, xh#, 0); "colon"; +pickup lower_pen; +bot.z1 = (w/2,0); z2=(w/2, 3/4xh); +dot z1; dot z2; +end_char; + +beginchar(";", 2tw#+1.5s#, xh#, 0); "semicolon"; +pickup lower_pen; +bot.z1 = (w/2+.5s,0); z2=(w/2, 3/4xh); +comma z1; dot z2; +end_char; + +beginchar(char 38, 2sw#+2tw#, ch#, 0); "the ampersand \&"; +pickup lower_pen; +x1-.66s=x2+s=x3=x5=.42w; x4=w-2.9tw; rt.x6=w-.5s; +top.y1=h-.75s; y2=.6h; y4=.525h; y6=.7[y4,h]; bot.y3=0; +y4-y5+1.33th=y6-y4; +draw z1{dir130}..{right}z2 & + z2{left}..{right}z3..tension1.25..{dir215}z4; +path tpart; +tpart=z5 if modern: else: {dir105} fi + ..z4{dir32}..tension1.25.. if modern: {dir100} else: {dir145}fi z6; +draw if modern: subpath(.2,1.92) of fi tpart; +end_char; + +beginchar("$", 2tw#+sw#, ch#, 0); "the $ (dollar sign)"; +pickup lower_pen; +x1=w-1.5s; x3=w-s; x2=tw; x4=.5s; +top.y1=h-th; bot.y4=s; +y2=2/3h; y3=1/3h; +y1'=y1-s; x1'=x1-.25s; +x1''=x4''=w/2; top.y1''=h; bot.y4''=0; +path sstem; +sstem=z1'{dir10}..{up}z1&z1..z1''{left}..z2..tension.8..z3..z4''{left}..z4; +x5=x6=w/2+.5s; bot.y5=h+s; top.y6=-s; draw z5{dir267}..z6; +draw if modern: subpath(.8,6) of fi sstem; +labels(1',1'',4''); +end_char; + +beginchar("!", 2tw#+s#, ch#, 0); "exclamation !"; +pickup lower_pen; +top.y1=top.y1'=top.y2=h; x1=x3=w/2; lft.x2=x1; y3=1/2xh; x1'=.5[x1,x2]; +bot.z4=(w/2,0); +draw z1{dir268}..z3; draw z1---z1'{dir263}..z3; +dot z4; +end_char; + +beginchar("?", 3tw#+s#, ch#, 0); "question mark?"; +pickup lower_pen; +x1+tw=x2=x3=x4=1.5tw; bot.y4=0; +y3=1/2xh; y2=y3+2th; y1=h-th; +draw z1{dir40}..tension.84..{dir215}z2...z3; +dot z4; +end_char; + +beginchar("(", 2tw#+s#, ah#, dh#); "opening parentheses ("; +pickup lower_pen; +top.rt.z1=(w-.5s,h); bot.rt.z3=(w-.5s,-dh); +lft.z2=(s,.53[y1,y3]); +draw z1{curl6}..z2..{curl6}z3; +end_char; + +beginchar(")", 2tw#+s#, ah#, dh#); "closing parentheses )"; +pickup lower_pen; +top.lft.z1=(.5s,h); bot.lft.z3=(.5s,-dh); +rt.z2=(w-s,.53[y1,y3]); +draw z1{curl6}..z2..{curl6}z3; +end_char; + +beginchar("[", 2tw#+s#, ah#, dh#); "opening bracket ["; +pickup lower_pen; +top.rt.z1=(w-.5s,h); bot.rt.z3=(w-.5s,-dh); +top.lft.z1'=(s,h); bot.lft.z3'=(s,-dh); +draw z1---z1'{dir-80}..tension1.5..{dir-100}z3'---z3; +end_char; + +beginchar("]", 2tw#+s#, ah#, dh#); "closing bracket ]"; +pickup lower_pen; +top.lft.z1=(.5s,h); bot.lft.z3=(.5s,-dh); +top.rt.z1'=(w-s,h); bot.rt.z3'=(w-s,-dh); +draw z1---z1'{dir-100}..tension1.5..{dir-80}z3'---z3; +end_char; + +beginchar("/", 2tw#, ah#, dh#); "the virgule (/)"; +pickup lower_pen; +top.rt.z1=(w-.5s,h); bot.lft.z2=(.5s,-dh); +draw z1{dir-40}..tension8..{dir-40}z2; +end_char; + +beginchar(char 35, 2sw#+.75s#, ch#, 0); "number sign"; +pickup lower_pen; +top.lft.z1=(2tw,h); +bot.lft.z2=(.5tw,0); +top.rt.z3=(w-.5tw,h); +bot.rt.z4=(w-2tw,0); +draw z1--z2; draw z3--z4; +lft.x5=lft.x7=0; rt.x6=rt.x8=w; +y5=y6=.62h; y7=y8=.38h; +draw z5--z6; draw z7--z8; +end_char; + +beginchar(char 37, 2sw#+.25s#, ch#, 0); "percent sign"; +pickup lower_pen; +top.z1=(1.3tw,h-.7th); bot.z2=(1.3tw,h-4.6th); +draw z1{left}..z2{right}..cycle; +top.z3=(w-1.3tw,3.9th); bot.z4=(w-1.3tw,0); +draw z3{left}..z4{right}..cycle; +top.rt.z5=(w-.5s,h); bot.lft.z6=(.5s,-1.5th); +draw z2{right}..{z5-z6}z5 & z5--z6; +end_char; + +beginchar("+", 1/3size#, xh#, 0); "plus"; +pickup lower_pen; +numeric axis; +axis=.5[-dh,ah]; +z1 = (s,axis); z2 = (w-s,axis); +draw z1--z2; +z3=(w/2,axis+(x2-x1)/2); z4=(w/2,axis-(x2-x1)/2); +draw z3--z4; +end_char; + +beginchar(char 123, 1/3size#, xh#, 0); "minus"; +pickup lower_pen; +numeric axis; +axis=.5[-dh,ah]; +z1 = (s,axis); z2 = (w-s,axis); +draw z1..z2; +end_char; + +beginchar(char 42, .4size#, xh#, 0); "asterisk"; +pickup lower_pen; +%pickup cap_serif_pen; +z0=(w/2,xh); +z1 = (s,xh); z2 = (w-s,xh); +draw z1..z2; +z3 = z1 rotatedaround (z0, 60); +z5 = z1 rotatedaround (z0, 120); +z4 = z2 rotatedaround (z0, 60); +z6 = z2 rotatedaround (z0, 120); +draw z3..z4; draw z5..z6; +end_char; + +beginchar("-", 2tw#+s#, xh#, 0); "hyphen"; +pickup lower_pen; +z1 = (.75s,.4h); z2 = (w-.75s,.6h); +draw z1{dir55}.. {dir-5}.5[z1,z2]{curl0}..z2{dir55}; +end_char; + +beginchar(char 124, 8/10size#, xh#, 0); "em rule"; +pickup lower_pen; +numeric axis; +axis=.5[-dh,ah]; +z1 = (2.75s,axis); z2 = (w-2.75s,axis); +z1'= (s,axis-s); z2'= (w-s, axis+s); +draw z1'{dir35}..z1{right}..{right}z2..{dir35}z2'; +end_char; + + +% quote characters and trema have lowercase slant +% some others as well +slant:=lowerslant; +currenttransform := identity slanted slant; + + +beginchar(char 39, 3.5tw#, ch#, 0); "punctuation ' "; +pickup lower_pen; +z1=(1.75tw,h); +comma z1; +end_char; + +beginchar(char 34, 5tw#, ch#, 0); "punctuation '' "; +pickup lower_pen; +z1=(1.75tw,h); z2=(w-1.75tw,h); +comma z1; comma z2; +end_char; + +beginchar(char96, 3.5tw#, ch#, 0); "punctuation ` "; +pickup lower_pen; +z1=(1.75tw,h-s); +revcomma z1; +end_char; + +beginchar(char 92, 5tw#, ch#, 0); "punctuation `` "; +pickup lower_pen; +z1=(1.75tw,h-s); z2=(w-1.5tw,h-s); +revcomma z1; revcomma z2; +end_char; + +beginchar(char 127, 5/18size#, 17/30 size#, 0); "trema (umlaut)"; +pickup lower_pen; +top.lft.z1 = (s,h-s); top.rt.z2=(w,h-s); +dot z1; dot z2; +end_char; + +beginchar(char 95, 3/18size#, 17/30 size#, 0); "dot accent"; +pickup lower_pen; +top.z1 = (w/2,h-.2s); +dot z1; +end_char; + +beginchar(char 16, 2tw#+.5s#, xh#, 0); "dotless i"; +pickup lower_pen; +x2=x3=w/2; lft.x1=.1s; rt.x4=w-.1s; y1=h-th; top.y2=h; bot y3=0; y4=th; +path stem; +stem = z1{dir40}..tension2..z2..tension5..z3..tension2.. + {dir40}z4; +draw if modern: subpath(0.8,2.2) of fi stem; +end_char; + +beginchar(char 17, 2tw#+.5s#, xh#, dh#); "dotless j"; +pickup lower_pen; +x2=w/2; lft x1=0; x4=w/2-.1s; y1=h-th; top.y2=h; bot.y6=-dh+.33th; +bot.y4=-dh+1.1th; x6=.1s; +path stem; +stem = z1{dir40}..tension2..z2..tension4.5.. + z4..tension.825..{dir133.5}z6; +draw if modern: subpath(0.8, 2.72) of fi stem; +end_char; + +beginchar(char 64, 4tw#+sw#, ch#, 0); "the at-sign"; +pickup lower_pen; +x1=x2=w-2tw; y1=y5=xh; +rt. x3=w-tw; y3=3th; bot.y6=bot.y2=2th; +lft x5=2.5tw; lft x6=2.25tw; +x7=x9=w/2; y7=xh+2.9th; y9=0; lft.x8=.33s; y8=h/2; rt.x10=w-.25s; y10=1.3th; +path rightstem; rightstem = z1..tension6.7 ..z2..tension2..{dir35}z3 + ..{left}z7..{down}z8..{right}z9..{dir36}z10; +z4 = rightstem horintersection .7xh; +draw if modern: subpath(0,5.92) of fi rightstem; +draw z4..tension3..z5..tension2.5..z6{right}..tension1.75..{up}z4; +end_char; + +beginchar(char 20, 6/18size#, 17/30size#, 0); "hatchek"; +pickup lower_pen; +lft.z1=(.5s,h+1.25s); rt.z3=(w-.25s,h+1.25s); z2=(.55[x1,x3],h-.5s); +draw z1{right}..tension1.5..z2 & z2..tension1.5..{right}z3; +end_char; + +beginchar(char 21, 6/18size#, 17/30size#, 0); "breve accent"; +pickup lower_pen; +lft.z1=(.5s,h+1.25s); rt.z3=(w-.25s,h+1.25s); +draw z1{down}..{up}z3; +end_char; + +beginchar(char 22, 6/18size#, 17/30size#, 0); "macron"; +pickup lower_pen; +lft.z1=(.5s,h); rt.z3=(w-.25s,h); +draw z1--z3; +end_char; + +beginchar(char 23, 1.5sw#, 17/30size#, 0); "circle accent"; +pickup lower_pen; +rt.z1=(2.5s,h+s); lft.z3=(w-2.4s,h+s); +draw z1{down}..{up}z3..cycle; +end_char; + +beginchar(char 24, 5/18size#, 0, 2/3dh#); "cedilla"; +pickup lower_pen; +z1=(w/2, 0); z2=(w/2, -1/4dh); z3=(w/3, -2/3dh); +draw z1---z2{right}..tension.8..{left}z3; +end_char; + +beginchar("^", 6/18size#, 17/30size#, 0); "circumflex"; +pickup lower_pen; +top.lft.z1=(.5s,h); top.rt.z3=(w-.25s,h); z2=(.55[x1,x3],h+1.35s); +draw z1{right}..tension1.5..z2 & z2..tension1.5..{right}z3; +end_char; + +beginchar("~", 6/18size#, 17/30size#, 0); "tilde"; +pickup lower_pen; +top.lft.z1=(.33s,h); top.rt.z4=(w,h+.85s); +x2=1/3[x1,x4]; x3=2/3[x1,x4]; +y2=y4; y1=y3; +draw z1{dir36}..z2..z3..{dir36}z4; +end_char; + diff --git a/fonts/vicentino/kraml/vcsmdig.mf b/fonts/vicentino/kraml/vcsmdig.mf new file mode 100644 index 0000000000..063244bb2f --- /dev/null +++ b/fonts/vicentino/kraml/vcsmdig.mf @@ -0,0 +1,99 @@ +% VCSMDIG - "small" (mediaeval style) digits for vicentino font +% w. kraml, 1991 + +% the figures start here +% small (nautic or old-style) figures +dig_w := 3/2sw#; +slant := upperslant; +currenttransform := identity slanted slant; + +beginchar("1", dig_w, digh#, 0); "the figure 1"; +pickup lower_pen; +top.lft.z1=(w/2,h); bot.lft.z2=(w/2,0); +lft.x1'=2s; z1-z1'=whatever*dir45; +draw z1'{dir35}..z1 & + z1{dir267}..tension7..{dir10}z2; +end_char; + +beginchar("2", dig_w, digh#, 0); "the figure 2"; +pickup lower_pen; +x1=w-x3=tw; x2=w/2; x4=w-x5=.5tw; +top.y2=h; bot.y4=bot.y5=0; +y1=y3=.625h; +path stem; +stem = z1..z2{right}..z3..{z4-z3}z4 & + z4{dir40}..if modern: tension2.. fi z5{dir40}; +draw stem; +end_char; + +beginchar("3", dig_w, digh#, digd#); "the figure 3"; +pickup lower_pen; +x1=x4-.5s=w-x3=tw; x2=x6=w/2; +lft.x7=.5s; rt.x5=w-.5tw; +top.y2=h; bot.y6=-digd; +y1-th=y3=.7[-digd,h]; y4=.52[-digd,h]; y5=.5[y6,y4]; y7=-digd+1.25th; +draw z1{z1-z5}..z2{right}..z3..{dir205}z4 & + z4{dir20}..z5{down}..z6{left}..z7; +end_char; + +beginchar("4", dig_w, digh#, digd#); "the figure 4"; +pickup lower_pen; +lft.x2=w-rt.x1=.33s; x3=x4=w-1.12tw; +top.y3=h; bot.y4=-digd; y2=y1=1/3[-digd,h]; +draw z1{dir160}..tension3..z2 & + z2{up}..tension1.5..{z3-z2}z3 & + z3{dir267}..tension7..{dir10}z4; +end_char; + +beginchar("5", dig_w, digh#, digd#); "the figure 5"; +pickup lower_pen; +rt.x1=w-.25s; rt.x4=w-.5tw; x2=2/3tw; lft.x3=lft.x5=.5s; +y1=top.y2=h; y3=.65[-digd,h]; bot.y5=-digd; y4=.55[y5,y3]; +draw z1{dir215}...z2{left} ---z3 & + z3{dir35}..z4{down}..tension1.5..{dir120}z5; +end_char; + +beginchar("6", dig_w, diga#, 0); "the figure 6"; +pickup lower_pen; +rt.x4=rt.x1=w-.5s; +lft.x2=.5s; x3=w/2; x5=.7[x2,x3]; +y1=h; bot.y3=0; +y2=y4=1/3h; y5=.6h; +draw z1{dir215}..z2{down}..z3{right}..z4..z5{dir190}; +end_char; + +beginchar("7", dig_w, digh#, digd#); "the figure 7"; +pickup lower_pen; +lft.x1=w-rt.x3=.5s; +x4=1.5tw; +top.y3=h; y4=-digd; bot.y1=h; +path stem; +stem=z1{dir260}..tension1.1..{right}z3 & + z3{curl0}..{dir-80}z4; +draw if modern: subpath(0.2,2) of fi stem; +end_char; + +beginchar("8", dig_w, diga#, 0); "the figure 8"; +pickup lower_pen; +x1=x2=x3=w/2; top.y1=h; bot.y3=0; y2=.55h; +lft.x4=w-rt.x5=.5s; y4=y5=.52[y3,y2]; +lft.x6=w-rt.x7=.6tw; y6=y7=.52[y2,y1]; +draw z1{right}..z7..z2..z4..z3{right}..z5..z6..cycle; +end_char; + +beginchar("9", dig_w, digh#, digd#); "the figure 9"; +pickup lower_pen; +lft.x4-.25s=lft.x1=.5s; +rt.x2=w-.75s; x3=w/2; x5=.7[x2,x3]; +y1=-digd; top.y3=h; +y2=y4=2/3[-digd,h]; y5=.4[-digd,h]; +draw z1{dir35}..z2{up}..z3{left}..z4..z5{dir10}; +end_char; + +beginchar("0", dig_w, digh#, 0); "the figure 0"; +pickup lower_pen; +rt x1=w-.85s; lft x3=.85s; y1=y3=.54h; +x2=x4=w/2; top.y2=h; bot.y4=0; +draw superellipse(z1,z2,z3,z4,0.685); +end_char; + diff --git a/fonts/vicentino/kraml/vct.mf b/fonts/vicentino/kraml/vct.mf new file mode 100644 index 0000000000..dc3987e4c4 --- /dev/null +++ b/fonts/vicentino/kraml/vct.mf @@ -0,0 +1,17 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991-2 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vct10.mf b/fonts/vicentino/kraml/vct10.mf new file mode 100644 index 0000000000..65a2bfcabc --- /dev/null +++ b/fonts/vicentino/kraml/vct10.mf @@ -0,0 +1,16 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vct14.mf b/fonts/vicentino/kraml/vct14.mf new file mode 100644 index 0000000000..e5f2283bd2 --- /dev/null +++ b/fonts/vicentino/kraml/vct14.mf @@ -0,0 +1,16 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := false; + +% metrics +size#:=14pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vcta.mf b/fonts/vicentino/kraml/vcta.mf new file mode 100644 index 0000000000..05354d074e --- /dev/null +++ b/fonts/vicentino/kraml/vcta.mf @@ -0,0 +1,17 @@ +% VCTALT - Vicentino Twist (twisted cursive) +% w. kraml, 1991 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcta10.mf b/fonts/vicentino/kraml/vcta10.mf new file mode 100644 index 0000000000..632bd276a2 --- /dev/null +++ b/fonts/vicentino/kraml/vcta10.mf @@ -0,0 +1,16 @@ +% VCTALT - Vicentino Twist (twisted cursive) +% w. kraml, 1991 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := false; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vcta14.mf b/fonts/vicentino/kraml/vcta14.mf new file mode 100644 index 0000000000..8808e65ab9 --- /dev/null +++ b/fonts/vicentino/kraml/vcta14.mf @@ -0,0 +1,16 @@ +% VCTALT - Vicentino Twist (twisted cursive) +% w. kraml, 1991 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := false; + +% metrics +size#:=14pt#; % design size + +input vcaltdri; +end; + diff --git a/fonts/vicentino/kraml/vctb.mf b/fonts/vicentino/kraml/vctb.mf new file mode 100644 index 0000000000..c211492650 --- /dev/null +++ b/fonts/vicentino/kraml/vctb.mf @@ -0,0 +1,17 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991-2 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vctb10.mf b/fonts/vicentino/kraml/vctb10.mf new file mode 100644 index 0000000000..c3389f7d21 --- /dev/null +++ b/fonts/vicentino/kraml/vctb10.mf @@ -0,0 +1,16 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vctb14.mf b/fonts/vicentino/kraml/vctb14.mf new file mode 100644 index 0000000000..ff8ae36e2d --- /dev/null +++ b/fonts/vicentino/kraml/vctb14.mf @@ -0,0 +1,16 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991-2 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := true; + +% metrics +size#:=14pt#; % design size + +input vcdriver; +end; + diff --git a/fonts/vicentino/kraml/vctba.mf b/fonts/vicentino/kraml/vctba.mf new file mode 100644 index 0000000000..f5583d22e0 --- /dev/null +++ b/fonts/vicentino/kraml/vctba.mf @@ -0,0 +1,19 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991 + +input local; +mode=hplaser; mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; + +% finis amen +end; + diff --git a/fonts/vicentino/kraml/vctba10.mf b/fonts/vicentino/kraml/vctba10.mf new file mode 100644 index 0000000000..00cb733d04 --- /dev/null +++ b/fonts/vicentino/kraml/vctba10.mf @@ -0,0 +1,18 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := true; + +% metrics +size#:=10pt#; % design size + +input vcaltdri; + +% finis amen +end; + diff --git a/fonts/vicentino/kraml/vctba14.mf b/fonts/vicentino/kraml/vctba14.mf new file mode 100644 index 0000000000..8ab9cce74c --- /dev/null +++ b/fonts/vicentino/kraml/vctba14.mf @@ -0,0 +1,18 @@ +% VCT - Vicentino Twist (twisted cursive) +% w. kraml, 1991 + +mode_setup; + +boolean modern, twisted, bold; + modern := true; + twisted := true; + bold := true; + +% metrics +size#:=14pt#; % design size + +input vcaltdri; + +% finis amen +end; + diff --git a/fonts/vicentino/kraml/vcupper.mf b/fonts/vicentino/kraml/vcupper.mf new file mode 100644 index 0000000000..e2b1ad79bb --- /dev/null +++ b/fonts/vicentino/kraml/vcupper.mf @@ -0,0 +1,389 @@ +% upper case: +slant := upperslant; +currenttransform := identity slanted slant; + +beginchar("A", 2.75sw#, ch#, 0); "the letter A"; +pickup lower_pen; +lft.x1=w-rt.x5=0; x2=1.25tw; w-x4=tw; +x3= if modern: .56[x2,x4] +else: x4-(y3-y4)*upperslant +fi; +top.y1=bot.y2=bot.y4=0; top.y3=h; y5=3/4th; +path p; +p=z1{right}..z2..tension3..z3---z4...{dir35}z5; +draw if modern: subpath(0.5,3.37) of fi p; +z7=(subpath(2,3) of p) horintersection 1/3h; +y6=y7; rt.x6=x2+.25s; +draw if modern: subpath(0.18,1) of fi z6..z7; +end_char; + +beginchar("B", 2.25sw#, ch#, 0); "the letter B"; +pickup lower_pen; +x1=x2+tw=1.5tw; x3=w-2.35tw; x4=.53[x2,x3]; +x1'=x1''=tw; y1'=h-4.5th; y1''=4.5th; +top.y1=h; y2=-th; top.y3=h; y4=.56h; bot.y5=0; +z5=(z1''{down}...z2{dir215}) horintersection y5; +path curve; +curve=z1{dir215}...z1'{down}..z1''{down}..z5..z2{dir215} + ..z3{right}..{left}z4 & z4{right}..tension.75..{dir155}z5; + +draw subpath(0.1,3) of curve; +draw if modern: subpath(4.9,7) else: subpath(4.87,7) fi of curve; +end_char; + +beginchar("C", 2.75sw#, ch#, 0); "the letter C"; +pickup lower_pen; +lft.x1=0; x4=tw; x2-3s=x3-2s=x5=w/2; x6=w-.5tw; +y1=y2=.7h; y3=h; y5=0; y6=1.5th; y4=.5h; +path curve; +curve=z1{dir35}..tension.9..z2{dir35}..tension.85..z3{left}..z4..z5{right}..z6; +draw if modern: subpath(1.25,5) else: subpath(1,5) fi of curve; +end_char; + +beginchar("D", 2.5sw#, ch#,0); "the letter D"; +pickup lower_pen; +x1=x2+tw=x1'+.5tw; x3=x1+1.1tw; rt.x4=w-.25s; +x1'=x1''=1.1tw; y1'=h-4.25th; y1''=4.25th; +top.y1=h; y2=-th; top.y3=h; y4=.53h; bot.y5=0; +z5=(z1''{down}...z2{dir215}) horintersection y5; +lft.z3'=(.1s, h-th); +path stem, curve; +stem=z1{dir215}...z1'{down}..z1''{down}..z5; +curve=z3'{dir36}..z1..z3...z4{down}..tension.85..{dir164}z5; +draw stem; +draw if modern: subpath(.25,4) of fi curve; +end_char; + +beginchar("E", 2.5sw#, ch#, 0); "the letter E"; +pickup lower_pen; +lft.x1=0; x4=tw; x2-3s=x3-2s=x5=w/2; x6=w-.5tw; +y1=y2=.7h; y3=h; y5=0; y6=1.5th; y4=.5h; +path curve; +curve=z1{dir35}..tension.9..z2{dir35}..tension.85..z3{left}..z4..z5{right}..z6; +draw if modern: subpath(1.25,5) else: subpath(1.15,5) fi of curve; +y7=y8; x7=.5tw; y7=.52h; +x8=w-1.25tw; +draw z7--z8; +end_char; + +beginchar("F", 2.5sw#, ch#, 0); "the letter F"; +pickup lower_pen; +x1=x2=.475w; y2=0; +lft.x3=0; y3=-2/3dh; top.y1=h; +path p; +p=z1..z2{down}...{dir150}z3; +lft.x4=.2tw; x5=.26w; x6=.8w; rt.x7=w-.1s; +y4=h-4.5th; top.y5+.15s=top.y6=h; y7=h; +path curve; +curve=z4{dir125}..z5..tension1.25..z1---z6...z7; +draw if modern: subpath(0,1.7) of fi p; +draw if modern: subpath(.6,3.65) of fi curve; +y7'=y8; +x7'=w/3; y7'=.55[y3,y1]; +x8=w-.77tw; +draw if modern: subpath(.09,.9) of fi (z7'--z8); +end_char; + +beginchar("G", 2.75sw#, ch#, 0); "the letter G"; +pickup lower_pen; +lft.x1=0; x4=3/4tw; x2-3s=x3-2s=x5=w/2; x6=w-.7tw; +x8=x6; x7-s=w/2; +y7=y8-.18th=2/3xh; +y1=y2=.7h; y3=h; y5=0; y6=1.5th; y4=.48h; +path curve, second; +curve=z1{dir35}..tension.9..z2{dir35}..tension.85..z3{left}..z4..z5{right}..z6; +second= z7{dir14}...z8 softjoin z8{dir260}..{down}z6; +draw if modern: subpath(1.3,5) else: subpath(1.15,5) fi of curve; +draw second; +end_char; + +beginchar("H", 2.65sw#, ch#, 0); "the letter H"; +pickup lower_pen; +x1=x2=x3+.75s=1.5tw; y2=3th; +bot.y3=0; top.y1=h; +y1'=h-1.25th; z1-z1'=whatever*dir25; +path p,q; +p=z1'..tension11..z1{down}..z2{down}...{dir200}z3; +draw if modern: subpath(.75,2.95) of fi p; +rt.x4=w-1/3s; x5+1/2s=x6=w-1.2tw; rt.x7=w-.5s; +top.y4=h; y5=.52h; bot.y6=0; y7=th; +q=z4{dir169}...z5{down}...{right}z6...{dir35}z7; +draw if modern: subpath(.12,2.2) of fi q; +y8=y5; x8=.8tw; draw if modern: subpath(.05,1) of fi (z8--z5); +if not.modern: +cap_bot_serif(x2); +fi +end_char; + +beginchar("I", 1.5sw#, ch#, 0); "the letter I"; +pickup lower_pen; +x1=x2=x3+.75s=w/2 +.25s; y2=3th; +bot.y3=0; top.y1=h; +path p; +p=z1..z2{down}...{dir200}z3; +draw if modern: subpath(0,1.95) of fi p; +if not.modern: +cap_top_serif(x2,1.18tw); +cap_bot_serif(x2); +fi +end_char; + +beginchar("J", 1.5sw#, ch#, 0); "the letter J"; +pickup lower_pen; +x1=x2=w/2 +.25s; y2=0; rt.x3=-s; +y3=-2/3dh; top.y1=h; +path p; +p=z1..z2{down}...{dir150}z3; +draw if modern: subpath(0,1.95) of fi p; +if not.modern: +cap_top_serif(x2,1.18tw); +fi +end_char; + +beginchar("K", 2.5sw#, ch#, 0); "the letter K"; +pickup lower_pen; +x1=x2=x3+.75s=1.5tw; y2=3th; +bot.y3=0; top.y1=h; +y1'=h-1.25th; z1-z1'=whatever*dir25; +path p; +p=z1'..tension11..z1{down}..z2{down}...{dir200}z3; +draw if modern: subpath(0.7,2.95) of fi p; +pickup lower_pen; +x4=w-tw; lft.x5=rt.x2; x6=w+1.5tw; +y4=h; y5=.53h; y6=-1.33th; +path q; +q=z4{dir-80}..{dir225}z5 & z5{dir-49}..tension if modern: 1.4 else: 1.2 fi + ..{dir35}z6; +draw if modern: subpath(0.04,1.66) of fi q; +if not.modern: +cap_bot_serif(x2); +fi +end_char; + +beginchar("L", 2.25sw#, ch#, 0); "the letter L"; +pickup lower_pen; +x3'-.5s=x4'=1.1tw; x2-s=x3=w/2+1s; lft.x5=0.5s; x6=w-.5tw; x6'=w-2tw; +y2=.7h; y3=h; y5=bot.y5'=bot.y6'=0; +y6=1.5th; y4'=2th; y3'=h-2.5th; +path p, q; +p=z2{dir35}..z3{left}..tension.95..z3'.. + tension if modern: 1.9 else: 1.5 fi ..z4'..z5{dir205}; +z5'=p horintersection y5'; +q = z5'{dir if modern: 10 else: 15 fi}..z6'{right}..{dir80}z6; +draw if modern: subpath(1.33,3.8) else: subpath(0,4) fi of p; +draw if modern: subpath(0,1.8) of fi q; +labels(3',4'); +end_char; + +beginchar("M", 3.5sw#, ch#, 0); "the letter M"; +pickup lower_pen; +lft.x1=.1s; x3=w/2+1/4s; x2-.5s=w-x4=1.8tw; rt.x6=w-.15s; x5=w-tw; +bot.y1=0; bot.y3= +bot.y5=0; y6=th; top.y2=y4=h; +x1'=1.15tw; y1'=th; +z2'=(1.3tw,h); +path p,q; +p = z1{dir-55}..z1'..tension1.4..{dir78}z2; +q = z2'{dir40}.. z2{dir-62}..tension if modern: 1.9 else: 1.7 fi ..z3{down} + & z3{dir89}..tension1.15..z4{dir70} + & z4{dir280}..tension if modern: 6 else: 5 fi ..z5{right}..z6; +draw if modern: subpath(.36,2) of fi p; +draw if modern: subpath(.8,4.3) of fi q; +end_char; + +beginchar("N", 2.75sw#, ch#, 0); "the letter N"; +pickup lower_pen; +lft.x1=.2s; x4=w; x2=1.5tw; x3=w-1.2tw; +bot.y1=0; bot.y3=.66s; top.y2=y4=h+.1s; +x1'=1.25tw; y1'=.5th; z2'=(.75tw,h); +bot.rt.z3'=(w,0); z4'=(w-1.15tw, h-1.2th); +path p,m,mt,q; +p = z1{dir-56}..z1'...{up}z2 ; +q = z3{dir96}..tension2..z4'...{dir-22}z4; +m = z2'{dir40} .. z2{dir-55}..tension if modern: 1.15 else: 1.05 fi ..z3 + ..{dir30}z3'; +draw if modern: subpath(.67,2) of fi p; +draw if modern: subpath(.83,2.5) of fi m; +draw if modern: subpath(0,1.4) of fi q; +end_char; + +beginchar("O", 2.75sw#, ch#, 0); "the letter O"; +pickup lower_pen; +numeric dev; dev=3/4s; +rt.x1=w-s; lft.x3=s; +x2-dev=x4+dev=w/2; +y1-dev=y3+dev=.52h; +top.y2=h; bot.y4=0; +draw superellipse(z1,z2,z3,z4,.74); +end_char; + +beginchar("P", 2.25sw#, ch#, 0); "the letter P"; +pickup lower_pen; +x1=x2=x3+.75s=1.5tw; y2=3th; +bot.y3=0; top.y1=h; +path p; +p=z1..z2{down}...{dir200}z3; +lft.x4=.1s; x5=.55w; x6=w-.6tw; lft.x7=rt.x1+.1s; +y4=h-th; top.y5=h; y6=.74h; y7=.45h; +path curve; +curve=z4{dir36}..z1..z5..{down}z6..{dir158}z7; +draw p; +draw if modern: subpath(.55,4) of fi curve; +if not.modern: +cap_bot_serif(x2); +fi +end_char; + +beginchar("Q", 2.75sw#, ch#, 0); "the letter Q"; +pickup lower_pen; +numeric dev; dev=3/4s; +rt.x1=w-s; lft.x3=s; +x2-dev=x4+dev=w/2; +y1-dev=y3+dev=.52h; +top.y2=h; bot.y4=0; +path p,q; +p=superellipse(z1,z2,z3,z4,.74); +z5 = (1.2tw,-th); z4'=(x4,0); +z6 = (w+1.5tw,-1.33th); q=z5{dir30}..z4'{right}..{dir35}z6; +draw p; draw if modern: subpath(.35,1.7) of fi q; +end_char; + +beginchar("R", 2.5sw#, ch#, 0); "the letter R"; +pickup lower_pen; +x1=x2=x3+.75s=1.5tw; y2=3th; +bot.y3=0; top.y1=h; +path p; +p=z1..z2{down}...{dir200}z3; +lft.x4=0; x5=.55w; x6=w-1.33tw; lft.x7=rt.x1+.1s; +y4=h-th; top.y5=h; y6=.77h; y7=.52h; +x9=w+ if twisted: .3 else: 1.5 fi tw; +y9=if twisted: 1.95th else: -1.33th fi; +x7'= if twisted:.5 else:.36 fi[x7,x9]; +y7'= if twisted: .77 else:.36 fi[y7,y9]; +path curve; +curve=z4..z1..z5..{down}z6..z7 & z7{dir-10}..if modern: tension.8.. fi + z7'..if twisted: tension.77..{dir85} else:{dir36} fi z9; +draw p; +draw if modern: if twisted: subpath(.55,5.7) else: subpath(.55,5.4) fi of fi +curve; +if not.modern: cap_bot_serif(x2); fi +end_char; + +beginchar("S", 2.35sw#, ch#, 0); "the letter S"; +pickup lower_pen; +x1=x2=w/2; if modern: top. else: fi y1=h; bot.y2=0; +x3=1.25tw; rt.x4=w-.5s; y3=.78h; y4=.3h; +x5=w-1.2tw; lft.x6=0.75s; y5=y3+1.15th; y6=y4-1.75th; +path trial,p; +trial = z3{down}..tension1.1..{down}z4; +z7 = trial intersectionpoint (z6{up}..{up}z5); +p = z7..tension1.3..z5..z1{left}..z3{down}..tension1.1.. +z4{down}..z2{left}..z6..tension2.5..cycle; +draw subpath if modern:(.77,6.11) else: (.75,6.23) fi of p; +end_char; + +beginchar("T", 2.5sw#, ch#, 0); "the letter T"; +pickup lower_pen; +x1=x2=x3+.75s=.56w; y2=3th; +bot.y3=0; top.y1=h; +path p; +p=z1..z2{down}...{dir200}z3; +lft.x4=.2tw; x5=.26w; x6=.8w; rt.x7=w-.1s; +y4=h-4.5th; top.y5+.15s=top.y6=h; y7=h; +path curve; +curve=z4{dir125}..z5..tension1.25..z1---z6...z7; +draw p; +draw if modern: subpath(.62,3.53) of fi curve; +if not.modern: +cap_bot_serif(x2); +fi +end_char; + +beginchar("U", 2.6sw#, ch#, 0); "the letter U"; +pickup lower_pen; +x3=2.1tw; x4=x5=w-1.1tw; x1=if modern: 1.5 else:2 fi tw; rt.x6=w; +lft.x1'=s; y1'=.4h; +top.y4=h; bot.y3=bot.y5=0; +top.y1=h; y6=1.25th; +x4'=x4-.25s; y4'=xh-s; +y2'=h-.85th; z4-z2'=whatever*dir22; +path lstem, rstem; +lstem=z1..{down}z1'..z3{right}..tension1.2..{dir80}z4'; +rstem=z2'..tension11..z4{down}..z4'..tension5.5..z5{right}.. + tension1.2..{dir36}z6; +draw lstem; +draw if modern: subpath(.67,3.3) of fi rstem; +if not.modern: cap_top_serif(x1-.2tw,.2tw); fi +labels(4'); +end_char; + +beginchar("V", 2.6sw#, ch#, 0); "the letter V"; +pickup lower_pen; +x4-x5=.85tw; +x1=if modern:1.25 else: 2 fi tw; rt.x4=w-.85tw; x3=1/3[x1,x4]; +top.y4=h; top.y1=h; y5=h-1.5th; bot.y3=0; +path stem; +stem =z1{dir200}..tension3.. + z3{right}..tension2.5..z4{left}..tension1.5..z5; +draw if modern: subpath(0,2.1) of fi stem; +if not.modern: cap_top_serif(x1-.2tw,.2tw); fi +end_char; + +beginchar("W", 3.25sw#, ch#, 0); "the letter W"; +pickup lower_pen; +x7-x8=.9tw; +x1=if modern:1.25 else: 2 fi tw; rt.x7=w-.85tw; x3=1/3[x1,x4]; +x7-x4=x6-x3=x4-x1; +top.y7=top.y1=h; y8=h-1.5th; bot.y3=bot.y6=0; y4=xh+s; +path lstem, rstem; +lstem=z1{dir200}..tension3.. + z3{right}..tension2.25..z4{dir125}; +rstem=z4{dir-10}..tension6..z6{right}..tension2.5..z7{left}..tension1.5..z8; +draw if modern: subpath(0,2.9) of fi lstem; +draw if modern: subpath(0.1,2.15) of fi rstem; +if not.modern: cap_top_serif(x1-.2tw,.2tw); fi +end_char; + +beginchar("X", 2.65sw#, ch#, 0); "the letter X"; +pickup lower_pen; +x1=1.3tw; lft.x5=.5s; x6=1tw; lft.x1'=.275tw; +x7=w-1.25tw; rt.x8=w-s; rt.x4=w-1/3s; x3=w-1.25tw; +top.y7=h; top.y1=h; y8=h-1.25th; y1'=h-th; +y5=y4=1.25th; 0=bot.y6=bot.y3; +path nwso, swno; +nwso=z1'..z1{right}..tension if modern:8 else: 6 fi + ..{right}z3...{dir35}z4; +swno=z5..tension2..z6{right}..tension2.5..{right}z7...{dir-65}z8; +draw if modern: subpath(.7,2.3) of fi nwso; +draw if modern: subpath(.8,2.2) of fi swno; +end_char; + +beginchar("Y", 2.5sw#, ch#, 0); "the letter Y"; +pickup lower_pen; +x2=w/2; lft.x1=w-rt.x3=.25s; +bot.y2=0; top.y1=top.y3=h; +z8=(x2,.4xh); +path lp,rp; +lp=z1{dir35}..tension1.625..{dir267}z8---z2; +rp=z8{up}..tension1.45..{dir-20}z3; +draw if modern: subpath(.08,2) of fi lp; +draw if modern: subpath(0,.9) of fi rp; +if not.modern: cap_bot_serif(x2); fi +end_char; + +beginchar("Z", 2.35sw#, ch#, 0); "the letter Z"; +pickup lower_pen; +lft.x1=lft.x4=0.25tw; rt.x3+1/3tw=w; +x2=1.25tw; +top.y2=top.y3=h; y1=h-1.5th; bot.y4=0; +z6=(w+1.5tw, -1.33th); +path stem; +stem=z1{dir38}...z2.. + if modern: tension 1.2 else: tension.85 fi .. + {dir40}z3 & z3..tension6.. {dir265}z4 & + z4{dir35}..{dir35}z6; +draw if modern: subpath(.25,3.77) of fi stem; +y7=y8=.55h; x7+.75tw=x8-.925tw=w/2; +draw z7--z8; +end_char; + diff --git a/fonts/vicentino/kraml/vortrag.tex b/fonts/vicentino/kraml/vortrag.tex new file mode 100644 index 0000000000..0a7ee6c1c6 --- /dev/null +++ b/fonts/vicentino/kraml/vortrag.tex @@ -0,0 +1,387 @@ +\documentclass[draft,12pt,a4paper,german]{article} +\usepackage[german]{babel} +%Updated to Latex2e by James Kifiger. +\newcommand{\MF}{Metafont} +\title{Die humanistische Kursive von Arrighis Operina bis \MF{} -- ein +typographischer Versuch} +\author{Willibald Kraml} +\usepackage[T1]{fontenc} + +\begin{document}\tolerance 300 +\maketitle + +\section{Die kursive Kanzleischrift im humanistischen Italien} + +Im 15. und 16. Jahrhundert waren in Italien vor allem zwei +Handschriftenformen im Gebrauch: die humanistische Minuskelschrift oder +Antiqua, eine eher statisch und klassisch wirkende Schrift, die letztlich +auf die karolingische Minuskel zur"uckgeht, aber von den Humanisten +\glqq irrt"umlich\grqq f"ur eine schon in der Antike vorhandene (und darum auch +besonders gesch"atzte) Schrift gehalten wurde (und eben darum auch +\glqq Antiqua\grqq +genannt wurde). Sie wurde vor allem f"ur sch"on ausgearbeitete Manuskripte +verwendet. Die zweite "ubliche Schrift war dynamischer, rascher zu schreiben +und dementsprechend die \glqq Alltagsschrift\grqq der gelehrten Schichten +(und nur +die konnten "uberhaupt lesen und schreiben). Sie war unter dem Namen +\glqq Cancellaresca\grqq oder \glqq Cancellaresca bastarda\grqq , also +\glqq Kanzleischrift\grqq +bekannt. Auch \glqq Cancellaresca corsiva\grqq war ein g"angiger Ausdruck, +der sich +auf die M"oglichkeit bezog, diese Schrift sehr fl"ussig schreiben zu k"onnen. + +In der ersten H"alfte des 16. Jh. erschienen einige sogenannte +\glqq Schreibmeisterb"ucher\grqq , in denen die korrekte Art gelehrt wird, diese +Kanzleischrift zu schreiben (was mit der korrekten Art, die Feder zu +schneiden und beim Schreiben zu halten, beginnt). + +Das erste (und im Titel des Vortrags schon genannte) ist das Werk +\glqq .......\grqq des Ludovico degli Arrighi, der auch Ludovico de Henriciis +(?) oder +(nach seiner Herkunft) Vicentino genannt wird. +Er war von Beruf Schreiber und Kalligraph in den Kanzleien des Vatikan. +Sein Buch wurde nach seiner handgeschriebenen Vorlage Seite f"ur Seite in +Holz geschnitten und so gedruckt (nach der Methode der \glqq Blockb"ucher\grqq +, die +schon vor Gutenbergs Erfindung in Gebrauch waren). Dadurch ging nat"urlich +ein wesentlicher Teil der Qualit"at der Handschrift verloren. + +Ein Hauptkonkurrent Vicentinos war Giovambattista Palatino, der sein Werk +\glqq ........\grqq nur kurze Zeit sp"ater zur Publikation brachte. Sein Name +ist den +typographisch Interessierten nat"urlich von der gleichnamigen Schrift Hermann +Zapfs bekannt. + +Diese Schriftformen blieben beinahe ohne Ver"anderungen "uber etwa 200 Jahre +in Gebrauch, und zwar nicht nur in Italien, sondern im Lauf der Zeit in fast +ganz Europa. So gibt es entsprechende Lehrb"ucher bzw. Abhandlungen "uber +diese Schrift auch von Erasmus, ..... + + +\section{Das Formeninventar der humanistischen\\Kursiven} + +Das Inventar der meisten kursiven Minuskeln l"a"st sich auf ganz wenige +Grundformen zur"uckf"uhren, die z.B. in den Buchstaben f, o und n prototypisch +vorhanden sind. Aus der Grundform des f (und der Langform des s) sind auch +die Ober- und Unterl"angen gebildet. Diese Einheitlichkeit der Formen, +verbunden mit einer ziemlich starren Federhaltung und gleichm"a"sigem +Federdruck f"uhrt zu einer "asthetisch durchaus anspruchsvollen, fast +\glqq kalligraphisch\grqq zu nennenden Schrift. Der daraus resultierende +Nachteil +ist die nur mittelm"a"sig gute Lesbarkeit, die sich aus dem Mangel an +differenzierten Formen ergibt (gerade in der Zone der Oberl"angen und der +oberen H"alfte der Mittell"angen, die nach modernen Erkenntnissen f"ur die +Lesbarkeit besonders wichtig sind). Auch die H"aufung der +\glqq r"uckw"arts\grqq +gewandten Unterl"angen ist zwar reizvoll, vermindert aber eher das erzielbare +Lesetempo (anders steht es nat"urlich um das Schreibtempo: die Formen der +Kursive lassen sich ganz besonders rasch schreiben, vor allem im Vergleich +zur Antiqua, die h"aufigeres Absetzen und auch zahlreicheres Verdrehen der +Federstellung bzw. Druckwechsel verlangt). + +Auff"allig ist, da"s die Schr"aglage anf"anglich nicht sehr ausgepr"agt oder +auch +gar nicht vorhanden war. Sie war eher eine mehr oder minder zuf"allig +hinzukommende Eigenschaft, die sich aus dem raschen und fl"ussigen Schreiben +ergab, die aber nicht als wesentlich angesehen wurde. + +Nun zu einigen Buchstaben (Minuskeln) im Detail: +\begin{itemize} +\item[a] Das a hat eine deutlich andere Form als bei der Antiqua -- es besteht +sozusagen aus den Grundformen des o und des i, wobei allerdings die +Rundung des o in "alterer Zeit stets in eine ann"ahernde Dreiecksform +aufgel"ost ist. + +\item[g] Das g kommt in zwei Varianten vor, einer vom a abgeleiteten mit +einer weit ausladenden unteren Schleife, und in der Variante, die in der +Antiqua die gew"ohnliche Form darstellt. Diese Form ist vor allem bei +Ludivico sehr beliebt und weist bei ihm eine spezielle Eigenart auf: es +fehlt das sonst gew"ohnlich vorhandenen \glqq Ohr\grqq . + +\item[h] Das h ist in der handgeschriebenen Kursive immer sehr formverwandt +mit dem b, und auch in den Schreibmeisterb"uchern wird dieser Umstand betont: +das h ist ein unten offenes b. + +\item[k] Das k weist immer eine Schlaufe auf. + +\item[s] Das s begegnet uns in zwei Formen: dam kurzen oder runden s und +dem langen s (das wie das f, aber ohne Querstrich geschrieben wird). +Wichtig (heute nur mehr f"ur die Deutschsprachigen) ist die ss-Ligatur, die +entweder in Form von zwei langen s, oder aber h"aufiger in der Kombination +aus langem und kurzem s vorkommt, eine Ligatur, die im Deutschen noch als +scharfes s fortlebt, leider aber oft f"alschlicherweise als \glqq sz\grqq +bezeichnet +wird, eine Zeichenfolge, die es im Deutschen sprachhistorisch nie gegeben +hat. Die ss-Ligatur (ebenso wie die Langform des s) war "ubrigens auch in der +Antiqua zuhause und in praktisch allen Sprachen, die das Lateinalphabet +verwenden, bis ins neunzehnte Jahrhundert hinein in Gebrauch. Der deutsche +\glqq Alleinanspruch\grqq auf das "s ist also noch nicht sehr alt! Aus dem +Gesagten +ergibt sich nat"urlich auch, da"s etwa der Usus der Schweizer, bei gewissen +Schrifttypen (z.B. in Schreibmaschinenschriften) kein "s, sondern ein ss zu +schreiben, eigentlich durchaus rechtens ist und konsequent, da in diesen +Schriften auch sonst keine Ligaturen verwendet werden. +\end{itemize} + +Neben der ss-Ligatur kommen auch eine ganze Reihe von anderen +\textbf{Ligaturen} vor, von denen einige im Lauf der Zeit v"ollig +untergegangen sind, andere sich nur teilweise erhalten haben (z.B. st, +sp und so weiter). + +Die \textbf{Gro"sbuchstaben} (Majuskeln) stellen ein Problem f"ur sich dar: zum +einen kommen sie in den nicht-deutschen Sprachen vergleichsweise selten vor +und beschr"anken sich auf die Initialen von Namen oder von S"atzen bzw. +Abschnitten. Gerade als Initialen legte man fr"uher gro"sen Wert auf +ausgeschm"uckte Formen, auch wenn die f"ur sich genommen vielleicht kaum mehr +lesbar sind. Die Majuskeln sind sowohl in der Antiqua als auch in der +Cancellaresca ein eigentlich fremdes Element, da sie direkt auf die Formen +der lateinischen Antike zur"uckgehen, w"ahrende die Minuskeln das Ergebnis +einer mehrhundertj"ahrigen kontinuierlichen Entwicklung sind. + +Bei der Antiqua ist dies nicht so auff"allig, weil sie sich in ihrer +Entwicklung aus den karolingischen Minuskeln wieder hin zu mehr Statik +ge"andert hat und damit gut zu den ebenfalls statischen Formen der Kapitalis +pa"st. Im Humanismus wurden dann noch die Serifen bei den Minuskeln in der +Art der Serifen der Kapitalis eingef"uhrt, wodurch ein starkes gemeinsames +Formelement vorhanden war. + +In der kursiven Kanzleischrift verwendete man zun"achst im Textinneren +ebenfalls die gew"ohnlichen Kapitalisbuchstaben als Gro"sbuchstaben, obwohl +sie dort vielmehr den Charakter eines Fremdk"orpers haben. F"ur die Initialen +am Textanfang begann man mit sehr kunstvollen, ja geradezu manierierten +Formen zu experimentieren, die dann teilweise (in ihren etwas einfacheren +Formen) auch im Textinneren Verwendung fanden. Die Anf"ange der kursiven +Gro"sbuchstaben wirken auf unser Auge mit wenigen Ausnahmen nur grotesk und +unproportioniert. Man vergleiche das Blatt der kursiven Majuskeln im +Lehrbuch des Palatino mit seinem Schriftkunstwerk, das aus lateinischen +Kapitalisbuchstaben besteht, und man wird verstehen, was ich meine. + +\section{Die Kursive als Drucktype} + +Schon bald begann man, die Kursive auch als Vorlage f"ur Drucktypen zu +verwenden, hatte aber dabei mit einem technischen Problem zu k"ampfen, n"amlich +den "Uberh"angen der Ober- und Unterl"angen. Zum ersten Mal begegnet uns eine +kursive Drucktype in einem bei Aldus Manutius gedruckten Buch im Jahre 1501, +sie stammt von Francesco Griffo. Er zieht sich aus der Aff"are, indem er die +Ober- und Unterl"angen der Antiqua ann"ahert und mit Serifen versieht, nur +f und s behalten ihre geschwungene Form (wobei sie bei den Unterl"angen etwas +\glqq gestutzt\grqq wird). Griffo verwendet nur f"ur die Minuskeln kursive +Formen, und +zwar in leichter Schr"aglage, als Gro"sbuchstaben werden normale +(geradestehende) Kapitalisbuchstaben (die Gro"sbuchstaben der Antiqua) +verwendet. + +Durch die Ann"aherung an das Formeninventar erreicht Griffo, da"s die +"Uberh"ange nicht mehr allzu h"aufig sind; was er (wahrscheinlich wohl +unbewu"st) auch erreicht, ist eine besserer Lesbarkeit durch gr"o"sere +Differenzierung in den Ober- und Unterl"angen. + +Wichtig ist die Verwendung dieser neuen Drucktype: Sie wird als +eigenst"andige Buchschrift verwendet und nicht etwa als Auszeichnungsschrift +in Erg"anzung zur Antiqua, wie dies heutzutage f"ur gew"ohnlich der Fall ist. +Die Verwendung zur Auszeichnung kommt erst einige Zeit sp"ater in Gebrauch, +wobei sich die Kursive als selbst"andige Buchschrift durchaus noch einige +Zeit halten konnte. + +Die Tendenz der immer gr"o"seren Ann"aherung der Kursiven an das +Formeninventar der Antiqua ist auch in den folgenden Jahrhunderten +zu beobachten und steht nat"urlich mit der neuen Funktion der +Auszeichnungsschrift in Zusammenhang. Ein wichtiger Schritt in diese +Richtung wird dem Wiener Buchdrucker Johann Singriener zugeschrieben, der +1524 zum ersten Mal schr"agstehnde Kapitalisbuchstaben verwendet. Aber noch +um 1550 werden in Frankreich kursive Schriften mit geradestehenden +Gro"sbuchstaben verwendet. Und lange Zeit sp"ater noch werden dann die +Gro"sbuchstaben zwar schr"aggestellt, allerdings weniger schr"ag als die +korrespondierenden Minuskeln. Der Endpunkt +dieser Entwicklung findet sich in unserem Jahrhundert in der +\glqq schr"aggestellten Antiqua\grqq (vgl. Knuths \emph{Computer Modern +Slanted}, bei +der ausschlie"slich nur mehr die Antiquaformen vorkommen, allerdings in +Schr"aglage, womit auch das urspr"unglich nur akzidentelle Merkmal zum +dominierenden, ja zum alleinigen Merkmal wurde. Das gleiche finden wir bei +den schr"agen Formen zu den serifenlosen Schriften. So kommt es, da"s heute +die meisten Leute \emph{kursiv} als gleichbedeutend mit \emph{schr"ag} sehen. + +Die n"achsten bedeutenden Versuche nach Griffo, die kursive Schreibschrift +auch als Druckschrift einzusetzen, finden wir bei dem uns schon bekannten +Ludovico Vicentino. Zwei oder drei Drucktypen wurden von ihm entworfen und +von dem ber"uhmten Drucker Blado verwendet, wobei er sich bei seiner ersten +Drucktype bem"uht, den urspr"unglichen Duktus der geschriebenen Schrift +m"oglichst getreu beizubehalten. Sp"ater folgt er (wohl auch prim"ar aus +technischen Gr"unden) dem Beispiel Griffos und n"ahert seine Formen der +Antiqua an. Die Schriftschnitte Vicentinos wurden in unserem Jahrhundert +wieder neu entdeckt und sch"atzen gelernt, was hervorragenden +Pers"onlichkeiten wie dem englischen Kalligraphen Edward Johnston und dem +Typographen Stanley Morison, dem Designer der heutzutage ja schon +notorischen \emph{New Times Roman}, oder dem Drucker Hans Mardersteig zu +verdanken ist. Die Lanston Monotype Corporation, deren typographischer Leiter +Stanley Morison war, hat sich dabei besondere Verdienste erworben -- dieselbe +Lanston Monotype Corporation, die heuer aufgrund wirtschaftlicher +Schwierigkeiten zu existieren aufgeh"ort hat. + +\section{Die Renaissance der \glqq Chancery\grqq } + +Die Wiederentdeckung der alten Kursiven Arrighis war auch der Anfang einer +bescheidenen Renaissance der Kursiven als Buchschrift. Die englische +Rilke-Ausgabe der Weimarer \emph{Cranach Press} wurde in dieser Type gesetzt, +aber auch andere literarische Werke erschienen wieder in Kursiv, so z.B. +Thomas Manns \emph{Der Tod in Venedig}. + +In unserem Jahrhundert fand man dann noch eine weitere +Verwendungsm"oglichkeit f"ur die Schriftformen der humanistischen +Kanzleischrift: Mit Schnitten wie Zapfs \emph{Chancery} oder Zapfs {\em +Medici} begann die Renaissance der Kursiven als Zierschrift, f"ur die man +lange Zeit haupts"achlich die englische Schreibschrift (einen sehr sp"aten +Nachfahren der humanistischen Kursive) eingesetzt hatte. Die Verwendung der +typischen gebogenen Oberl"angen in sehr ausgepr"agter Form gibt diesen +Schriften einen sehr kalligraphischen Effekt, allerdings auf Kosten der +Lesbarkeit, so da"s diese Schriften als Buchschriften nur bedingt geeignet +sind. + +Ideale Kompromisse, die den Geist der alten Kursive deutlich sichtbar machen +und doch vorwiegend als Buchschrift konzipiert sind, sind in meinen Augen +Zapfs \emph{Palatino Kursiv} und Matthew Carters \emph{Galliard Italic}. + +\section{raggedright Die humanistische Kursive und \MF{}} + +Das Zeitalter des Computers auch in der Typographie wurde eigentlich schon mit +Matthew Carters Schrift angesprochen: er zeichnete seine Vorlagen, scannte +sie und bearbeitete sie am Computer mit dem Programm \emph{Ikarus} nach. + +Mit \MF{} wurde uns von Donald Knuth ein Hilfsmittel gegeben, direkt die +Formen von Schrifttypen als Programm beschreiben zu k"onnen. Jeder, der sich +daran versucht, mit \MF{} Zeichen zu gestalten, wird aber dabei sehr +schnell merken, da"s dies kein ganz einfaches Unterfangen darstellt. Und f"ur +den Anf"anger stellt sich das doppelte Problem, eine durchaus recht komplexe +Programmiersprache lernen zu m"ussen f"ur die Verwendung in einer Sache, von +der er als solcher meistens auch keine Ahnung hat, n"amlich der Formgebung +von Buchstaben. + +Genau vor diesem Dilemma stand ich auch vor einem Jahr, als ich begann, +mich mit \MF{} zu besch"aftigen. Bestehende Formen m"oglichst getreu mit +\MF{} \glqq abbilden\grqq wollte ich nicht (obwohl so ein Vorgehen +wahrscheinlich +empfehlenswerter w"are). Und bei meiner Suche nach Schriftformen, die sich +m"oglichst einfach mit \MF{} gestalten lie"sen (die Programme f"ur die +einzelnen Zeichen sollten kurz und "uberschaubar bleiben, und mit m"oglichst +wenig Sprachelementen auskommen), kam ich schlie"slich auf die +Kursive. + +In \MF{} gibt es unter anderem die M"oglichkeit, definierte +\glqq Federn\grqq fixer +Gestalt entlang von Pfaden zu f"uhren und so geschriebene Formen nachzuahmen. +Die Einschr"ankungen liegen darin, da"s diese konzeptuellen Federn w"ahrend +eines +Kurvenzuges von fixer Gestalt, Gr"o"se und Lage sein m"ussen. F"ur die Kursive +ist dies kein allzu gro"ser Nachteil, da auch ihre handschriftlichen +Vorbilder mit einer ziemlich starren Federhaltung und mit wenig +Druckunterschieden (was zu unterschiedlichen Strichbreiten f"uhrt) +geschrieben wurden. Diese Methode wurde auch bei den bei \TeX{} +standardm"a"sig vorhandenen kalligraphischen Gro"sbuchstaben von Neenie +Billawalla erfolgreich verwendet. + +Zwei Federformen sind in \MF{} schon vordefiniert: elliptische (mit dem +Sonderfall der kreisf"ormigen) und rechteckige (bzw. quadratische). Beide +sind f"ur die kursiven Schriftformen allerdings nur bedingt geeignet. + +Die elliptische Feder f"uhrt zwar zu sehr sch"onen, runden Kurven entlang der +Au"senseite von Rundungen, aber An- und Abstriche (und die sind f"ur die +humanistische Kursive sehr charakteristisch) wirken kraftlos und unelegant. +Die rechteckige Feder wiederum bewirkt, da"s entlang der Au"senseite von +Rundungen Kurventeile auftreten, die absolut gerade sind; durch die an +diesen Stellen auf der Innenseite zwangsl"aufig auftretende Tendenz zu +spitzen Formen wird der Eindruck noch verst"arkt, ja es kommt sogar zu einer +optischen T"auschung, bei der man meint, da"s an dieser Stelle ein Knick nach +innen vorhanden sei! Auch die "Uberg"ange bei den An- und Abstrichen sind nicht +sch"on, es kommt zu Knicken und auch hier zu optischen T"auschungen, als w"are +die Form des Federstrichs leicht konkav. + +Neben den vordefinierten Federformen gibt es auch die M"oglichkeit, selber +neue Formen in Form von Polygonz"ugen zu definieren, wobei allerdings die +Einschr"ankung zu beachten ist, da"s die Form allseitig konvex sein mu"s. Ich +begann mit solchen Formen zu experimentieren und kam schlie"slich auf eine +Form, die von der Grundform der rechteckigen Feder abgeleitet ist, bei der aber +alle vier Seiten leicht konvexe Linienz"uge sind. Au"serdem ging ich nicht von +einem Rechteck aus, sondern von einem Trapez, bei dem die Oberseite l"anger +ist als die Unterseite. Damit konnte ich, wie ich glaube, die Nachteile der +elliptischen bzw. der rechteckigen Federformen eliminieren: die Au"senseiten +von Rundungen bleiben rund, und die An- und Abstriche ergeben harmonische, +kontinuierlich an- bzw. abschwellende Formen mit dennoch markantem Abschlu"s. + +Die Formen der einzelnen Zeichen wurden ausschlie"slich am Computer +erarbeitet, wobei die Lage von St"utzpunkten, bestimmte Winkellagen der +Kurven oder in vielen F"allen die sog. \emph{tension} ad hoc festgelegt wurde, +bis eine (mich) einigerma"sen befriedigende Form gefunden wurde. Dabei war +ich nicht bem"uht, die "uberlieferten Formen in allen Details nachzuahmen, +vielmehr war ich bestrebt, eine eigene, pers"onliche Schrift im Geiste der +humanistischen Kursive zu gestalten. Ich entschlo"s mich, da"s diese Schrift +den Namen \emph{Vicentino Corsiva} tragen sollte, als Verbeugung vor dem gro"sen +Schriftk"unstler Ludovico Vicentino. + +Ich ging bei meinen Experimenten von \emph{plain \MF{}} aus, also nicht +von den Makros der Computer Modern Familie, da diese "uberwiegend dazu +dienen, das Formeninventar klassizistischer Schriften in den Griff zu +bekommen. Au"serdem wollte ich von einem eher minimalistischen Ansatz +ausgehen um zu sehen, was dabei mit \MF{} m"oglich ist (und wo die Grenzen +eines solchen Ansatzes liegen). + +Ich habe mit den so erarbeiteten Formen auch weiter experimentiert und +versucht, ein gewisses Ma"s an \emph{Metaness} einzubauen; daraus entstanden +zum einen auch halbfette Varianten, und auch zwei weitere +\glqq Schnitte\grqq : mit +einer fast kreisf"ormigen Feder geschrieben und unter fast g"anzlicher +Weglassung der An- und Abstriche wirkt die \emph{Vicentino Modern} wie mit +dem Filzstift geschrieben und wesentlich neuzeitlicher; dazu tragen auch +gewisse Varianten in den Formen (etwa bei g und k) bei, die aber immer von +der \glqq klassischen\grqq Form abgeleitet sind. Als "au"serst experimentelle +Form ist +die \emph{Vicentino Twist} anzusehen, bei der eine elliptische Feder in +Linksdrehung verwendet wird, um leicht nach links geneigte Zeichen zu +schreiben, die aus den Grundformen der \emph{Vicentino Modern} bestehen. Das +Resultat ist eine durch ihr flimmerndes Schriftbild sehr auff"allige (und +schlecht lesbare und darum f"ur l"angeren Text absolut ungeeignete) Schrift. + +Ein Problem ist auch die Codierung der Zeichen; es ist kaum sinnvoll, die +Standardeinteilung von \TeX{} zu verwenden (weil etwa die griechischen +Zeichen darin eigentlich nichts zu suchen haben), au"serdem sind in diesem +Zusammenhang ja derzeit \glqq Umbauarbeiten\grqq auf einen 8-bit Zeichensatz im +Gange. Au"serdem entschlo"s ich mich, bei den Ligaturen nicht den CM-Fonts zu +folgen: die Entscheidung, welche Ligaturen vorhanden sein sollen, h"angt ganz +entschieden von der Schriftform und nat"urlich auch von der Sprache ab, f"ur +die man eine Schrift gestaltet. So verzichtete ich z.B. auf die Ligaturen +\emph{fl}, \emph{ffi} und \emph{ffl}, hielt aber eine Ligatur \emph{ch} gerade +f"ur die deutsche Sprache f"ur sinnvoll. Au"serdem war es mir ein Bed"urfnis, +wie bei den alten Kursivschriften "ublich auch alternative Zeichenformen +vorzusehen (eigene Formen f"ur den An- oder Auslaut, die Variante des \emph{g}, +die alten Ligaturen \emph{ct}, \emph{st} und \emph{sp}, majuskelgro"se Ziffern +usw.). Derzeit sind die entstandenen Zeichens"atze ein etwas unsch"oner +Kompromi"s: sie folgen im wesentlichen den alten \TeX-Konventionen, lassen +allerdings einige L"ucken (manche davon ungerechtfertigt) und besetzen eine +Position anders (um die ch-Ligatur unterzubringen). Die alternativen Zeichen +sind in einem zweiten Font untergebracht. Dies ist als Provisorium +anzusehen: es ist unbedingt notwendig, f"ur die Umlaute und auch f"ur die +deutschen Anf"uhrungszeichen eigene Zeichen vorzusehen. In der +\glqq endg"ultigen\grqq +Version sollen daher die Zeichen in ihrer Anordnung weitgehend den neuen +DC-Fonts entsprechen. Obwohl die Schrift also nicht eigentlich als +\glqq fertig\grqq +bezeichnet werden kann, m"ochte ich sie dennoch allen Interessierten zur +Verf"ugung stellen und bin f"ur Kritik und Anregungen nat"urlich dankbar. + +\section{Literatur (in Auswahl)} +\begin{itemize} +\item -- Scribes and Sources + +\item Alexander Lawson, Anatomy of a Typeface, London 1990. + +\item James Moran, Stanley Morison -- His typographic achievement, London 1971. + +\item Jan Tschichold, Meisterbuch der Schrift, Ravensburg 1965. + +\item Emil Wetzig, Kursiv als Buchschrift, in: Gutenberg-Jahrbuch 1962, + S. 39--43. + +\end{itemize} + +\end{document} + |