Home

The microtype package

image

Contents

1. 6894 INTERWORD SPACING 6895 6896 SetExtraSpacing 6897 name default 6898 encoding 0T1 T1 LY1 0T4 QX T5 6899 d These settings are only a first approximation The following reasoning is from a mail from Ulrich Dirr I do not claim to have coped with the task The idea is analog to the tables for expansion and protrusion to have tables for optical reduction expansion of spaces in dependence of the actual character so that the distance between words is optically equal When reducing distances the weighting order is e after commas 6900 500 500 e in front of capitals which have optical more room on their left side e g A PT V W and Y this is not yet possible RS e in front of capitals which have circle oval shapes on their left side e g C G O and Q ditto RS e after r because of the bigger optical room on the righthand side 6901 r 300 300 e before or after lowercase characters with ascenders 6902 b 6903 6904 6905 6906 6907 6908 200 200 200 200 200 200 200 200 200 200 200 200 200 200 H H T MR Pr D H e before or after lowercase characters with x height plus descender with additional optical space e g v or w 6909 6910 6911 6912 6913 6914 6915 y 100 100
2. 3390 MT xdef n MT Gtempb Q setname MT val 3391 3392 MTCxdef n MTC Ctempb setname Gnameuse MT default Gtempb Oset 3393 MT warning nl The 1 set MT val is undeclared MessageBreak 3394 Using set nameuse MT tempb setname instead 3395 HN 3396 expansion and protrusion may be true false compatibility nocompatibility and or a set name 3397 MT map clist n protrusion expansion 3398 define key MT 1 true 3399 csname MTCopt 1true endcsname 3400 MT map clistOn 1 7 401 KV sp def MTOval 1 2 MT ifempty MT val relax 3 csname MT 1true endcsname 4 edef tempb csname MT rbba 1 endcsname 1 5 MT ifstreq MT val true relax 16 407 MT ifstreq MT val false csname MT 1false endcsname 09 i0 0 MT ifstreq MT val compatibility 1 MT let nc MT Gtempb level ne 2 T 3 MT ifstreq MT val nocompatibility A MT let nc MT Gtempb level tw 5 TL If everything failed it should be a set name 6 MTCopt def set 1 7 th 8 Di 9 Di Di Di bi bi F activate is a shortcut for protrusion and expansion 5 define key MT activate true 6 setkeys MT protrusion 1 7 setkeys MT expansion 1 8 spacing kerning and tracking do not have a compatibility level 00 KM MM KM L AUNE h2 NNN 429 MT map clist n spacing kerning tracking 446 4T MT def bool opt is 8 49 a aaa G OW WN ra
3. mathit OT1 cmr m it is also already set up There are for the moment no settings for mathsf and mathtt Math font letters also used as mathnormal is declared as DeclareSymbolFont letters OML cmm m it SetSymbolFont letters bold OML cmm b it 6179 cmr 6180 SetProtrusion 6181 name cmr math letters 6182 encoding OML 6183 family cmm 6184 series m b 6185 shape it 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 100 50 mathnormal L 50 Fy 50 d 50 50 50 Is 100 50 50 50 i H 50 50 50 50 150 50 50 100 50 50 50 4 50 50 50 50 50 50 4 50 50 100 50 50 100 100 50 100 50 100 100 100 100 100 100 50 lt L 50 are P br Sd Si si CG r IO P DOS Z R Ga D eOm DD OO D og P P pa a Pa a Pa pa pa a a CONFIGURATION FILES Character protrusion 175 6216 K lt L 50 6217 r 50 6218 v t 50 6219 vs L 50 6220 x 50 6221 OB 50 100 alpha 6222 OC 50 50 beta 6223 OD 200 150 gamma 6224 OE 50 50 delta 6225 OF 50 50 epsilon 6226 10 50 150 zeta 6227 12 50 theta 6228 13 100 iota 6229 14 100 kappa 3230 15 100 50 lambd
4. 3358 MT ifdim Otempb lt 2 3359 MT ifdim tempc gt 1 3360 MT if true 3361 edef tempb 1 to 2 with range tempb space to tempc 3362 relax 3363 relax 3364 Y 3365 HN 3366 NifMTOife 3367 MTQwarning nameuse MT abbr MT permutelist list 3368 nameuse MT MT permutelist name will override MessageBreak 3369 list 3 for font tempa MessageBreak size tempb If we ve already found a conflict with this item we can skip the rest of the list 70 expandafter MT tlist break 71 Mi 72 N 14 4 Package options 14 4 ifMT opt expansion ifMT opt auto ifMT opt DVI MT optwarn admissible MT optwarn nan 1 Declaring the options Keep track of whether the user explicitly set these options 3373 newif ifMT opt expansion 3374 newif ifMT opt auto 3375 newif ifMT opt DVI Some warnings 3376 def MT optwarn admissible 1 2 3377 MT warning nl 1 is not an admissible value for option MessageBreak 3378 2 Assuming false 3379 3380 package IMPLEMENTATION Package options 118 3381 plain MT requires latexif 3382 def MT optwarn nan 1 2 3383 MT warning nl Value 1 for option 2 is not a MessageBreak number 3384 Using default value of number nameuse MTC 20default 3385 3386 plain relax 3387 package MT opt def set 3388 def MT opt def set 11 3389 MT ifdefined n TF MTC Ctempb setO MTOval
5. 3703 define key MTX tracking true MT warning Ignoring tracking setup 3704 define key MTX kerning true MT warning Ignoring kerning setup 3705 define key MTX spacing true MT warning Ignoring spacing setup 3706 3707 define key MTX activate true 3708 setkeys MTX protrusion 1 3709 setkeys MTX expansion 1 3710 MT saved setupfont Disable everything may be used as a work around in case setting up fonts doesn t work in certain environments Undocumented 3711 let MT saved setupfont MT setupfont 3712 NdefineQOkey MTX disable 2 3713 MT info Inactivate MT MT package 3714 let MT setupfont relax 3715 3716 define key MTX enable 3717 MT info Reactivate MT MT package 3718 let MT setupfont MT saved setupf ont 3719 3720 package 14 4 5 Processing the options MT ProcessOptionsWithKV Parse options 3721 plain MTCrequires latexi MT getkey IMPLEMENTATION Package options 126 3722 def MT ProcessOptionsWithKV 1 let tempc relax let MT temp Cempty 5 plain MT requires latex2 MT map clist c classoptionslist def CurrentOption 1 MT ifdef ined n T KVO 10 expandafter MT getkey CurrentOption nil 7 edef MT temp MT temp CurrentOption H expandtwoargs removeelement CurrentO0ption unusedoptionlist unusedoptionlist yh th edef MT temp noexpand setkeys 1 MT temp ptionlist currname
6. 50 50 cmr 9 100 100 t cmr pad pmn ppl 500 lg 400 600 bch ptm ugm 700 Die 300 500 cmr pad pmn ppl 500 beh ugm 600 prm 700 cmr pad ppl 300 ugm 400 pmn 200 CONFIGURATION FILES Character protrusion 156 5121 ptm 500 5122 m t cmr pad ppl 300 5123 bch ugm L 400 5124 pmn 200 5125 ptm 500 5126 ptm 100 5127 bch 200 5128 ptm 100 5129 ppl 300 5130 pmn 400 200 5131 m t pad pmn ppl ptm amp 50 50 5132 bch amp lt L 80 5133 cmr amp 100 50 5134 ugm amp 50 100 5135 m t cmr pad pmn 100 5136 bch vi 50 50 5137 ppl ptm 100 100 5138 ugm 100 50 5139 m t pmn ppl 200 200 5140 bch 300 200 5141 cmr 400 100 5142 pad 500 100 5143 ptm ugm 400 200 5144 m t emr pmn ppl 150 200 5145 bch ugm 250 250 5146 pad ptm 250 200 5147 m t pad pmn ppl 50 50 5148 bch 80 50 5149 cmr 200 50 5150 ptm 150 150 5151 m t bch ugm 150 150 5152 cmr pad pmn ppl ptm 200 150 5153 ugm 200 200 5154 blg 200 1 200
7. def MT abbr pr protrusion def MT Cabbr ex expansion def MT abbr pr c protrusion codes def MT abbr ex c expansion codes def MT abbr pr inh protrusion inheritance def MT abbr ex inhf expansion inheritance def MT abbr nl noligatures def MT abbr sp spacing def MT abbr sp c interword spacing codes def MT abbr sp inh interword spacing inheritance def MT abbr kn kerning def MT abbr kn c kerning codes def MT abbr kn inh kerning inheritance def MT abbr tr tracking def MT abbr tr c tracking amount These we also need the other way round def MTCrbba protrusionfpr def MT rbba expansion ex def MT rbba spacing sp def MT rbba kerning kn def MT rbba tracking tr We can work on these lists to save some guards in the dtx file def MT features pr ex sp kn tr def MT features long protrusion expansion spacing kerning tracking Whenever an optional argument accepts a list of features we can use this com mand to check whether a feature exists in order to prevent a rather confusing Missing endcsname inserted error message The feature long form must be in tempa the type of list to ignore in 1 then comes the action def MT is feature 1 MT exp one n MT in clist tempa MT features long ifMT inlist expandafter firstofone else MT error tempa is not an available micro typographic MessageBreak feature Ignoring 1 Available features are MT features long ex
8. true false false Das Paket mit der babel Option zu laden wird die Zeichensetzung der jeweiligen ausgew hlten Sprache anpassen Mehr Information hierzu in Abschnitt 6 file name microtype Verschiedene Einstellungen f r dieses Paket werden aus einer Hauptkonfigurations datei geladen standardm ig ist dies microtype cfg siehe Abschnitt 5 7 Sie k nnen eine andere Konfigurationsdatei w hlen indem sie deren Name mittels ohne die Dateiendung angeben z B config mycrotype Changing options later key value list Innerhalb der Pr ambel akzeptiert dieses Kommando alle oben genannten Paketop tionen au er config Im Dokumentk rper kann dieser Aufruf verwendet werden um grundlegende Einstellungen der mikro typographischen Erweiterungen zu ver n dern Es akzeptiert dann alle Optionen aus Abschnitt 3 1 expansion protrusion und activate welche wiederum die Werte true false compatibility oder nocompatibility erhalten k nnen tracking kerning und spacing mit den zu l ssigen Werten true oder false Den Namen eines Fonts an die Option zu leiten ist nicht erlaubt Benutzt man dieses Kommando so k nnte man z B tempor r Fontexpansion ausschalten indem man wie folgt verf hrt DeclareMicrotypeSet DeclareMicrotypeSet FONTS FUR MIKROTYPOGRAPHIE AUSWAHLEN 11 microtypesetupfexpansion false Fonts f r Mikrotypographie ausw hlen Standardm ig wird Character Protrusion auf alle Textschriftarten angewandt
9. 100 100 100 100 100 100 100 100 100 100 100 100 H ow ou N N sg dm o e before or after lowercase characters with x height plus descender without additional optical space 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 23 CONFIGURATION FILES Interword spacing 188 50 50 i 50 50 i 50 50 50 50 H BH B H U e after colon and semicolon 200 200 200 200 H e after punctuation which ends a sentence e g period exclamation mark question mark 250 250 250 250 250 250 vd ve X Wow The order has to be reversed when enlarging is needed Questions are Is the result really better Is it overdone Try with a factor lt 1000 Should the first parameter also be used Probably What about quotation marks parentheses etc Furthermore there seems to be a pdfIEX bug with spacing in combination with a non zero spaceskip reported by Axel Berger parfillskipOpt rightskipOpt plus iem spaceskip fontdimen2 font test test par pdfadjustinterwordglue2 stbscode font t 50 test test bye Some more characters in T2A 3 m t SetExtraSpacing name T2A load default encoding T2A family cmr T cyrg 300 300 cyrb 20
10. 150 textcolonmonetary 100 H 50 50 pad texttrademark 200 50 100 150 50 50 textcolonmonetary H texttrademark textcent H mn texttrademark 3117 3118 3119 3161 3162 3163 3165 3166 3167 3168 3169 INNAN LA h2 KA h2 KA LA 2 DV WN LA NN COND oR WN Fa I 1 BW N on CONFIGURATION FILES Character protrusion 173 ugm textsterling 50 di textbrokenbar 200 300 pmn textasciidieresis 300 200 cmr textcopyright 100 pad textcopyright 200 100 pmn textcopyright 100 150 ugm textcopyright 300 cmr textordfeminine 100 100 pmn textordfeminine 200 200 ugm textordfeminine 100 200 cmr pad textlnot 300 pmn ugm textlnot 200 cmr textregistered 100 pad textregistered 200 100 pmn textregistered 50 150 ugm textregistered 300 Rer textasciimacron 150 200 cmr pad textdegree 500 100 pmn textdegree 150 150 ugm textdegree 300 200 cmr textpm 150 100 pad textpm 200 150 pmn ugm textpm 150 200 cmr textonesuperior 400 pad textonesuperior 300 100 pmn textonesuperior 200 100 ugm textonesuperior 300 300 cmr texttwosuperior 400 pad texttwosuperior 300 pmn texttwosuperior 200 100 ugm texttwosuperior 300 200
11. 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 IMPLEMENTATION Package options 127 Some packages depend on the value of pdfoutput and will get confused if it is changed after they have been loaded These packages are among others color graphics hyperref crop contour pstricks and as a matter of course ifpdf Instead of testing for each package that s not our job we only say that it was microtype that changed it This must be sufficient MT info nl Generating ifnum pdfoutput lt ne DVI else PDF fi output ifMT opt DVI space changed by MT MT fi Working on font copies ifx MT copy font relax else MT info nl Using font copies for contexts fi Fix the font sets MT map tlist c MTOfont sets MTOfix font set Protrusion ifMT protrusion edef MT active features MT active features pr L pdfprotrudechars MT pr level MT info nl Character protrusion enabled level number MT pr level ifnum MT pr factor MT factor default else MessageBreak factor number MT pr factor fi ifx MT pr unit empty else MessageBreak unit MT pr unit fi MT check active set pr else let MT protrusion relax MT info nl No character protrusion fi Expansion ifMT expansion Set up the values for font expansion if stretch has not been specified we take the default value of 20 ifnum MT stretch m n
12. MT check rlist For every new range item in MT tempsize check whether it overlaps with ranges in the existing list 0 def MT checkO rlist 1 expandafter MT check rlist 1 Do KR WN a N M M M MGM GM MD LG 00 H 33 MT check rlist Define the current new range and 3331 def MT check rlist 1 2 3 3332 def tempb 1 3333 def tempc 2 3334 MT if false 3335 MT exp cs MT map tlist c 3336 MT MT permutelist tempa MT extra context sizes 3337 MT check range 3338 MT check range recurse through the list of existing ranges 3339 def MT check range 1 expandafter MT check range 1 MT check range tempb and tempc are lower resp upper bound of the new range 2 and 8 those of the existing range 340 def MT check range 1 2 3 7 1 MT ifdim 2 m ne 342 MT ifdim tempc m ne e Both items are simple sizes IMPLEMENTATION Package options 117 3343 MT ifdim tempb 1 MT if true relax 3344 H e Item in list is a simple size new item is a range 3345 MT ifdim tempb gt 1 relax 3346 MT ifdim tempc gt 1 3347 MT if true 3348 edef tempb 1 with range tempb space to tempc 3349 relax 3350 T 3351 T 3352 H 3353 MT ifdim tempc m ne e Item in list is a range new item is a simple size 3354 MT ifdim tempb lt 2 3355 MT ifdim tempb lt 1 relax MTO if true 3356 relax 3357 H e Both items are ranges
13. N NNN N NND 09 let MT char MT char 10 ifnum MT char lt z 11 MT warn unknown 12 else N NNN N NNN If the user has specified something like fi or wanted to define a number but forgot to use three digits we ll have something left of the string In this case we issue a warning and forget the complete string 3 ifMT norest else A MT warn rest 5 let MT char m ne 6 fi 7 Mi 8 escapechar m ne 9 ifMT norest Test whether all of the string has been used up newif ifMT norest LA KA h2 h2 h2 h2 h2 DD KA b2 K NY NW 22 N MT is letter Input is a letter a character or a number 1 def MT is letter 1 2 relax 2 ifcat a noexpand 1 relax 3 edef MT char number 1 1 ifx 2 5 debug MT dinfo n1 3 gt the MT toks is a letter MT char 6 else MT norestfalse fi else ifcat noexpand 1 relax 1 edef MT char number 1 2 debug MT dinfo n1 3 gt the MT toks is a character MT chare 3 d DD NND LA b2 b2 bh LA M M M MM M M M M H ifx 2 3 ifnum MT char gt 127 MT warn ascii fi 35 else 36 MT norestfalse 37 expandafter MT is number 1 2 relax relax 38 fi 39 fi 40 fi 41 T MT is number Numbers may be specified as a three digit decimal number 029 as a hexadecimal number prefixed with 1D or as a octal number prefixed with 35 They must consist of at least three characters including the pref
14. a If it is being maintained then ask the Current Maintainer to update their communication da ta within one month If the search is unsuccessful or no action to resu me active maintenance is taken by the Current Maintainer then announce within the perti nent community your intention to take over b any other party who may distribute and or modify the Work as permitted above be liable to you for damages including any general special incidental or consequential damages arising out of any use of the Work or out of inability to use the Work including but not limited to loss of data data being rendered inaccurate or losses sustained by anyone as a result of any failure of the Work to operate with any other programs even if the Copyright Holder or said author or said other party has been advised of the possibility of such damages maintenance If the Work is a IATEX work this could be done for example by posting to comp text tex 3 a If the Current Maintainer is reachable and agrees to pass maintenance of the Work to you then this takes effect immediately upon announcement If the Current Maintainer is not reachable and the Copyright Holder agrees that maintenance of the Work be passed to you then this takes effect immediately upon announcement b 4 If you make an intention announcement as des cribed in 2b above and after three months your in tention is challenged neither by the Current Main t
15. ugm textquoteleft 300 600 textquoteright 300 600 m t bch pmn textquotedblleft 300 300 textquotedblright 300 300 blg textquotedblright 300 400 cmr textquotedblleft 500 300 textquotedblright 200 600 pad ppl ptm textquotedblleft 300 400 textquotedblright 300 400 ugm textquotedblleft 400 400 textquotedblright 400 400 T Greek uppercase letters are in OT1 encoding only xm t cmr pmn SetProtrusion m t name OTi default cmr L name emp OTI pmn name pmnj OT1 m t load default cmr load cmr default pmn load pmnj default m t encoding OT1 T cmr T encoding 0T1 0T4 pmn 1 encoding OTI cmr family cmr pmn family pmnj T m t cmr ME 50 pmn OE 50 cmr 00 150 Gamma 01 100 100 Delta 02 50 50 Theta 03 100 100 Lambda 06 50 50 Sigma 07 100 100 Upsilon 08 50 50 Phi 09 50 50 Psi Remaining slots can be found in the source file emr m t cmr pmn T1 and LY1 encodings contain some more characters first SetProtrusion m t name Ti default bch name bch T1 blg L name blg T1 cmr L name cmr T1 pad name pad T1 pmn name pmnj T1 ppl L name ppl T1 ptm L name ptm T1 ugm L name ugm T1 m t load default The default list will
16. 20 0 e 20 50 90 f 10 0 91 012 10 50 fi 2 013 10 50 f1 3 014 10 50 ffi 94 015 10 50 ffl 95 g 50 50 96 i 20 50 97 j 20 0 98 k 20 99 1 20 50 800 m 1 30 801 n 7i 30 802 o 50 803 oe 50 50 804 p 20 50 5805 q 50 5806 r 20 0 5807 s 20 30 5808 t 70 5809 u 50 50 5810 v 100 5811 w 100 5812 y 50 5813 z 50 5814 5815 5816 SetProtrusion 5817 name pmnj scit T1 5818 load pmnj it T1 5819 encoding T1 LY1 5820 family pmnj 5821 shape scit si 5822 5823 a 50 5824 Nae d 50 CONFIGURATION FILES Character protrusion 168 5825 b 20 50 5826 c 50 50 5827 d 20 0 5828 e 20 50 5829 f 10 0 5830 028 10 50 fi 5831 029 10 50 f1 5832 030 10 50 ffi 5833 031 10 50 ffl 5834 g 50 50 5835 i 20 50 5836 188 20 0 ij 5837 j 20 0 5838 k 20 5839 1 20 50 5840 m 1i 30 5841 n _ 30 5842 o 50 5843 oe 50 50 5844 p 20 50 5845 q 50 5846 r 20 0 5847 s 20 30 5848 t 70 5849 u 50 50 5850 v 100 5851 w 100 5852 y 50 5853 z 50 5854 5855 5856 SetProtrusion 5857 name pmnx scit 5858 load pmnj scit 5859 encoding OT1 5860 fa
17. 3 MT end catcodes def SetTracking MT begin catcodes MT SetTracking T Third argument may be empty newcommand MT SetTracking 3 1 let MT extra context GCempty MT set named keys MT tr c 1 debug MT dinfo i creating tracking list MT tr c name def MT permutelist tr c setkeys MT cfg 2 MT permute KV sp def tempa 3 MT ifempty tempa relax MT ifint tempa MT xdef Qn MT tr c MTOtr c name Otempa MT warning Value tempa is not a number in MessageBreak tracking set MT curr set name MT end catcodes def SetExtraSpacing MT begin catcodes MT SetExtraSpacing T newcommand MT SetExtraSpacing 3 let MT extra context Cempty MT set named keys MT sp c 1 debug MT dinfo i creating spacing list MT sp c name def MT permutelist sp c setkeys MT cfg 2 MT permute MT gdef n MT sp c MT sp c name 3 MT end catcodes def SetExtraKerning MT begin catcodes MT SetExtraKerning newcommand MT SetExtrakerning 3 let MT Cextra context Cempty MT set namedCkeys MTCkn c 1 debug MT dinfo i creating kerning list MT kn c name IMPLEMENTATION Configuration 108 2940 def MT permutelist kn c 2041 setkeys MT cfg 2 2942 MT permute 2943 MT gdef n MT kn c MT kn c name 3 2944 MT end catcodes 2945 MT set named keys We first set the name if specified then
18. 3295 debug MT dinfo nl i initialising use list for font tempa MessageBreak 3296 debug sizes csname MT MT permutelist tempa MT extra context 3297 debug sizes endcsname 3298 Y Only one list can apply to a given combination 3299 MTOifdefinedOnOT MTOGMMTOpermutelist tempa MT extra context IMPLEMENTATION Configuration 116 00 MT warning nameuse MT abbr MT permutelist list 33 3301 nameuse MT MT permutelist name will override list MessageBreak 3302 nameuse MT MT permutelist tempa MT extra context 3303 for font tempa 3304 th 3305 debug MT dinfo nl 1i initialising use list for font tempa 3306 debug ifx MT extra context empty else MessageBreak 3307 debug context MT extra context fi 3308 Y 3309 MT xdef n MT MT permutelist tempa MT extra context 3310 csname MT MT permutelist name endcsname 3311 fi 3312 A 3313 MT permute def ine Define the commands 3314 def MT permute def ine 1 3315 tempcnta csname MT cnt 1 endcsname relax 3316 MT ifdefined n TF MTOtemp 1 the tempcnta 3317 MT edef Qn MT temp 1 csname MT temp 1 the tempcnta endcsname 3318 MT let nc MT temp 1 empty 3319 MT permute reset Reset the commands def MT permuteGreset 1 tempcnta ne MT loop MT let nc MT temp 1 the tempcnta undef ined advance tempcnta ne MT ifdef ined n TF MT temp 1 the Gtempcnta iftrue iffalse MT repeat T
19. 5155 m t cmr pad ppl ptm ugm 100 200 5156 150 5157 100 150 5158 300 300 5159 pad 300 400 5160 200 300 5161 500 300 5162 300 500 5163 500 500 5164 400 700 5165 _ 0 300 5 pmn textendash 200 200 textemdash 150 150 5 textendash 200 300 textemdash 150 200 5168 textendash 500 300 textemdash 400 200 5169 ppl ptm ugm textendash 300 300 textemdash 200 200 5 bch pmn ugm textquoteleft 400 200 textquoteright 400 200 5 textquoteleft 400 400 textquoteright 400 400 5172 pad textquoteleft 800 200 textquoteright 800 200 5 textquoteleft 700 400 textquoteright 700 400 5 textquoteleft 800 500 textquoteright 800 500 5175 m t bch pmn textquotedblleft 400 200 textquotedblright 400 200 5176 blg textquotedblright 300 300 5177 cmr textquotedblleft 700 100 textquotedblright 500 300 5178 pad textquotedblleft 700 200 textquotedblright 700 200 5179 ppl textquotedblleft 500 300 textquotedblright 500 300 5180 ptm textquotedblleft 700 400 textquotedblright 700 400 CONFIGURATION FILES Character protrusion 157 5181 ugm textquotedblleft 600 200 textquotedblright 600 200 5182 5183 5184 cmr pmn 5185 SetProtr
20. A eee sa TETUR KV sp def Gtempa 1 KV sp def tempb 2 onelevel sanitize tempb MT ifdefinedCnCT MTC Ctempa alias MT warning Alias font family tempb will override alias nameuse MT tempa alias MessageBreak for font family tempa MT xdef n MT Gtempa Qalias tempb If we encounter this command while a font is being set up we also set the alias for the current font so that if DeclareMicrotypeAlias has been issued inside a configuration file the configuration file for the alias font will be loaded too MT ifdefined c T MTO family debug MT dinfo i Activating alias font tempb for MT family MT glet MT familyalias tempb yh IMPLEMENTATION Configuration 105 2817 LoadMicrotypeFile May be used to load a configuration file manually 2818 def LoadMicrotypeFile 1 2819 KV sp def tempa 1 2820 onelevel sanitize tempa 2821 MT exp one n MT in clist tempa MTOfile list 2822 ifMT inlist 2823 MT vinfo Configuration file mt tempa cfg already loaded 2824 else 2825 MT xadd MT file list tempa 2826 MT begin catcodes 2827 InputIfFileExists mt tempa cfg 7 2828 edef MT curr file mt tempa cfg 2829 MT vinfo Loading configuration file MT curr file 2830 Hi 2831 MT warning Configuration file mt tempa cfg MessageBreak 2832 does not exist 2833 Y 2834 MT end catcodes 2835 fi 2836 14 3 3 Disa
21. Py Vy 301 Z Z Z v Z 302 z z z v zb 4303 textellipsis 4304 305 16 Contributed by Maciej Eder 17 Cf http tug org pipermail tex live 2008 August 017204 html CONFIGURATION FILES Character inheritance 140 15 5 6 T5 The Vietnamese encoding T5 It is so crowded with accented and double accented characters that there is no room for any ligatures 06 DeclareCharacterInheritance 07 encoding T5 08 A SA A 7A h A d A 7A u A 09 Acircumflex Acircumflex Acircumflex h Acircumflex d Acircumflex 0 breve Abreve Abreve h Abreve d Abreve 1 a a a 7a h a M a a u a 2 acircumflex acircumflex acircumflex h acircumflex dNacircumflex 3 abreve abreve abreve h abreve d abreve 4 D DJ 5 d dj 6 E VE VE VE M E M E VE 3 3 3 31 7 Ecircumflex Ecircumflex Ecircumflex h Ecircumflex d Ecircumflex 318 e e e e h e M e e 319 ecircumflex ecircumflex ecircumflex h ecircumflex d ecircumflex 320 I L VI I h ILS I 321 i Ni Vi Ni NB i d i i 322 0 0 0 0 h 0 d 0 70 horn 0 323 Ocircumflex Ocircumflex Ocircumflex h 0Ocircumflex d Ocircumflex 324 Ohorn Ohorn Ohorn h Ohorn d Ohorn 325 o 0 0o o h 0 d 0 o horn o
22. Set all protrusion codes of the font def MT set all pr 1 2 debug MT dinfo nl1 3 lp rp setting all to 1 2 let MT temp Cempty MT ifempty 1 relax g addto macro MT temp lpcode MT font tempcnta 1 relax MT ifempty 2 relax g addto macro MT temp rpcode MT font tempcnta 2 relax MT do font MT temp T All protrusion codes are zero for new fonts However if we have to reload the font due to different contexts we have to reset them This command will be changed by microtypecontext if necessary def MT reset pr codes MT set all1 pr z ze let MT reset pr codes relax If the font is letterspaced we have to add half the letterspacing amount to the margin kerns This will be activated in MT set tr codes def MT the pr code tempcntb MT requires pdftex6 def MT the pr code tr numexpr tempcntb MT letterspace 2 relax relax Split up the values and set the codes def MT set codes 1 ifx relax 1 empty else MT split codes 1 relax expandafter MT set codes fi F The keyval package would remove spaces here which we needn t do since SetProtrusion ignores spaces in the protrusion list anyway MT get char unit may mean diffe rent things def MT split codes 1 2 3 relax def tempa 1 ifx tempa empty else MT get slot ifnum MT char gt m ne MT get char unit csname MT MT feat split val endcsname 2 relax fi fi def MTCpr split val 1 2 relax
23. blg cmr ppl texttrademark 200 200 pmn texttrademark 50 50 ugm texttrademark 100 150 bch ugm textcent 150 ptm textcent 100 100 bch textsterling 150 ugm textsterling 50 bch textbrokenbar 200 200 blg textbrokenbar 250 250 ugm textbrokenbar 200 300 Bun textasciidieresis 300 400 bch cmr pad ptm ugm textcopyright 100 100 en textcopyright 100 150 ppl textcopyright 200 200 bch cmr ugm textordfeminine 100 200 pad pmn textordfeminine 200 200 bch cmr pad pmn ugm textlnot 200 DE textlnot 200 100 bch cmr pad ptm ugm textregistered 100 100 uio Ntextregistered 50 150 ppl textregistered 200 200 See textasciimacron 150 200 t ppl ptm textdegree 300 300 bch textdegree 150 200 blg ugm textdegree 200 200 cmr pad textdegree 400 400 pmn textdegree 150 400 bch cmr pad pmn ugm textpm 150 200 blg textpm 100 100 ptm textpm 50 80 bch blg ugm texttwosuperior 100 200 cmr texttwosuperior 50 100 pad pmn texttwosuperior 200 200 5999 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 LA h2 KA KA LA LA B OG Go HM ra N SI N N oo 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 604 604 60 6044 604 6046 6047 604
24. currext eplain can handle package options 3736 plain 3737 H edef MT temp noexpand setkeys 1 3738 csname usepkg options usepkg pkg endcsname 3739 plain 3740 MT temp 3741 MT clear options 2 For key val in class options 3743 def MT getkey 1 2 nil 1 3744 MT ProcessOptionsWithKV MT 3745 plain relax 3746 package Now we can take the appropriate actions We also tell the log file which options the user has chosen in case it s interested 3747 MT addto setup 3748 ifMT draft We disable most of what we ve just defined in the 3748 lines above if we are running in draft mode 3749 MT warning nl draft option active MessageBreak 3750 Disabling all micro typographic extensions MessageBreak 3751 This might lead to different line and page breaks 3752 let MT setupfont relax 3753 renewcommand LoadMicrotypeFile 1 3754 renewcommand microtypesetup 1 3755 renewcommand microtypecontext 1 3756 renewcommand lsstyle 3757 else For DVI output the user must have explicitly passed the expansion option to the package 3758 ifnum pdfoutput lt ne 3759 ifMT opt expansion else 3760 MT expansionfalse 3761 fi 3762 fi pdfIEX can create DVI output too However both the DVI viewer and dvips need to find actual fonts Therefore expansion will only work if the fonts for different degrees of expansion are readily available
25. def tempb 1 MT Cifempty tempb relaxt MT scale to em lpcode MT f ont MT char MTO the pr code debug MT dinfo n1 4 lp MT char number lpcode MT font MT char 1 yh def tempb 2 MT Cifempty tempb relaxt MT scale to em MT scale to em MT get charwd 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 IMPLEMENTATION Font setup 63 rpcode MT f ont MT char MTO the pr code debug MT dinfo n1 4 rp MT char number rpcode MT font MT char 2 yh Now we can set the values for the inheriting characters Their slot numbers are saved in the macro MT inh list name slot number MT ifdefined cOT MT pr inh name MT ifdefined n T MT inh MT pr inh name MT char MT exp cs MT mapO tlist c MT inh MT pr inh name MT char MT set prCheirs th yh T Since pdf TEX version 0 14h we have to adjust the protrusion factors i e convert numbers from thousandths of character width to thousandths of an em of the font We have to do this before setting the inheriting characters so that the latter inherit the absolute value not the relative one if they have a differing width e g the ff ligature Unlike protcode tex and pdfcprot we do not calculate with lpcode resp rpcode since this would disallow protrusion factors larger than the character width since 1r pco
26. pad pmn D lt L 50 ugm D lt L 70 ugm E lt L 50 m t bch cmr pad pmn ptm F lt L 50 ugm BS L 70 bch pad pmn G 50 ugm G 50 50 big I 150 150 m t cmr pad pmn ppl ptm ugm J 50 bch blg J 100 Iblg K lt L 50 bie K 50 m t bch cmr pad pmn ppl L 50 e L 4 150 ptm L L 80 ugm L 120 bch pad pmn ugm 0 50 50 pad OE 50 ugm OE 50 50 blg P 100 ugm P 4 50 bch pad pmn Q 50 70 ugm Q 50 50 bch R 50j ugm R 1 mot m t bch cmr pad pmn ppl ptm T 50 50 big T 100 100 ugm T 70 70 m t bch cmr pad pmn ppl ptm v 50 50 blg ugm V 70 70 m t bch cmr pad pmn ppl ptm W 50 50 ugm N 70 70 m t bch cmr pad pmn ppl ptm X 50 50 ugm X 50 70 m t bch cmr pad pmn ppl Y 50 50 blg ptm ugm Y 80 80 ugm Z 50 50 ble f 150 100 blg i 150 150 blg j 100 100 m t bch cmr pad pmn ppl ptm K lt L Bok Cr c Or oc oi e Sad d Sa 1 2 4613 4 5 4616 e e e 4 cd cd oC WN oO 8 9 80 ce c 4581 4582 4583 4584 4585 586 587 4588 589 590 4591 4592 4593 594 595 596 597 4598 4599 4600 4601 4602 603 4604 4605 4606
27. pad ptm I 50 pmn I 20 50 cmr ptm J 100 pad J 50 T 5029 pmn J 20 5030 cmr pad ppl ptm K 50 T 5031 pmn K 20 c 3 23 Z a 501 501 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5032 cmr pad ppl ptm L 50 5033 L 20 50 ugm L 100 cmr ptm M 50 T pmn N lt L 30 cmr ptm N 50 T pmn N 30 bch pmn ppl ptm 0 50 T cmr pad 0 100 T ugm 0 70 50 ppl ptm NOE 50 T pad NOE 100 T cmr pad ppl ptm P 50 T pmn P 20 50 bch pmn ppl ptm Q 50 cmr pad Q 100 ugm Q 70 50 cmr pad ppl ptm R 50 T pmn R 20 bch cmr pad ppl ptm S 50 pmn S 20 30 bch cmr pad ppl ptm 150 TL pmn 20 30 bch pmn ugm T 470 35 cmr pad ppl ptm T 100 cmr pad ppl ptm U 50 T pmn U 50 50 cmr pad pmn ugm v 100 ppl ptm V 100 50 5034 5035 5036 5037 5038 5039 5040 5041 5042 3 4 5 504 5044 504 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5
28. vartriangleleft lhd 4 100 trianglerighteq unrhd 45 100 trianglelefteq unlhd 46 100 100 bigstar 48 50 50 blacktriangledown 49 100 blacktriangleright 4A 100 blacktriangleleft 4B 150 dashrightarrow the arrow ac 150 3 dashleftarrow 4D 50 50 vartriangle AE 50 50 blacktriangle 4F 50 50 triangledown 50 50 50 Neqcirc 56 150 Rrightarrow 57 150 Lleftarrow 58 100 300 checkmark SC 50 50 angle ED 50 50 measuredangle SE 50 50 sphericalangle SBF 50 varpropto 60 100 100 smallsmile 61 100 100 smallfrown 62 50 Subset 63 50 Supset 66 150 150 curlywedge 67 150 150 curlyvee 68 50 150 leftthreetimes 69 100 50 rightthreetimes 6C 50 50 bumpeq 6D 50 50 Bumpeq SE 100 111 GF 100 ggg 70 50 100 ulcorner 71 100 50 urcorner 75 150 200 dotplus 76 50 100 backsim 78 50 100 llcorner 79 100 50 lrcorner 7C 100 100 intercal 7D 50 50 circledcirc TE 50 50 circledast 7F 50 50 circleddash Remaining slots in the source file T msa Symbol font b msb SetProtrusion name encoding
29. zpeu mvs SORY NN AARETE ea RE E EE E 1173 W CHARACTER INHERITANCE 4174 4175 m t zpeu mvs 4176 m t 15 5 1 OT1 Glyphs that should possibly inherit settings on one side only 012 fi ligature 013 fl 014 ffi 015 ff JE 4177 NDeclareCharacterInheritance 78 encoding OT1 T 79 f 011 ff 4180 i MJ 4181 j j 4182 0 0 83 o Do 4184 85 15 5 2 T1 Candidates here 028 fi 029 fl 030 ffi 031 M 156 IJ ligature since NI 2005 12 01 accessible as NIJ 188 ij ij 4186 DeclareCharacterInheritance 87 encoding T1 TL 88 A NA VPA VA VA NA Nr A k A u A 4189 Na Va Na Va V a Nr a k a u a 90 C c C v C 91 c c 8 NY c 4192 v D DH 4193 v d dj 4194 E VPE VE WE k E W EJ 4195 e e 7e e k e v e 4196 027 ff 97 u G 98 u g 4199 x KE AZ ENTE ATE els 4200 iN 31 1 eg E NiE 4201 j y L L v L 1 1 v 1 N 7N v N n n v n 0 0 0 0 0 0 H 0 No NV 0 0 N70 N70 V0 MH o eR Ae R Vr Ww r US Nc S v S SS s c s v s c T v T D Ro Ww w w to Wm m Ww Ww Ww Ww Ww m m Ww m Ww Ww mw wm Ww m m Ww W md Yun mo OD S MM G H Hm Oho DO Go CO o K e oam oa Ra Ng LA h2 KA KA LA bh2 KA KA KA LA 2 Ka CONFIGURATION F
30. 4258 e k e CONFIGURATION FILES Character inheritance 139 011 X ff i j L M VN n 0 V0 o o VS s Z Z z z 4264 aa Ww w w wm m m Ww Ww Wm Ww Ww Wm LA N bm Do OB BrP G M Lh 15 5 5 QX The Central European QX encoding Ligatures 009 fk 012 fi 013 fl 014 ff 015 f JE ze CE 2 N 4 DeclareCharacterInheritance 4275 encoding QX 4276 A VA VPA VA VA NA NK A AA 4277 a Va Va Va Va V a Nk a aa 4278 C C c Ch 4279 c c c c 4280 D DH 4281 E E E E E k E 4282 e e e 7e e k e 4283 011 ff 4284 I I I I I k I 285 i Ni Vi Ni Vi NK i M 286 j t0j 4287 L L 4288 1 l 4289 N VN VN 4290 n n n 4291 O 0 0 0 70 70 0 7 4292 o 0 0 0 0 0 o The Rumanian textcommabelow accents are actually replacements for the c variants which had previously and erroneously been included in QX encoding They are still kept for backwards compatibility 4293 S VS Nc S Ncextcommabelow S v S 4294 S s c s Ncextcommabelow s v s 4295 T Nc T textcommabelow T 4296 t Nc t textcommabelow t 4297 U U U U U k U 4298 u Nu Vu Vu u k u 4299 Y y Y 4300 y
31. 4903 4904 4905 4906 4907 4908 4910 cmr 900 bch 901 902 o Qa a GG cmr bch cmr Ie 909 a o o De Nw cmr bch I NEIL FAT ER EN CU ZU SE o 3 I family family H _ 100 100 textbackslash textbackslash textquotedblleft textquotedbl quotesinglbase quotesinglbase guilsinglleft guilsinglleft guillemotleft guillemotleft textbraceleft textbraceleft cmr bch U H H H U H U 150 200 200 300 200 600 300 300 400 400 400 400 400 300 400 400 200 200 300 200 200 s 400 200 1 2 4913 4 4915 4922 4923 4924 4925 A926 4927 A929 4930 4931 4933 4934 4941 4949 textless 916 4917 4918 cmr bch 919 920 921 pmn SetProtrusion L name load encoding OT1 family pmnx H H 1 230 180 928 SetProtrusion load encoding family 932 H pmnx 935 1 230 180 4936 4937 938 939 940 SetProtrusion name load encoding family H H 942 pmnx 4943 4944 A945 4946 4947 pmn 1 230 180 200 100 Minion with lining numbers pmnx OT1 pmnj default name pmnx T1 pmnj T1 T1 LY1 pmnx T2A pmnj T2A T24 textgreater quotedblbase quotedblbase guilsinglright guilsinglright guillemotright guillemotright textbraceright tex
32. 872 ptm textbraceleft 200 200 textbraceright 200 300 4873 textless 200 100 textgreater 100 200 4874 textminus 200 200 textdegree 300 300 875 m t copyright 100 100 textregistered 100 100 876 ptm copyright 100 150 textregistered 100 150 4877 ptm textxgeq 4 _ 100 textxleq 100 4878 ptm textalpha 50 textDelta 70 70 879 ptm textpi 50 80 textSigma 70 880 ptm textmu 80 texteuro 50 50 4881 ptm textellipsis 150 200 textasciitilde 80 80 882 ptm textapprox 50 50 textinfty 100 100 883 ptm textdagger 150 150 textdaggerdbl 100 100 4884 ptm textdiv 50 150 textsection 80 80 4885 ptm texttimes 100 150 textpm 50 80 886 ptm textbullet 150 150 textperiodcentered 300 300 887 ptm textquotesingle 500 500 textquotedbl 300 300 4888 ptm textperthousand 50 889 890 4891 m t ptm T5 is based on OT1 it shares some but not all extra characters of T1 All accented characters are already taken care of by the inheritance list 4892 cmr bch 4893 SetProtrusion 1894 cmr L name cmr T5 21 Contributed by Maciej Eder 4896 bch 4897 bch 4898 CONFIGURATION FILES Character protrusion 152 load name load encoding T5 895 cmr cmr default bch T5 bch default 4899
33. IMPLEMENTATION Font setup 78 expandafter ifx MT ls basefont relax else debug MT dinfo nl 1 fixing base font aftergroup MT set lsbasefont fi T pdfIEX 1 40 0 1 40 3 disabled all ligatures in letterspaced fonts package MT requires pdftex7 def MT tr noligatures 7 ifx MT tr ligatures empty MT noligatures MT lsfont undefined else MT noligatures MT lsfont MTO tr ligatures fi Y H def MT tr noligatures 7 MT warningen1 Disabling selected ligatures is only possible since MessageBreak pdftex 1 40 4 Disabling all ligatures instead MT glet MT tr noligatures relax T D A new skip for outer spacing newskip MT outer space Adjust interword spacing fontdimen 2 4 for inner and outer space For inner spacing the font dimensions will be adjusted the settings for outer spacing will be remembered in a macro def MT tr set space 1 2 3 4 5 6 debug MT dinfo nl2 orig space the fontdimen2 MT lsfont debug the fontdimen3 MT lsfont the fontdimen4 MT lsfont debug MessageBreak 1 2 3 4 5 6 let MT temp Cempty MTOtr set space 1 4 2 Gempty MTOtr set space 2 5 3 Oplus MTOtr set space 3 6 4 Ominus MT glet nc MT outer space expandafter string font name MT temp debug MT dinfo nl2 inner space the fontdimen2 MT l1sfont debug the fontdimen3 MT lsfont the fontdimen4 MT lsfont debug MT dinfo nl2 outer space MT temp T If o
34. MT default ex set2779 MT default0tr set 2 80 278 MT default sp set_ dus MT default kn set 57 2 MT set default set2784 2785 2786 2787 788 789 7 90 N t2 G 14 3 2 DeclareMicrotypeVariants MT variants 2791 2792 2793 94 N NN gt h MT DeclareVariants Si 797 98 od LA h2 h2 K h2 A b Qo DeclareMicrotypeAlias 04 je LA h2 h2 h2 LA LA LA LA L Oo 00 Qo Gi 2813 2814 2815 2816 IMPLEMENTATION Configuration 104 def MT set default set 1 2 7 KV sp def tempa 2 MT ifdef ined nO TF MTO 1 set Otempa debug MT dinfo i declaring default nameuse MT abbrO 1 set tempa MT xdef n MT default 1 set tempa H MT error The nameuse MT abbr 1 set tempa is not declared MessageBreak Cannot make it the default set Using set MessageBreak all instead MT xdef Qn MT defaultO 1 set all yh Y Variants and aliases Specify suffixes for variants see fontname variants map The starred version appends to the list let MT variants empty def DeclareMicrotypeVariantst ifstar MT DeclareVariants let MT variants empty MT DeclareVariants wy def MT DeclareVariants 1 MT map clistO n 1 KV sp def tempa 1 onelevel sanitize tempa xdef MT variants MT variants tempa 3 This can be used to set an alias name for a font so that the file and the settings for the aliased font will be loaded
35. MT ifempty 1 relax def MT extra context 1 3046 else 3047 MT error MT MT space isn t set up for expansion contexts MessageBreak 3048 Ignoring context key on line 3049 Either move the settings inside the preamble MessageBreak 3050 or load the package with the copyfonts option 3051 fi 3052 th 3053 T Protrusion contexts may also work without copying the font so we don t issue an error but only a warning The problem is that pdfIEX only allows one set of protrusion factors for a given font within one paragraph those that are in effect at the end of the paragraph will be in effect for the whole paragraph When different fonts are loaded like in the example with the footnote markers we don t need to copy the fonts 3054 define key MTOpr c context 3055 MT ifempty 1 relax 3056 MT glet MT copy f ont MT copy font 3057 def MT extra context 1 3058 T 3059 T 3060 MT addto setup 7 3061 define key MT pr c context 3062 MT ifempty 1 relax def MT extra context 1 3063 ifx MT copy font MT copy font else 3064 MT warning nl If protrusion contexts don t work as expected 3065 MessageBreak load the package with the copyfonts option 3066 fi 3067 T 3068 T 3069 lua 3070 H 3071 define key MT ex c context U A 3072 MT error Expansion contexts only work with pdftex 1 40 4 MessageBreak 3073 or later Ignoring context key on line 3074 Upgrade pdfte
36. MT outer kern dimexpr MT curr ls sp fontdimen6 font name 2000 relax kern MT outer kern font name 1 kern MTCouter kern Lat T pdfTEX cannot letterspace fonts that already are letterspaced Therefore we have to save the base font in font name base The previous solution checking the macro s meaning with pdfmatch where we were loading the base font via the font primitive again would destroy all previously set up micro typographic features of the font def MT get 1s basefont xdef MT 1s basefont csname expandafter string font name base endcsname expandafter ifx MT ls basefont relax MT exp two c MT glet MT 1s basefont font name else debug MT dinfo nl 1 fixing base font MT exp two c let font name MT ls basef ont fi T If tracking is switched off in the middle of the document or if textls is called with a zero letterspacing amount we have to retrieve the base font and select it def MT set lsbasef ont MT exp two c let font name MT 1s basef ont def MT setO tr zero debug MT dinfo nl 1i zero tracking xdef MT 1s basefont csname expandafter string font name base endcsname MT tr noligatures MT outer space MT tr set space MTO tr set space 3 4 0 SOSS ES A NNNNANNNNANAN 760 761 762 763 764 765 766 767 768 769 770 77 772 773 77 75 76 INN 77 778 779 780 781 782 783 784 785 786 787 788 789 790
37. MT warningen1 Unknown slot number of character MessageBreak the MT toks IMPLEMENTATION Font setup 93 2349 MT warn maybe inputenc MessageBreak 2350 in font encoding MT encoding in MT curr list name 2351 MT warn maybe inputenc In case an input encoding had been requested 352 def MT warn maybe inputenc 353 MT ifdefined nOT 354 MT MT feat MT cat csname MT MT feat MT cat Cname endcsname inputenc 355 input encoding nameuse 356 MT MT feat MT cat csname MT MT feat MT cat name endcsname inputenc M M MM M M 14 2 9 Hook into RTEX s font selection We append MT setupfont to pickup font which is called by TEX every time a font is selected We then check whether we ve already seen this font and if not set it up for micro typography This ensures that we will catch all fonts and that we will not set up fonts more than once The whole package really hangs on this command In contrast to the pdfcprot package it is not necessary to declare in advance which fonts should benefit from micro typographic treatment Also only those fonts that are actually being used will be set up For my reference e pickup font is called by selectfont wrong fontshape or getanddefine fonts for math e pickup font calls define newfont e define newfont may call inside a group wrong fontshape which in turn will call pickup font and thus define newfont again o
38. T CONFIGURATION FILES Character protrusion 159 01 m t cmr pmn 02 SetProtrusion 03 m t name T2A it default 5304 cmr L name cmr it T2A 5305 pmn name pmnj it T2A 5306 m t load 0T1 it 5307 cmr load cmr it 5308 pmn load pmnj it 5309 encoding T2A 5310 cmr family cmr pmn family pmnj m t pmn Shape it sl cmr shape it CYRA 100 50 CYRA 50 CYRB 50 CYRV 50 CYRV 20 50 CYRG 100 CYRG 10 CYRD 50 CYRE 50 CYRE 20 50 CYRZH 50 CYRZ 50 CYRZ 20 50 CYRI 50 CYRI 30 CYRISHRT 50 CYRK 50 CYRK 20 CYRL 50 CYRM 50 CYRM 30 CYRN 50 CYRO 100 NCYRO 50 CYRP 50 CYRR 50 CYRR 20 50 CYRS 100 NCYRS 50 CYRT 100 CYRT 70 CYRU 100 CYRU 50 CYRF 100 CYRH 50 CYRC 50 CYRCH 100 CYRSH 50 CYRSHCH 50 CYRHRDSN 100 CYRERY 50 CYRSFTSN 50 CYREREV 50 CYRYU 50 CYRYA 50 NCYRYA 20 CONFIGURATION FILES Character protrusion 160 5361 cyrr 50 5362 _ 100 5363 _ 100 200 5364 031 100 fl 5365 v t 100 5366 m t textbackslash 100 200 quotedblbas
39. cmr textthreesuperior 400 pad textthreesuperior 300 pmn textthreesuperior 200 100 ugm textthreesuperior 300 200 ugm textmu 100 pmn textasciiacute 300 200 cmr textparagraph 200 pmn textparagraph 100 cmr textperiodcentered 500 500 pad pmn ugm textperiodcentered 300 400 cmr textordmasculine 100 100 pmn textordmasculine 200 200 ugm textordmasculine 300 200 cmr texteuro 200 pad texteuro 100 pmn texteuro 100 50 cmr texttimes 200 200 pad texttimes 200 100 pmn texttimes 70 100 ugm texttimes 200 300 cmr pad textdiv 200 200 pmn textdiv 150 200 ugm textdiv 200 300 ugm textsection 200 ugm textonehalf 50 100 ugm textonequarter 50 100 ugm textthreequarters 50 100 gm textsurd L 100 CONFIGURATION FILES Character protrusion 174 6177 6178 cmr pad pmn ugm 15 8 6 Computer Modern math Now to the math symbols for Computer Modern Roman Definitions have been extracted from fontmath 1tx I did not spend too much time fiddling with these settings so they can surely be improved The math font operators also used for the mathrm and mathbf alphabets is OT1 cmr which we ve already set up above It s declared as DeclareSymbolFont operators 0T1 cmr m n SetSymbolFont operators bold 0T1 cmr bx n
40. die im Dokument genutzt werden und eine grundlegende Auswahl an Fonts wird Fontexpansion unterzogen Sie wollen vielleicht anpassen welche Schriftarten den Vorzug bekommen sollten mikro typographisch behandelt zu werden Dies kann geschehen indem man Font Sets deklariert und ausw hlt diese Font Sets werden mittels Font Attributen spezifiziert die zutreffen m ssen features set name set of fonts Dieses Kommando deklariert ein neues Font Set auf welches die the mikro typographischen Erweiterungen angewendet werden Das optionale Argument kann eine mit Komma separierte Liste von Features enthalten auf die das jeweilige Set beschr nkt werden soll Die mit Stern versehene Variante deklariert und aktiviert das Font Set gleichzeitig Das Font Set wird durch den NFSS Font Attributen zugewiesene Werte definiert Kodierung Familie Serie Form und Gr e siehe auch ATEX 2e font selection Wir fangen mit einem Beispiel an Dieses Paket definiert einen Font namens pasictext in der Hauptkonfigurationsdatei wie folgt DeclareMicrotypeSet basictext encoding 0T1 T1 T2A LY1 0T4 0X T5 family rm sf series md size normalsize footnotesize small large Wenn Sie nun UseMicrotypeSet protrusion basictext in der Pr ambel des Dokuments aufrufen werden nur Fonts mit den Kodierungen OTI T1 T2A LY1 OT4 QX oder T5 aus Roman oder Sans Serif Familien nor malen oder medium Serien u
41. diejenigen die getrennt werden m ssen durch das Einf gen von kernOpt oder babel s Abk rzung oder deaktivieren Sie diese und sch tzen jene Liganten welche gesch tzt werden m ssen durch umschlie en mit dem lslig Befehl Damit liefern folgende L sungen das gleiche Ergebnis n mlich Ausfidtslofigfeit SetTracking no ligatures f encoding LY family yfrak 100 textfrak lsstyle Aus s kern0pt ichts los kern0pt igkeit SetTracking no ligatures f s c encoding LY family yfrak 100 textfrak lsstyle Au lslig s si lslig ch t lslig s losigkeit Diese drei Befehle mitsamt der letterspace Option beschrieben in Abschnitt 3 4 sind auch in dem alternativen letterspace Paket enthalten welches ansich eine sehr stark abgespeckte Version von microtype ist das eine Unterstiitzung fiir alle anderen Erweiterungen wegl sst zudem wurden die M glichkeiten des SetTracking Befehls weggelassen und alle f Liganten werden deaktiviert innere und u ere Abst nde und der u ere Buchstabenabstand wurden auf ihre Standartwerte zur ckgesetzt so wie in Abschnitt 5 3 beschrieben Wenn Sie es bevorzugen auf microtype s Besonderheiten zu verzichten k nnen Sie stattdesen das letterspace Paket laden Beide Pakete k nnen nicht zur gleichen Zeit benutzt werden Im Gegensatz zu microtype welches ATEX verlangt arbeitet das letterspace Paket auch mit eplain oder auch nur mit miniltx beim Gebrauch von eplain
42. ex codes MT set ex codes n MT expandfont Expand the font 1 def MT expandfont 342 pdffontexpand MT font MT stretch MT shrink MT step MT auto relax 3 MT set all ex At first all expansion factors for the characters will be set to 1000 respectively MT reset ef codes the factor of this font MT reset ef codes MT ex split val MT warn ex too large MT get ex opt MT ex factor MT stretch MT shrink MT step MT auto IMPLEMENTATION Font setup 69 344 def MT set all ex 1 345 debug MT dinfo n1 3 ex setting all to number 1 346 MT do font ef code MTOf ont tempcnta 1 relax 347 348 def MT reset ef codes MT set al1l ex MT ex factor However this is only necessary for versions prior to 1 20 9 MT requires pdftex4 0 def MT reset ef codes 1 ifnum MT ex factor m else 2 MT reset ef codes 3 fi 4 T 5 6 let MT reset ef codes MT reset ef codes There s only one number per character 58 def MT ex split val 1 relax 59 tempcntb 1 relax Take an optional factor into account 360 ifnum MT ex factor m else 361 MT scale tempcntb MT ex factor m 362 Mi 363 ifnum tempcntb gt MT ex max 364 MTQwarn ex too large MT ex max 365 else 366 ifnum tempcntb lt MT ex min 367 MTQwarn ex too large MT ex min 368 fi 369 Mi 370 efcode MT font MT char tempcntb 371 debug MT dinfo n1 4 ef MT char number
43. kerning spacing nonfrench DeclareMicrotypeBabelHook french francais acadian canadien kerning french spacing DeclareMicrotypeBabelHook turkish kerning turkish spacing Note on admissible characters All printable ASCII characters are allowed in the settings with the following exceptions on the left hand side the replacements on the right N textbackslash textbraceleft textbraceright textasciicircum Lee Ne ME Comma and equal sign must be guarded with braces to keep keyval happy Character commands are allowed as far as they have been defined in the proper IATEX way that is when they have been assigned a slot in the font encoding with DeclareTextSymbol or NDeclareTextComposite Characters defined via Nchardef are also possible Ligatures and mathchardefed symbols have to be specified numerically Of course numerical identification is possible in any other case too 8 bit characters are also admissible provided they have been declared in the input encoding file They should however only be used in private configuration files where the proper input encoding is guaranteed or else in combination with the inputenc key CONFIGURATION FILES Character inheritance 137 15 5 Character inheritance First the lists of inheriting characters We only declare those characters that are the same on both sides i e not CE for O 4170 m t 1171 m t
44. microtype features set name Dieses Kommando aktiviert ein vorher durch DeclareMicrotypeSet deklariertes Font Set Nutzt man das optionale Argument so kann man begrenzen wieviele Features auf das Set angewendet werden Diese Anweisung hat nur einen Effekt wenn das Features in den Paketoptionen aktiviert wurde features set name Falls ein Feature aktiviert ist aber kein Font Set explizit gew hlt wurde so Diese Ubersetzungen geschehen zum AtBeginDocument was bedeutet dass Anderungen an den Standardwerten innerhalb der Pr ambel auch ber cksichtigt werden Nur falls Font Standards AtBeginDocument vom Benutzer selbst ge ndert werden m ssen Sie microtype nach diesen nderungen laden MICRO FEINABSTIMMUNG 13 Tabelle 2 Vordefinierte Font Sets Set Name Font attributes Kodierung Familie Serie Shape Gr e all D g g D alltext Textkodierungen e e e allmath TS1 OML OMS U basictext Textkodierungen rm md S normalsize basicmath OML OMS sf footnotesize small large smallcaps Textkodierungen e e keck e footnotesize Textkodierungen D D small Tl scriptsize Textkodierungen D D footnotesize TS1 normalfont encoding family series shape normalsize Textkodierungen OT1 T1 T2A LY1 OT4 QX T5 8 default werden die von diesem Befehl deklarierten Sets aktiviert Standardm ig wird das alltext Font Set f r Zeichenherv
45. or or ol ol C D N 460 61 462 w 463 464 465 466 467 468 69 70 471 3472 IMPLEMENTATION Package options 119 define key MT 1 true CA MT map clist n 1 KV0 sp def MTQval 1 MT ifempty MT val relax csname MT 1true endcsname MT ifstreq MT val true relax o MT ifstreq MT val false csname MT 1false endcsname H edef tempb csname MTCrbba 1 endcsname MT opt def set 1 yh yh th th yh T The true false options draft final may be inherited from the class options auto selected babel DVIoutput defersetup copyfonts def MT def bool opt 1 2 define key MT 1 true CA def tempa 1 MT ifstreq tempa true relax MT ifstreq tempa false relax MT optwarn admissible 1 1 def tempa false Y 3 2 3 Boolean options that only set the switch MT map clist n draft selected babel Hi MT def bool opt 1 csname MT 1 tempa endcsname MT def bool opt auto csname MT auto tempa endcsname MT opt autotrue The DVIoutput option will change pdfoutput immediately to minimise the risk of confusing other packages MT def bool opt DVIoutput csname if tempa endcsname ifnum pdfoutput gt z MT opt DVItrue fi pdf output z else ifnum pdfoutput lt ne MT opt DVItrue fi pdfoutput ne fi T Setting the defersetup option to false will restore the old behaviour where the setup took place at the time when the package was
46. txfonts DeclareMicrotypeAlias qtm ptm TeX Gyre Termes formerly qfonts QuasiTimes More Times variants to be checked pns mns TimesNewRomanPS mnt Times NewRomanMT TimesNRSevenMT mtm TimesSmallTextMT pte TimesEuro pa ptt TimesTen TimesEighteen TimesModernEF The eulervm package virtually extends the Euler fonts DeclareMicrotypeAlias zeur eur Euler VM DeclareMicrotypeAlias zeus eus MicroPress s Charter version chmath DeclareMicrotypeAlias chr bch CH Math The mathdesign package provides math fonts matching Bitstream Charter and URW Garamond 48 49 CONFIGURATION FILES Interaction with babel 136 DeclareMicrotypeAlias mdbch bch mathdesign Charter DeclareMicrotypeAlias mdugm ugm mathdesign URW Garamond URW Letter Gothic is similar enough to Bitstream Letter Gothic to share the configuration DeclareMicrotypeAlias ulg blg URW LetterGothic gt Bitstream LetterGothic12Pitch Euro symbol fonts to save some files DeclareMicrotypeAlias zpeus zpeu Adobe Euro sans gt serif DeclareMicrotypeAlias eurosans zpeu Adobe Euro sans gt serif DeclareMicrotypeAliasfeuroitcs euroitc ITC Euro sans gt serif Interaction with babel Contexts that are to be set when switching to a language GI aaa Eaa R eege Tri INTERACTION WITH THE babel PACKAGE DeclareMicrotypeBabelHook english UKenglish british USenglish american
47. verlangt character dimension character Diese Option wird in Abschnitt 5 1 erkl rt ebenso das Kommando SetProtrusion Seien sie vorsichtig bei Benutzung dieser Optionen Fontexpansion true false true Wie bereits im Kapitel 1 angemerkt k nnen die expandierten Versionen der Fonts automatisch erstellt werden Diese Option ist standardm ig an wenn pdflEXVersion 1 20 oder h her betr gt und der Output Modus PDF ist an sonsten ist die Option deaktiviert Falls auto auf false gesetzt ist m ssen die einzelnen Fonts aller Expansionsstufen bereits existieren mit nach dem Schema font name expansion value benannten Dateien z B cmr12 10 wie beschrieben in pdf TEX manual Automatische Fontexpansion funktioniert nicht mit Bitmap Fonts weswegen Sie falls Sie die Computer Modern Roman Fonts in T1 Kodierung nutzen entweder cm super Fonts installieren oder die Latin Modern Fonts package Imodern benutzen sollten Beil ufig bemerkt Type 1 Format und T1 Encoding h ngen in keiner Weise miteinander zusammen abgesehen davon dass beide mit einem T anfangen und mit einer 1 enden stretch shrink step selected 3 4 letterspace 3 5 DVIoutput OPTIONEN Tracking Letterspacing 9 integer 20 Sie k nnen bestimmen wie sehr ein Font maximal gestreckt bzw geschrumpft werden kann Die Zahl wird durch 1000 dividiert sodass ein Stretch Limit von 10 bedeutet dass ein Font um bis zu 1 e
48. you can load a minimally larger font for the paragraph in question E g for a document typeset in 10 pt SetExpansion stretch 30 shrink 60 step 5 encoding size 10 001 U newcommand expandpar 1 fontsize 10 001 baselineskip selectfont 1 par Mes expandpar This paragraph contains an unnecessary widow Note that the expandpar command can only be applied to complete paragraphs If you are using Computer Modern Roman you have to load the fix cm package to be able to select fonts in arbitrary sizes Finally the reason I suggest to use a larger font and not a smaller one is to prevent a different design size being selected Split up the font name 6 may be a protrusion expansion context and or a letterspacing amount def MT split name 1 2 3 4 5 6 Cnil def MT encoding 1 def MT family 2 def MT series 3 def MT shape 4 def MT size 5 Alias family MT ifdefined n TF MT MT family alias MT let cn MT familyalias MT MT family alias let MT familyalias empty 920 ifMT do MT feat MT maybe do MT dinfo list MT checklist IMPLEMENTATION Font setup 59 We check all features of the current font against the lists of the currently active font set and set ifMT do accordingly 921 newif ifMT do 922 def MT maybe do 1 but only if the feature isn t globally set to false 923 csname ifMT csname MT abbr 1 endcsname en
49. 060 OI OA aa ot 00 IMPLEMENTATION Configuration 99 2550 csname MT rbba tempa endcsname 2 3 2551 yh 2552 th 2553 T 2554 H 2555 T MT DeclareSetAndUselt 2 2557 MT DeclareSet 1 2 3 2558 NUseMicrotypeSet 1 2 2559 MT curr set name We need to remember the name of the set currently being declared 2560 let MT curr set name empty MT declare sets Define the current set name and parse the keys 561 def MT declare sets 1 2 3 62 KV sp def MT curr set name 2 63 MT ifdefined nOT MTG 1 setO MT curr setO name 7 64 MT warning Redefining nameuse MT abbr 1 set MT curr set name MT glet nc MTO 1list size MT curr set name Gempty yh MT glet nc MT 1 set MT curr set name empty 568 debug MT dinfo i declaring nameuse MT abbr 1 set MT curr set name e e oo e ID LA KA h2 h2 L A bh2 LA KA WN 3 aaa L a 569 setkeys MT0 10set 3 570 MT def ine set key 1 font axis 2 feature 2571 def MT def ine set keyG 1 2 2572 define key MTO 2 set 1 2573 MT glet nc MTOQ 21ist 10 MT curr set name empty 2574 MT map clisten 1 2575 KV sp def MT val 1 2576 MT get highlevel 1 We do not add the expanded value to the list 577 MT exp two n g addto macro 578 csname MT 21list 1 MT curr set name expandafter endcsname GMM 579 MT val 580 3 but keep in mind that the list has to
50. 3505 fi 3506 3507 final is the opposite to draft 08 MT def bool opt final 09 csname if tempa endcsname 0 MT draftfalse 1 else 2 MT drafttrue 3 NER a For verbose output we redefine MT vinfo 5 define key MT verbose true 6 let MT vinfo MT info nl 7 def tempa 1 8 MT ifstreq tempa true relax w w w w w ov ot OU Ot On On w aaa Ou Take problems seriously 9 MT ifstreq tempaferrors 0 let MT warning MT warn err 1 let MT warning n1 MT warn err 2 Hh IMPLEMENTATION Package options 121 3523 let MT vinfo gobble Cast warnings to the winds MT ifstreq tempa silent e Nw OU am 5 let MT warning MT info 3526 let MT warning n1 MT info nl 3527 H 3528 MT ifstreq tempa false relax MT optwarn admissible 1 verbose 3529 T 3530 3 3531 th 3532 Options with numerical keys factor stretch shrink step letterspace 3533 package 3534 plain MTCrequires latexi 3535 MT map clistO n 3536 package stretch shrink step 3537 letterspace 7 3538 define key MT 1 csname MTQ 1 default endcsname 3539 def tempa 1 3 No nonsense in MT factor et al A space terminates the number 3540 MT ifint tempa 3541 MT edef n MTG 1 tempa 3542 MT optwarn nan 1 1 37 3543 HN 3544 3545 plain relax 3546 package factor will define the protrusion factor only 47 NdefineGkey MT factor
51. 3885 3886 3887 3888 3889 MT warn lua 3890 3891 3892 3893 IMPLEMENTATION Package options 129 let MT set ex codes MT set ex codes n fi Filter out stretch 0 shrink 0 since it would result in a pdf TEX error ifnum MT stretch z ifnum MT shrink z MT warningen1 Both the stretch and shrink limit are set to zero MessageBreak Disabling font expansion MT expansionfalse fi fi fi ifMT expansion edef MT active features MT active features ex pdfadjustspacing MT ex level MT info nl ifMT auto A else Non a fi utomatic font expansion enabled level number MT ex level MessageBreak stretch number MT stretch shrink number MT shrink step number MT step ifMT selected else non fi selected Check whether stretch and shrink are multiples of step def MT check step 1 7 tempcnta csname MT 1 endcsname divide tempcnta MT step multiply tempcnta MT step ifnum tempcnta csname MTC 1 endcsname else MT warning nl The 1 amount is not a multiple of step MessageBreak The effective maximum 1 is the tempcnta space step number MT step fi th MT check step stretch MT check step shrink MT check active set ex Inside showhyphens font expansion should be disabled CheckCommand showhyphens 1 setbox0 vboxt color begingroup everypar parfillskip z skip hsize maxdimen normalfont pretolerance m ne tolerance m ne hbadness z showboxdepth z 1 color endgroup
52. 500 blg 300 400 m t cmr a pmn ppl ptm ugm 500 bch 400 blg 300 400 46 462 4629 4630 626 2T 8 631 632 633 4634 4635 4636 4637 638 639 340 nok WN ra 4658 659 660 661 662 663 664 4665 4666 4667 668 4669 4670 671 4672 4673 4674 675 676 677 678 4679 4680 4681 CONFIGURATION FILES Character protrusion 147 m t bch pad pmn ptm 300 bie 200 300 cmr ppl L 500 ugm L 400 Iblg 100 200 200 m t pad pmn ptm 100 bch cmr ppl ugm 200 blg 150 150 ae 300 300 m t bch cmr pad pmn ppl 50 50 pun 100 100 m t bch blg cmr pad pmn ppl ptm 200 250 e 300 350 pad ppl ptm 50 100 nen amp lt L 100 m t cmr pad pmn 50 50 ibch M7 i 50 ppl ptm 100 100 ugm 50 100 blg ME 100 100 m t ppl ptm pai 200 200 bch D 200 300 blg 180 20 cmr pad 300 300 m t cmr Pal Got 250 250 bch 150 250 pad 300 300 big 150 200 ugm 250 300 ER ugm 200 200 m t pad pmn ptm 4100 200 bch ugm 200 F 4 _ 200 cmr blg 300 300 pp l 100 i 2001 bch
53. 6962 CONFIGURATION FILES Additional kerning 190 fontinst however which is also used to create the PSNFSS font metrics sets fontdimen 7 to 240 by default Therefore the fallback settings use this value for the first component 6963 SetExtraSpacing 6964 name nonfrench default 6965 load default 6966 context nonfrench 6967 encoding 0T1 T1 LY1 0T4 QX T5 6968 6969 6970 240 2000 667 240 2000 667 6971 240 2000 667 6972 d 240 1000 500 6973 3 500 333 6974 L 250 200 6975 6976 U U 15 10 Additional kerning Default unit is lem 6977 hhh 6978 WW ADDITIONAL KERNING 6979 A dummy list to be loaded when no context is active 6980 SetExtraKerning 6981 name empty 6982 encoding 0T1 T1 T2A LY1 0T4 QX T5 TS1 TL 6983 6984 15 10 1 French The ratio of fontdimen 2 to fontdimen 6 varies for different fonts so that either the kerning of the colon which should be a space i e fontdimen 2 or that of the other punctuation characters TEX s thinspace i e one sixth of fontdimen 6 may be inaccurate depending on which unit we choose space or tem For Times for example a thin space would be 665 I don t know whether French typography really wants a thin space or rather as it happens to turn out with CMR half a space Wikipedia claims it shoul
54. 7 04 MT let nn MTO 10 MT ex c MTGex c name C 1 05 MT vinfo 2 406 H 407 MT let nn MTC 1C MTC 1 408 Y 409 MT set ex heirs 0 def MT set exCheirs 1 1 efcode MT font 1 efcode MT font MT char 2 debug MT dinfo n1 2 heir of MT char 1 3 debug MT dinfo nl 4 ef 1 number efcode MT font MT char 1 MT preset ex 5 def MT preset ex 6 tempcntb csname MT ex c MT ex cOname preset endcsname relax 417 MT scale factor 418 MT set all ex tempcntb 9 14 2 3 Interword spacing glue MT spacing Adjustment of interword spacing MT requires pdftex6 1 def MT spacing MT maybe do sp h2 oh MT set sp codes This is all the same def MT set sp codest MT if list exists MT get f ont dimen six MT get opt MT reset sp codes MT get inh list MT set inputenc c 9 MT load list MT sp c name MT set listname MT let cn tempc MT sp c MTQsp c name expandafter MT set codes tempc relax MT reset sp codes F MT sp split val If unit space MT get space unit will be defined to fetch the corresponding fontdimen 2 for the first 3 for the second and 4 for the third argument 1435 def MT sp splitOval 1 2 3 relax 1436 def tempb 1 2 Oo WB Go b w C9 C29 h2 LA h2 KA K K KA LA L m CH o 10 0t i C Ww b w Gu 02 Lal Gu A OO MT set spCheirs MT set all sp MT reset sp codes MTOreset sp codes MT p
55. CJK disable microtype in py macron which loads a different font for the accent In older versions of pinyin pre 4 6 0 py macron had only one argument 832 MT with package T pinyin 833 let MT orig py macron py macron 834 ifpackagelater pinyin 2005 08 11 4 6 0 835 def py macron 1 2 846 847 848 849 14 2 MT setupfont Qo oo CO 858 859 860 861 862 863 864 865 866 867 IMPLEMENTATION Font setup 56 let pickup font MT orig pickupfont MT orig py macron 1 2 let pickup font MTCpickupfont T def py macron 1 let pickup font MT orig pickupfont MT orig py macron 1 let pickup font MT pickupfont th yh package H package We need a font the minimal class doesn t load one expandafter ifx the font nullfont normalfont fi Font setup Setting up a font entails checking for each feature whether it should be applied to the current font MT font But first we might have to disable stuff when used together with adventurous packages def MT setupfont MT setupfont hook This will use a copy of the font allowing for expansion parameter variation and the use of more than one set of protrusion factors for a font within one paragraph 51 MT requires pdftex7 g addto macro MT setupf ont MT copy font relax The font properties must be extracted from MT font since the current value of f encoding and friends may be wrong g addto macro MT setupfon
56. EC fonts do something weird they insert an implicit kern between quote and boundary character Therefore we must override the settings from OT1 m t cmr pad ppl ptm ugm quotesinglbase 400 400 quotedblbase 400 400 blg quotesinglbase 400 400 quotedblbase 300 400 bch pmn quotesinglbase 400 400 quotedblbase 300 300 m t bch pmn guilsinglleft 400 300 guilsinglright 300 400 blg guilsinglleft 300 500 guilsinglright 300 500 cmr pad ppl ptm guilsinglleft 400 400 guilsinglright 300 500 ugm guilsinglleft 400 400 guilsinglright 300 600 m t guillemotleft 200 200 guillemotright 200 200 cmr guillemotleft 300 200 guillemotright 100 400 bch pmn guillemotleft 200 200 guillemotright 150 300 blg pad ppl ptm guillemotleft 300 300 guillemotright 200 400 ugm guillemotleft 300 400 guillemotright 300 400 m t bch cmr pad pmn ppl ugm textexclamdown 100 textquestiondown 100 blg textexclamdown 200 textquestiondown 1100 ptm textexclamdown 200 textquestiondown 200 CONFIGURATION FILES Character protrusion 150 1792 m t cmr pad ppl ptm ugm textbraceleft 400 200 textbraceright 200 400 4793 bch blg pmn textbraceleft 200 textbraceright 300 4794 m t bch cmr
57. I wonder why it s defined globally in 1tfssbas dtx gdef showhyphens 1 setbox0 vbox color begingroup pdfadjustspacing z everypar parfillskip z skip hsize maxdimen normalfont pretolerance m ne tolerance m ne hbadness z showboxdepth z 1 color endgroup else let MT expansion relax MT info nl No font expansion fi MT requires pdftex6 Switch off the features that don t work with luaTpX lua def MT warn lua 1 MT error The 1 feature doesn t currently work MessageBreak with luatex Use pdftex instead 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 MT warn tracking DVI 3936 3937 3938 3939 3940 3941 3942 3943 3944 IMPLEMENTATION Package options 130 csname MT 1false endcsname MT let nc MTC 1 relax lua package MT addto setup package Tracking spacing and kerning ifMT tracking lua MTCrequires luatex MT warn luaftracking edef MT active features MT active features tr MT info nl Tracking enabled MT check active set tr Enable protrusion for compensation at the line edges ifMT protrusion else pdfprotrudechars ne fi lua T else let MT tracking relax MT info nl No tracking fi ifMT spacing lua MT requires lua
58. MICRO FEINABSTIMMUNG Character Protrusion 14 der Pr ambel Um die passenden Einstellungen f r eine gegebene Schriftart zu finden versucht das Paket alle Kombinationen von Fontkodierung Familie Serie Form und Gr e mit abnehmendem Stellenwert in dieser Reihenfolge Existieren zum Beispiel sowohl Einstellungen f r die momentanen Familien z B T1 cmr als auch Einstellungen f r kursive Fonts mit normalem Gewicht T1 m it so w rden die Einstellungen f r die cmr Familie benutzt Die Kodierung muss immer stimmen Character Protrusion options set of fonts protrusion settings Benutzt man dieses Kommando so kann man die Protrusionsfaktoren jedes einzel nen Zeichens einer Schriftart oder eines Font Sets ver ndern Ein sehr unvollst n diges Beispiel w re das folgende SetProtrusion encoding T1 family cmr TL A 50 50 textquoteleft 700 Dies wiirde darin resultieren dass der Buchstabe A um 5 seiner Breite auf beiden Seiten hervorragt das linke Anfiihrungszeichen wiirde hier um 70 seiner Breite zum linken Rand hin hervorragen Angewandt wird das Beispiel auf alle Font Formen Serien und Gr en der T1 kodierten Computer Modern Roman Familie Die Protrusionseinstellungen bestehen aus Zeichen Protrusionsfaktoren Paa ren Die Zeichen k nnen entweder einzeln als solche angegeben werden A als ein Symbolkommando textquoteleft oder als Slotnummer 3 Stelle
59. MT char 1 39 debug MT dinfo n1 4 knbc 1 number knbccode MT font MT char aaa Ot MT reset kn codes MT reset kn codes oo MT set allCkn aaa ra WN aaa e on ol MT preset kn MT preset kn a a a a C C or Ot Do PWN ra or ol bei Ka R O OO Ct Ct CO CO Q CO o o aaa N D GO V or C 14 2 5 1567 MT tracking MT tracking MTOtr font list1568 569 aaa zl 4 4 ccc cd NNN e L e Q LA a ed oo co n Oo Oo OD CO OD Gn 81 MT set tr codes 1582 1583 1584 IMPLEMENTATION Font setup 73 debug T number knaccode MT font MT char def MT set al1l kn 1 2 7 debug MT dinfo n1 3 knac knbc setting all to 1 2 let MT temp Cempty MT ifempty 1 relax g addto macro MT temp knbccode MT font tempcnta 1 relax MT ifempty 2 relax g addto macro MT temp knaccode MT font tempcnta 2 relax MT do font MT temp F def MT reset kn codes MT set al1 kn z z let MT reset kn codes relax def MT preset kn expandafter expandafter expandafter MT preset kn csname MT kn c MT kn c name preset endcsname nil T def MT preset knO 1 2 Onil ifx MT kn unit empty MT warn preset towidth kn Met MT preset aux MT preset aux factor else def MT preset aux MT preset aux space2 fi MT ifempty 1 let tempa empty MT preset aux 1 Ctempa MT ifempty 2 let tempb empty MT preset
60. MT dinfo nl 2 children of 1 MT val debug nameuse MT inh MT listname MT val 0 fi fi H R Q PWN a SI 7 Permutation Calling MT permute will define commands for all permutations of the specified font attributes of the form MT list type encoding family series shape to be the expansion of MT list type name i e the name of the currently defined list Size ranges are held in a separate macro called MT list type font axes sizes which in turn contains the respective list name s attached to the ranges 8 def MT permute 9 let MT cnt encoding ne 30 MT permute Undefine commands for the next round 3231 MT map tlist n encoding family series shape MT permute reset 3232 MT glet MT tempsize undef ined 3233 4 def MT permutee 7 L let MT cnt family ne MT permute MT increment MT cnt encoding MT ifdef ined n T MT tempencoding MT cnt encoding MT permute def MT Cpermute00 Y MT permute MT increment MT cnt family MT CifdefinedCnCT MTOtempfamily MTOcnt family 1 3242 let MT cnt series ne 3 A 5 3246 MT permute 3247 48 def MT permuteeoe ty 249 let MT cnt shape ne 0 MT permute eee 3251 MT increment MT cnt series IMPLEMENTATION Configuration 115 MT ifdefined nOT MT tempseries MT cnt series MTCpermute000 def MTCpermute 000 MT permute_00000 3257 MT increment MT cnt shape 3258 MT ifdefin
61. MT kerning MT maybe do kn It s getting boring I know 01 def MT set kn codes 02 MT if list exists 03 MT get Of ont dimen six 04 MT get opt 05 MT reset kn codes 06 MT get inh list 07 MT set inputenc c 08 MT load list MT kn c name 09 MT set listname 0 MT let cn tempc MTCkn c MTCkn c name 1 expandafter MT set codes tempc relax 2 MTO reset kn codes 3 Again the unit may be measured in the space dimension this time only fontdimen 2 4 def MT kn split val 1 2 relax 5 def tempb 1 6 MT ifempty tempb relax 7 MT get space unit2 8 MT scale to em 9 knbccode MT f ont MT char tempcntb debug MT dinfo n1 4 knbc MT char number knbccode MT font MT char 1 yh def tempb 2 MT Cifempty tempb relaxt MT get space unit2 MT scale to em knaccode MT font MT char tempcntb debug MT dinfo nl1 4 knac MT char number knaccode MT font MT char 2 8 HM 9 MT ifdefined c T MTCkn inh name 0 MT ifdefined n T MT inh MT kn inh name MT char C MT exp cs MT mapO tlist c MT inh MT kn inh name MT char MT set kn heirs o Oo oO OO OD OD aa u cot CH N N Do KR WN a N K R MM MR M H T K Om OO OQ OO OO OT OT OD OT OT D OT OT G OH 1 2 T 3 1 35 def MT set kn heirs 1 36 knbccode MT f ont 1 knbccode MT font MT char 37 knaccode MT font 1 knaccode MT font MT char 38 debug MT dinfo n1 2 heir of
62. MT requires pdftex5 def MT ledmac setup ifMT protrusion MT ifdefined c QTF 1 dunhbox line MT info nl Patching ledmac to enable character protrusion newdimen MT led kern let MT led unhbox line l dunhbox line renewcommand 1 dunhbox line 1 ifhbox 1 MT led kern rightmarginkern 1 kern leftmarginkern 1 MT led unhbox line 1 kern MT led kern fi yh X0 MT warningen1 Character protrusion in paragraphs with line MessageBreak numbering will only work if you update ledmac th fi T H def MT ledmac setup ifMT protrusion MT warningen1 The pdftex version you are using does not allow MessageBreak character protrusion in paragraphs with line MessageBreak numbering by the ledmac package MessageBreak Upgrade pdftex to version 1 30 or later fi T T Restore meaning of and def MT restore p h chardef chardef T This hook will be executed every time a font is set up inside a group In the preamble we check for the packages each time a font is set up Thus it will work regardless when the packages are loaded Even for packages that don t activate any characters in the preamble like babel and csquotes we have to check here too in case they were loaded before microtype and a font is loaded AtBeginDocument before microtype This is no longer needed since the complete setup is now deferred until the end of the preamble However it is still necessary for
63. MT val def MTOQval relax 2983 expandafter MT get f ont and size MT val nil 2984 MT xdef n MT MT permutelist tempb MT extra context 2985 csname MT MT permutelist name endcsname 2986 debug MT dinfo nl i initialising use list for font tempb MT val 2987 debug ifx MT extra context empty else MessageBreak 2988 298 9 2990 2991 2992 2993 2994 MT getOfont and size 2995 299 6 2997 2998 2999 3000 3001 3002 3003 MT def ine opt key 3004 3005 3006 3007 300 300 30 30 30 30 30 30 LA NNN ARS 2 8 9 0 1 2 3 4 5 6 7 8 IMPLEMENTATION Configuration 109 debug context MT extra context fi MT exp cs MT xaddb MT MT permutelist tempb MT extra context sizes MTO val m ne MT curr set name th yh J Translate any asterisks and split off the size def MTOget font and size 1 2 3 4 5 6 nil MT get Of ont 1 2 3 4 5 1 T MT def ine code key encoding cfg MT define code key family cfg MT define code key series cfg MT define code key shape cfg MT def ine code key size cfg MT def ine code key font cfg def MT def ine opt key 1 2 def ine key MTO 10c 2 D MT ifempty 1 relaxt MT xdef Qn MT 1 c MT curr set name C 2 1 F The options in the optional first argument MT map clist c MT features Use file name and line number as the list name if t
64. This should be more efficient than book keeping the fonts in lists associated with the combination of contexts as we ve done it before def MT check f ont cx MT if true MT map clist c MTCactive featurest expandafter MT exp one n expandafter MT in clist expandafter MT font csname MT 1 csname MT 1 context endcsname font list endcsname ifMT inlist MT let nc MT Gnameuse MT abbrO 1 relax else MT if false fi 3 ifMT if MT inlist true else MT inlist false fi Add the substituted font to each feature list def MT register subst Of ont cx MT map clist c MTCactive featurest MT exp cs MT xadd MTO 1 csname MT 1 context endcsname font list font name TL T For each feature add the current font to the list unless we didn t set it up def MT register font cx MT map clist c MT active features MT exp cs ifx MT Onameuse MT abbrO 1 relax else MT exp cs MT xadd MTC 10 csname MT 1 context endcsname font list MT font def tempa 1 MT exp cs MT mapO tlist c MTO 1 doc contexts MT maybe remO from list fi MT maybe rem from list microtypecontext I 8C 81 82 483 84 85 86 87 88 bh h2 A K K b2 b2 M K K textmicrotypecontext Y 89 MT reset context MT reset context 249 2491 2492 2493 2494 2495 2496 MT setup contexts IMPLEMENTATION Font setup 97 Recurse through all context font lists of the document and remov
65. Were makeatletter catcode 7 2060 catcode 9 2061 catcode 19 2062 catcode M9 2063 catcode z 2064 catcode ne 2065 catcode tw 2066 catcode 6 2067 catcode 14 2068 MT map tlist n 2069 TITRE OD SNN NN N NENSNSNENSNZN NTNCN NINT TA 70 makeother 071 T MT begin catcodes This will be used before reading the files as well as in the configuration commands Set and DeclareCharacterInheritance so that the catcodes are also harmless when these commands are used outside the configuration files S cee EE begingroup MT cfg catcodes e Si e NX LA LA h2 h2 h2 KA KA KA KA KA LA LA L2 NX NNN Q SSS ak WON wy MT end catcodes End group if outside configuration file otherwise relax 2076 let MT end catcodes endgroup MT get basefamily The family name might have a suffix e g for expert set x old style numbers j swash capitals w etc We mustn t simply remove the last letter as this would make for instance cms out of cmss and cmsy OK cmex will still become cme We only work on the font name if it is longer than three characters 77 def MT get basefamily 1 2 3 4 Onil 78 ifx empty 4 079 def tempa 1 2 3 2080 else 2081 let tempa empty 2082 edef tempb 1 2 3 4 7 2083 expandafter MT get basefamily tempb nil 2084 fi 2085 MT get basefamily This will only remove one suffix the longest match so that combinatio
66. Wert ein Asterisk so zeigt es an dass Tausendstel der jeweiligen Fontdimension zu dieser hinzuaddiert werden Zum Beispiel werden durch SetTracking spacing 25 166 encoding shape sc 25 die Wortzwischenr ume um 2 596 erh ht die Streckung wird auf einen Betrag von 0 166 em gesetzt an den Schrumpf Einstellungen wird nichts ge ndert Falls sie die spacing Option nicht angeben wird der Wortzwischenraum ber die aktuelle Gr e der Sperrsatzabst nde skaliert wie in obigem Beispiel wobei stretch und shrink unber hrt bleiben outer spacing Falls ein Wortzwischenraum direkt auf Sperrsatz folgt oder umgekehrt wird er standardm ig gleich den Zwischenr umen im gesperrten Text behandelt Mit dieser Option welche dieselben Werte wie spacing akzeptiert kann sie unabhangig eingestellt werden outer kerning Falls andererseits kein Wortzwischenraum folgt oder vorgeht k nnen Sie immer noch die ersten und letzten Buchstaben von angrenzenden Buchstaben abtrennen Diese Option erwartet durch Komma abgretrennte Kerning Betr ge f r die linke und rechte Seite in Tausendsteln eines 1 em oder der aktuellen unit Folgt einem Wert ein Asterisk bezeichnet dies Tausendstel der aktuellen Abstandsgr e des Sperrsatzes Ein einzelner Asterisk bedeutet 500 das ist ebenso der Standard sprich die Summe des u eren Kerns betr gt standardm ig soviel wie die aktuelle Gr e der Abst nde des Sperrsatzes Um kerning auf
67. all to 1 2 3 let MT temp Cempty MT ifempty 1 relax g addto macro MT temp knbscode MT font tempcnta 1 relax MT ifempty 2 relax g addto macro MT temp stbscode MTOfont tempcnta 2 relax MT ifempty 3 relax g addto macro MT temp shbscode MT font tempcnta 3 relax MT do font MT temp H def MT reset sp codes MT set all1 sp z ze0 ze 0 let MT reset sp codes relax aoe Wh Ka Oo OND 81 def MT preset sp 82 expandafter expandafter expandafter MT preset sp 83 csname MT sp c MT sp c name preset endcsname nil 484 485 def MT preset sp 1 2 3 Onil 86 ifx MT sp unit Cempty 87 MT warn preset towidth sp 488 MT ifempty 1 let tempa empty MT preset aux factor 1 tempa 89 MT ifempty 2 let tempc Gempty MTCpreset aux factor 2 tempc 90 MT ifempty 3 let tempb Gempty MTC preset aux factor 3 tempb 14 2 MT kerning MT set kn codes MTCkn split val MT set kn heirs IMPLEMENTATION Font setup 72 1491 else 1492 MT ifempty 1 let tempa Gempty MTCpreset aux space2 1 tempa 1493 MT ifempty 2 let tempc Gempty MTC preset aux space3 2 tempc 1494 MT ifempty 3 let tempb Gempty MTC preset aux space4 3 tempb 1495 fi 1496 MT set all sp tempa tempc tempb 1497 1498 relax 4 Additional kerning Again only check for additional kerning for new versions of pdf TEX 499 MT requires pdftex6 500 def
68. auch die Expansionslimits f r bestimmte einzelne Zeichen festlegen wenn diese sensibler auf Deformation reagieren Das ist der Zweck des SetExpansion Kommandos Beachten Sie dass dies nur einen Effekt hat wenn das Paket mit der Option selected geladen wurde siehe Abschnitt 3 3 Ansonsten werden die Expansionseinstellungen ignoriert anders als die Optionen im optionalen ersten Argument welche trotzdem ausgewertet werden Falls das Paket mit der selected Option geladen wurde und Einstellungen f r einen Font nicht existieren wird Fontexpansion gar nicht auf diesen Font angewen det Sollte die au ergew hnliche Situation aufkommen dass sie die ausgew hlte Expansion generell verwenden wollen aber dass alle Zeichen eines bestimmten Font Sets um denselben Betrag geschrumpft oder expandiert werden sollten so m ssen sie eine leere Liste f r diese Fonts erstellen Die Expansionseinstellungen bestehen aus Paaren der Form character expansion factor Sie k nnen eine Zahl f r jedes Zeichen festlegen die den Betrag bestimmt um den ein Zeichen expandiert werden kann Die Zahlen bezeichnen Tausendstel der vollen Expansion Setzt man zum Beispiel den Expansionsfaktor des Zeichens O auf 500 wird dieses nur um die H lfte des Betrages geschrumpft oder expandiert um den die anderen Zeichen expandiert werden W hrend der Standardwert f r Character Protrusion auf 0 gesetzt ist sofern Sie keine Zeichen angegeben haben wird auch
69. based on the Derived Work If you are not the Current Maintainer of the Work you may distribute a Derived Work provided the following conditions are met for every component of the Work unless that component clearly states in the copyright notice that it is exempt from that condition Only the Current Maintainer is allo wed to add such statements of exemption to a component of the Work a If a component of this Derived Work can be a direct replacement for a component of the Work when that component is used with the Base Interpreter then wherever this component of the Work identifies itself to the user when used interactively with that Base Interpreter the replacement component of this Derived Work clearly and unambiguously identifies itself as a modified version of this component to the user when used interactively with that Base Interpreter Every component of the Derived Work contains prominent notices detailing the nature of the changes to that component or a prominent reference to another file that is distributed as part of the Derived Work and that contains a complete and accurate log of the changes No information in the Derived Work implies that any persons including but not limited to the authors of the original version of the Work provide any support including but not 9 10 11 12 limited to the reporting and handling of er rors to recipients of the Derived Work unless those persons have state
70. be loaded 4777 778 779 4780 781 782 783 784 785 786 4787 788 789 4790 CONFIGURATION FILES Character protrusion 149 5 bch load bch default blg load blg default cmr load cmr default pad load pad default pmn load pmnj default ppl load ppl default ptm load ptm default ugm load ugm default m t encoding T1 LY1i bch cmr pad pmn ppl encoding T1 LY1 blg ptm ugm encoding Ti bch family bch blg family blg T cmr family cmr T pad family pad padx padj pmn family pmnj T ppl family ppl pplx pplj T ptm family ptm ptmx ptmj ugm family ugm m t cmr AE 50 bch pmn NOE 50 pmn TH 50 blg WL 4 _ 250 blg vd 250 blg vl 250 blg Ww t i 250 blg 127 300 400 blg 156 100 IJ blg 188 80 80 ij m t bch pad pun ppl ptm _ 100 100 cmr _ 200 200 ugm 100 200 m t pad pmn pu Ntextbackslash 100 200 bch textbackslash 150 200 blg textbackslash 250 300 cmr ppl textbackslash 200 300 ugm textbackslash 100 300 ugm textbar 200 200 blg textendash 300 300 Ntextemdash 150 150 blg textquotedbl 300 400 textquotedblleft 300 400 cmr textquotedbl 300 300 textquotedblleft 200 600 The
71. beiden Seiten zu entfernen verwendet man outer kerning 0 0 no ligatures Soweit pdfTEX betroffen ist werden Ligaturen in gesperrten Fonts wie gew hnlich konstruiert was angebracht sein kann wenn das Tracking um einen kleinen Betrag ge ndert wird F r gr ere Abst nde andererseits h tte der normale Abstand zwischen Zeichen innerhalb Ligaturen entt suchende Effekte Dieser Schl ssel erwartet eine per Komma abgetrennte Liste von Zeichen f r welche die Ligaturen abgeschaltet werden sollen nur das Zeichen mit welchem die Ligatur beginnt muss angegeben werden Wird der Schl ssel ohne Wert angegeben so werden alle Ligaturen des Fonts abgeschaltet Das wird jedoch nicht empfohlen da es ebenso mit sich bringt dass Kerning ausgeschaltet wird Die Standardeinstel lungen stellen Ligaturen nur f r das Zeichen f ab sprich ff fi ff etc In au ergew hnlichen Situationen k nenn Sie manuell Ligaturen aufbrechen indem sie Die untrennbare Verbindung von Ligaturen und Kernen ist eine Begrenzung von TEX die nicht vor der Einf hrung luaTEXbeseitigt wird Mit pdfTpEX Versions vor 1 40 4 sind alle Ligaturen und somit jegliches Kerning abgeschaltet Es wird deshalb empfohlen wenigstens Version 1 40 4 zu nutzen 5 4 SetExtraKerning 11 MICRO FEINABSTIMMUNG Zus tzliches Kerning 19 kernOpt bzw babels K rzel verwenden oder aber die Ligaturen sch tzen indem Sie sie in lslig ein
72. default 3953 else 3954 MT 1s too large MT letterspace 3955 fi 3956 TL If pdf TEX is too old we disable tracking spacing and kerning and throw an error message 3957 package 3958 H 3959 MT addto setup 3960 ifMT tracking 3961 MT error Tracking only works with pdftex version 1 40 MessageBreak 3962 or newer Switching it off Upgrade pdftex 3963 else 3964 MT info nl No tracking pdftex too old 3965 fi 3966 ifMT spacing 3967 MT error Adjustment of interword spacing only works with MessageBreak 3968 pdftex version 1 40 or newer Switching it off Upgrade pdftex 3969 else 3970 MT info nl No adjustment of interword spacing pdftex too old 3971 fi 3972 ifMT kerning 3973 MT error Character kerning only works with MessageBreak 3974 pdftex version 1 40 or newer Switching it off Upgrade pdftex 3975 else 3976 MT info nl No adjustment of character kerning pdftex too old 3977 fi 3978 3979 DisableLigatures is only admissible in the preamble therefore we can now disable the corresponding macro if it was never called 3980 MT requires pdftex5 3981 3982 3983 3984 3985 3986 relax MT addto setup ifMT noligatures else let MT noligatures relax fi y Remove the leading comma in MT active features and set the document switch to true 3987 MT addto setup 3988 3989 3990 3991 3992 ifx MT active features empty else edet MT active features expandafter gobble MT
73. defersetup false def MT setupfontChook Spanish and Galician and Mexican babel modify storing the original meaning in percentsign MT if false MT with babel and T spanish MT if true MT with babel and T galician MT if true MT with babel and T mexican MT if true ifMT if MT ifdefined c T percentsign let percentsign fi 753 754 o 8 L 59 IT ot Ct ot N INNNN 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 789 790 791 792 793 794 795 IMPLEMENTATION Preliminaries 54 Using disablequotes we can restore the original meaning of all characters made active by csquotes It would be doable for older versions too but we won t bother MT with package T csquotes ifpackagelater csquotes 2005 05 11 disablequotes relax hyperref redefines and inside a url We restore the original meanings which we can only hope are correct Same for tex4ht MT if false MTQwith package T hyperref MT if true MT with package T tex4ht MT if true ifMT if MT restore pGh fi T Check again at the end of the preamble package MT addto setup package Our competitor the pdfcprot package must not be tolerated MT with package T pdfcprot MT error Detected the pdfcprot package MessageBreak MTOMT and pdfcprot may not be used together The pdfcprot package provides an interface to character protrus
74. definitions by other packages aren t overwritten Example def MinionPro MT Hook DeclareMicrotypeAlias MinionPro LF MinionPro ifpackageloaded microtype MinionPro MT Hook ifundefined Microtype Hook let Microtype Hook MinionPro MT Hook g addto macro Microtype Hook MinionPro MT Hook MicroType Hook with a capital T which only existed in version 1 7 is provided for compatibility reasons At some point in the future it will no longer be available hence it should not be used MT ifdefined c T MicroType Hook MT warning Command string MicroType Hook space is deprecated MessageBreak Use string Microtype Hook space instead MicroType Hook MT ifdefined cO T Microtype Hook Microtype Hook Changing options later Inside the preamble microtypesetup accepts the same options as the packa ge unless defersetup false In the document body it accepts the options protrusion expansion activate tracking spacing and kerning Specifying font sets is not allowed def microtypesetup setkeys MT MT addto setup def microtypesetup 1 setkeys MTX 1 selectfont def MT def ine optionX 1 2 def ine key MTX 1 true 7 edef tempb csname MTCrbba 1 endcsname MT map clist n 1 KV sp def MTO val 1 MT ifempty MT val relax tempcnta m ne MT ifstreq MT val true Enabling micro typography in the middle of the document is not allowed if it has been disabled in the package options
75. f hrt eine Reihe mikrotypographischer Features ein welche es nicht nur zum Werkzeug der Wahl f r die Erstellung elektronischer Dokumente sondern auch Werke berragender altehrw rdiger Typographie machen am bedeutendsten Zeichenvorspr nge Cha racter Protrusion auch bekannt als margin kerning und Fontezpansion H n Th Th nhs Thesis zitierend Margin kerning bezeichnet die Justierung der Zeichen an den R ndern mar gin eines gesetzten Textes Eine vereinfachte Anwendung von Margin kerning ist hangende Zeichensetzung Margin kerning ist notwendig f r optische Ausrich tung der Rander eines gesetzten Textes weil mechanisches Angleichen der Rander diese eher st mperhaft aussehen l sst Einige Zeichen k nnen eine Zeile f r das menschliche Auge k rzer erscheinen lassen als andere Solche Zeichen um einen passenden Betrag zu den Randern zu verschieben w rde das Aussehen des Textes massiv verbessern Mit Fontexpansion zu verfassen ist die Methode eine weitere oder engere Vari ante des Fonts zu erschaffen welche die Wortzwischenr ume mehr ausgleichen Eine Schriftart in einer losen Zeile kann durch eine weitere Variante ausgetauscht werden sodass die Wortzwischenr ume weniger stark gestreckt werden Gleicher mafsen kann ein Font in einer dicht bepackten Zeile durch eine schmalern Varian te ersetzt werden um die Abst nde zu verringern Es besteht mit Sicherheit die potentielle Gefahr der Fontdeformierung wenn solche Manip
76. fi 2611 th 2613 Y 2614 MT get range MT upper 2616 2617 2618 2619 2620 2621 2622 2623 2630 LA Y IMPLEMENTATION Configuration 100 yh Fully expand the font specification and fix catcodes for all font sets MTC 11list size MT curr set name MT ifempty 1 MT ifempty 2 let MT val relax H def MT lower 0 def MT val 2 MT get size edef MT upper MT val 3 34 def MT val 1 MT get size ifx MT val relax else edef MT lower MT val MT ifempty 2 MT ifempty 3 def MT upper 1 It the last character is an asterisk execute the second argument otherwise the Font sizes may also be specified as ranges This has been requested by Andreas B hmann who has also offered valuable help in implementing this Now it is for instance possible to set up different lists for fonts with optical sizes The MinionPro project is trying to do this for the OpenType version of Adobe s Minion See http developer berlios de projects minionpro Ranges will be stored as triplets of lower bound upper bound list name For simple sizes the upper boundary is 1 MT lower2615 def MT get range 1 2 3 nil IMPLEMENTATION Configuration 101 2048 pt is TEX s maximum font size 2633 def MT upper 2048 2634 TL 2635 def MT val 2 2636 MT get size 2637 ifx MT val relax else 2638 MT ifdim MT lower gt MT val 2639 MT error 2640 Invali
77. font package plain MT requires latex2 MT addto setup microtype also works with CJK in the sense that nothing will break when both packages are used at the same time However since CJK has its own way of encoding it is currently not possible to create character specific settings That is the only feature available with CJK fonts is expansion Tracking doesn t really work for other reasons Like us CJK redefines pickup font ifpackageloaded CJK 7 ifpackagelater CJK 2006 10 17 4 7 0 def MT orig pickupfont CJk ifundefined CJK plane def MT orig pickupfont ifundefined CJK plane g addto macro MT orig pickupfont expandafter ifx font name relax define newfont fi CJKutf8 redefines pickup font once more recent versions in PDF mode as determined by ifpdf which CJKutf8 loads Cifpackageloaded CJKutf8 ifpackagelater CJKutf 8 2008 05 22 4 8 0 ifpdf expandafter secondoftwo else expandafter firstoftwo fi firstoftwo y firstoftwo g addto macro MT orig pickupfont expandafter ifx csname curr fontshape f size CJK plane endcsname relax def ine newf ont else xdef font name csname curr fontshape f size CJKCplane endcsname fi g addto macro MT orig pickupfont expandafter ifx csname curr fontshape f size CJK plane endcsname relax def ine newf ont def CJK temp v ifx CJK temp CJK plane expandafter ifx csname CJK cmap f family CJK plane endcs
78. h2 KA LA oP o h Ka MMM MMM MMM M M 529 MT pr context Initialise the contexts MT ex context2530 MT exp one n MT map clist n MT features nl MT tr context2 3 MT def n MTC 1Ccontext C 2532 MT def n MT 1 doc contexts MT sp context ZI MT kn contexto531 let MT extra context G empty MT pr doc contexts MT ex doc context 4 3 Configuration MT tr doc contexts MT sp doc conflett3 1 Font sets MT kn doc contexts s 3 p 5 DeghageMicratypeSet Calling this macro will create a comma list for every font attribute of the form extra context DeclareMicrotypeSet MT feature list attribute set name If the optional argument is empty lists for all available features will be created The third argument must be a list of key value pairs If a font attribute is not specified we define the corresponding list to relax so that it does not constitute a constraint 5 def DeclareMicrotypeSet ifstar MT DeclareSetAndUseIt MT DeclareSet oo 00 LA h2 h2 KA L2 c oro C C z e Ked MT DeclareSet 40 newcommand MT DeclareSet 3 KV sp def tempa 1 1 2 MT ifempty tempa y 3 MT map clist c MT features MT declare sets 1 2 O3 Y 4 a ao Ge H 5 MT map clist c tempa 6 KV sp def tempa 1 MT ifempty tempa relax MT is feature set declaration 2 9 MT exp one n MT declare sets o N NONNNNNNNN WN OUO OTIC Ot TOT
79. in franz sischer Typographie ein wenig Platz vor einem Fragezeichen Ausrufezeichen und Semiko lon zu lassen und ein wenig mehr Platz vorm Doppelpunkt und den Guillemets Bis jetzt konnte das nur erreicht werden indem man diese Zeichen aktivierte z B mit dem babel Paket was nicht immer eine praxistaugliche L sung sein kann Im Kontrast zum Standard Kerning welches in die Schriftarten eingebaut ist und welches nat rlich wie blich greift basiert dieses Kerning auf einzelnen Zeichen nicht auf Zeichenpaaren Wortzwischenr ume zu justieren basiert auf der Idee dass um eine uniforme Grauheit in einem Text zu erreichen die Wortzwischenr ume auch von den Zeichen in der direkten Umgebung abh ngen sollten Wenn zum Beispiel ein Wort mit einem r endet sollte der folgende Abstand ein kleines bisschen kleiner sein als z B nach einem m Man kann von diesem Konzept wie von einer Erweiterung von TEXs space factors denken Allerdings w hrend space factors alle drei Parameter dieser Wortzwischenr ume oder Haftung um den selben Betrag beeinflusst das Kerning den maximalen Betrag um den der Zwischenraum gestreckt oder geschrumpft werden kann stellt pdf TEX die M glichkeit bereit diese Parameter unabh ngig voneinander zu modifizieren Dar ber hinaus k nnen die Werte f r jeden Font anders eingestellt werden Au erdem und vielleicht am wichtigsten k nnen diese Parameter nicht nur erh ht sondern auch ernie
80. is its end linebreak H newcommand showTestFont expandafter stripprefix meaning TestFont def stripprefix 1 gt newcount X char count begin document microtypesetupfexpansion false centering The font in this document is called by texttt showTestFont par bigskip TestFont selectfont This line intentionally left empty linebreak hh A Z charcount 65 loop testprotrusion char charcount advance charcount 1 ifnum charcount lt 91 repeat hh a z charcount 97 loop testprotrusion char charcount advance charcount 1 ifnum charcount lt 123 repeat hh 0 9 charcount 48 loop testprotrusion char charcount advance charcount 1 ifnum charcount lt 58 repeat Ah testprotrusion r testprotrusion r testprotrusion r testprotrusion r testprotrusion r testprotrusion r testprotrusion 1 textexclamdown testprotrusion 1 textquestiondown testprotrusion r testprotrusion 1 testprotrusion NN N NN N N N N NNN N NNN NN NNN NN AUXILIARY FILE FOR MICRO FINE TUNING 193 04 testprotrusion char 05 testprotrusion 06 testprotrusion textendash 07 testprotrusion textemdash 08 testprotrusion textquoteleft 09 testprotrusion textquoteright 0 testprotrusion textquotedblleft testprotrusion textquotedblright testprotrusion quotesinglbase testprotrusion quotedblbase testprotrusion guilsinglleft te
81. min 263 let MT pr max Om 264 let MT ex min z MT ex s5 ESA 265 let MT ex max m MT sp nin 266 def MT sp min m MT sp max 267 let MT sp max m MT kn min 268 def MT kn min m 266 MT kn max 209 let MTCkn max Cm 270 package MT tr min 271 def MT tr min m MT tr max 272 let MT tr max m 273 package MT factor default Default factor 274 def MT factor default 1000 MT stretch default Default values for expansion MT shrink default 275 def MT stretch default 20 MT step default 276 def MT shrink default 20 27 7 def MT step default 4 MT letterspace MT letterspace default ifMT document 14 1 4 MT maybe etex MT requires pdftex MT requires luatex MT lua 283 284 285 286 287 288 289 29 291 292 293 294 295 296 297 298 IMPLEMENTATION Preliminaries 43 Default value for letterspacing in thousandths of lem package let MT letterspace m ne def MT letterspace default 100 package Our private test whether we re still in the preamble newif ifMT document Auxiliary macros For definitions that depend on e TEX features ifcase 0 ifx eTeXversion undefined 1 else ifx eTeXversion relax 1 else ifcase eTeXversion 1 fi fi fi else catcode Q 9 Ncatcode N X 14 fi debug MT dinfo nl O this is debug Q not debug etex For definitions that depend on a particular pdf TEX version def MT requires
82. pad ppl ptm ugm textless 200 100 textgreater 100 200 1795 pmn textless 100 textgreater L 100 1796 pmn textvisiblespace 100 100 not in LY1 A797 F 4798 The Imodern fonts used to restore the original settings from OT1 fonts Now they require even other settings though 799 cmr 4800 SetProtrusion 801 name lmr T1 802 load cmr T1 4803 encoding T1 LY1 4804 family lmr 805 4806 textquotedblleft 300 400 textquotedblright 300 400 4807 808 809 cmr Settings for the T2A encoding generic Computer Modern Roman and Minion 810 m t cmr pmn SetProtrusion m t name T2A default cmr L name cmr T2A pmn name pmnj T2A m t load default cmr load cmr default pmn load pmnj default 4818 encoding T2A 4819 m t T 820 cmr family cmr T 821 pmn family pmnj T 823 CYRA 50 50 824 CYRG 50 4825 CYRK 50 4826 CYRT 50 50 827 CYRH 50 50 828 CYRU 50 50 4829 pmn CYRS 50 T 4830 pmn CYRO 50 50 831 cyrk L 50 4832 cyrg L 50 4833 cyrh 50 50 m t pmn cyru 50 50 cmr cyru 50 70 m t _ 100 100 _ 200 200 838 m t textbackslash 100 200 quotedblbase 400 400 cmr textbackslash 200 300 quotedblbase 400 400 pmn textbackslash 100 200 quotedblbase 300 30
83. pdftex 1 ifnum MT pdftex no lt 1 expandafter secondoftwo else expandafter firstoftwo fi T debug MT requires pdftex6 pdftracingfonts 1 relax For definitions that depend on luaT X lua let MT requires luatex secondoftwo ifx directlua undefined else ifx directlua relax else let MT requires luatex firstoftwo fi fi debug MT dinfo nl0 this is MT requires luatex not luatex Communicate with lua Beginning with lua YX 0 36 directlua no longer requires a state number luatexversion ought to have been enabled by the format MT requires luatex 3 ifnum luatexversion lt 36 def MT lua directlua0 else def MT lua directlua fi Some functions are loaded from a dedicated lua file This avoids character escaping problems and incompatibilities between versions of lus YX If available we ll use the luatextra package to load the module MT luat if luatextra and luatextra use_module then luatextra use_module microtype else dofile kpse find file microtype lua IMPLEMENTATION Preliminaries 44 318 end 319 relax 320 lua 321 package 32 NR package letterspace Here it begins The module was contributed by Elie Roux luafile if microtype then we simply don t load else R oO BR Ww SI Ra microtype R MM M M M LG microtype module 3 31 name microtype 32 version 2 4 33 date 2010 01 10 34 description mi
84. remove it from the list and set the MT options remaining keys 2946 def MT set named keys 1 2 2047 def x 1name 2 3 nil 2948 setkeys 1 name 2 2949 gdef MT options 1 3 2950 MT rem from clist name MT options 2951 th 2952 x 2 name nil 2953 expandtwoargs setkeys 1 MT options 2954 MT def ine code key Define the keys for the configuration lists which are setting the codes in pdf TEX speak 2955 def MT def ine code key 1 2 2956 define key MTO 2 1 C 2957 tempcnta ne 2958 MT map clisten 1 2959 KV sp def MT val 1 Here too we allow for something like bf It will be expanded immediately 2960 MT get highlevel 1 2961 MT edef n MT temp 1 the tempcnta MT val 2962 advance tempcnta ne 2963 yh 2964 YA 2965 MT def ine code key size MT tempsize must be in a csname so that it is at least relax not undefined 2966 def MT def ine code key size 1 7 2967 define key MTO 1 size UD 2968 MT map clist n 1 7 2969 KV sp def MT val 1 2970 expandafter MT get range MT val nil 97 ifx MT val relax else 97 MT exp cs MT xadd MT tempsize MT lower MT upper MT curr set name 1 2 3 4 l fi 975 TN 6 T M MM MM M ol MT def ine code key f ont 2978 def MT def ine code key font 1 7 2979 define key MTO 1 font 2980 MT map clist n 1 7 2981 KV sp def MT val 1 2982 MT ifstreq
85. source file T cmr pad pmn ugm SetProtrusion cmr L name cmr textcomp it pad name pad textcomp it pmn L name pmn textcomp it ugm L name ugm textcomp it encoding TS1 cmr family cmr pad family pad padx padj pmn family pmnx pmnj ugm family ugm ugm shape it sl ugm shape it T cmr textquotestraightbase 300 600 pad pmn textquotestraightbase 400 400 cmr textquotestraightdblbase 300 600 pad textquotestraightdblbase 300 400 pmn textquotestraightdblbase 300 300 texttwelveudash 200 200 CONFIGURATION FILES Character protrusion 172 6057 cmr pad pmn textthreequartersemdash 150 150 6058 ugm textthreequartersemdash 200 200 6059 textquotesingle 600 300 6060 pad textquotesingle 800 100 6061 pmn textquotesingle 300 200 6062 m textquotesingle 500 500 6063 En textasteriskcentered 300 200 6064 pad textasteriskcentered 500 100 6065 pmn textasteriskcentered 200 300 6066 ugm textasteriskcentered 300 150 6067 pmn textfractionsolidus 200 200 6068 cmr textoneoldstyle 100 50 6069 d textoneoldstyle 100 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 Gei pmn textlbrackdbl 100 6086 pad pmn textrbrackdbl 100 p ug
86. ssel um die Eingabekodierung f r diese Liste einzustellen Das Font Set kann wie blich eingestellt werden Die einzige Ausnahme hierbei ist dass exakt eine Kodierung gew hlt werden muss Die Vererbungslisten werden als Paare der Form base character Liste der erbenden 5 7 DeclareMicrotypeVariants DeclareMicrotypeVariants DeclareMicrotypeAlias LoadMicrotypeFile MICRO FEINABSTIMMUNG Konfigurationsdateien 22 Zeichen deklariert Solange Sie keine abweichende Kodierung oder einen sehr eigen artig geformten Font verwenden sollte es keinen Grund geben die standardm igen Vererbungseinstellungen zu ndern In der Hauptkonfigurationsdatei microtype cfg und den anderen font spezifischen Konfigurationsdateien k nnen Sie Beispiele zu all diesen Befehlen finden Konfigurationsdateien Die Standardkonfiguration beinhaltet Vererbungseinstellungen Deklarationen von Font Sets und alias Fonts sowie generische Hervorragung Expansion Spacing und Kerning Einstellungen und wird aus der Datei microtype cfg geladen Sie k nnen diese Datei mit eigenen Einstellungen erweitern oder eine andere Konfigurations datei mit der config Option laden siehe Abschnitt 3 5 Wenn Sie den Weg einschlagen neue Einstellungen f r eine Fontfamilie zu treffen sollten Sie diese in eine separate Datei stecken deren Name mt Fontfamilie cfg z B mt cmr cfg lauten muss und welche alle Befehle enthalten muss die in di
87. temp MT temp the tempdima T package Adjust outer kerning def MT ls outer k ifhmode kern MT outer kern relax fi package IMPLEMENTATION Font setup 83 14 2 6 Disabling ligatures MT noligatures 970 971 972 973 974 975 976 977 978 979 980 981 982 MT noligatures 983 984 985 M M MM C 14 2 7 MT load list SI LA h2 h2 KA LA LA KA KA KA H DN The possibility to disable ligatures is a new features of pdf TEX 1 30 969 MT requires pdftex5 def MT noligatures MT dotrue let tempa MT n1 setname MT map clist n font encoding family series shape size 7 MT ifdef ined n TF MT checklist Qt csname MT checklist 1 endcsname MT checklist 1 n1 3 ifMT do MT noligatures MT Cfont MTCnl ligatures fi This is also used by MT set tr codes def MT noligatures 1 2 MT ifdef ined cQTF 2 Early Mik TpxX versions before 2 5 2579 didn t know tagcode MT ifdefined c TF tagcode No inputenc key let MT warn maybe inputenc empty def MT curr list name Cbackslashchar DisableLigatures MT map clist c 2 KV sp def tempa 1 MTO get slot ifnum MT char gt m ne tagcode 1 MT char m ne fi MT vinfo Disabling ligatures for characters 2 i0 pdfnoligatures 1 MT warning Cannot disable selected ligatures pdftex doesn t MessageBreak know backslashchar tagcode Disabling all ligatures of MessageBreak th
88. with whatever technical specifications you wish while maintaining the availability integrity and reliability of that work If you do not see how to achieve your goal while meeting these conditions then read the document cfgguide tex and modguide tex in the base IATEX distribution for suggestions on a computer system This processing may in clude using installation facilities provided by the Work transformations of the Work copying of components of the Work or other activities Note that modification of any installation facilities pro vided by the Work constitutes modification of the Work Current Maintainer A person or persons nominated as such within the Work If there is no such explieit nomination then it is the Copyright Holder under any applicable law Base Interpreter A program or process that is nor mally needed for running or interpreting a part or the whole of the Work A Base Interpreter may depend on external com ponents but these are not considered part of the Base Interpreter provided that each external com ponent clearly identifies itself whenever it is used interactively Unless explicitly specified when app lying the license to the Work the only applicable Base Interpreter is a IXTEX Format or in the case of files belonging to the IXTEX format a program implementing the TEX language Conditions on Distribution and Modification 1 Activities other than distribution and or modif
89. wurde Derzeit unterst tzt microtype franz sische t rkische und englische Buchstabenabst nde auch bekannt als nonfrenchspacing F r unbekannte Sprachen werden alle Kontexte zur ckgesetzt Erneute Betrachtung der Funktion Letterspacing amount general text Wahrend die tracking Funktion die im Abschnitt 5 3 beschrieben wurde fiir S tze von Schriftarten gilt k nnen sie letterspace benutzen um k rzere St cke des Textes zu erzeugen unabh ngig von der Schriftart in dem sich der Schriftsatz befindet F r solche Ad hoc Zeichenabst nde bestizt microtype zwei Befehle unabh ngig davon ob die tracking Option aktiviert ist die auf die gleiche Weise verwendet werden k nnen wie die I4TEX Befehle textls welches auch im Mathemodus funktioniert erwartet der Text im notwendigen Argument w hrend lsstyle letterspacing f r alle nachfolgenden Schriften bis zum Ende der aktuellen Gruppe aktiviert wird Die Favoriten Version von textls f gt keine zus tzlichen Buchstabenabst nde vor oder nachdem Text ein was f r z B Absatztitel n tzlich sein kann Standardm fig wird jedes Zeichen mit 100 1000 em 0 1 em von einander getrennt dieser Betrag kann im optionalen Argument von textls durch Verwendung des NSetTracking Befehl oder global ber die letterspace Paketoption ge ndert werden mit abnehmender Signifikanz in dieser Reihenfolge lslig ligature 13 Seitdem die Befehle textls und lsstyle au
90. 0 ddagger 7B 100 mathparagraph 7C 100 100 clubsuit 7D 100 100 diamondsuit 7E 100 100 heartsuit 7F 100 100 spadesuit Remaining slots in the source file 6377 6378 We don t bother about largesymbols since it will only be used in display math where protrusion doesn t work anyway It s declared as DeclareSymbolFont largesymbols OMX cmex m n 6379 cmr 6380 cfg t CONFIGURATION FILES Character protrusion 178 15 8 7 AMS symbols Settings for the AMS math fonts amssymb 6381 cfg u Symbol font a 6382 msa 6383 MSetProtrusion 3384 name AMS a 6385 encoding U 6386 family msa T 6387 6388 05 150 250 centerdot 6389 06 100 100 lozenge 6390 07 50 50 blacklozenge 6391 08 50 50 circlearrowright 6392 09 50 50 circlearrowleft 6393 OA 100 100 rightleftharpoons 6394 OB 100 100 leftrightharpoons 6395 OD 50 200 Vdash 6396 OE 50 200 Vvdash 6397 OF 70 150 vDash 6398 10 100 150 twoheadrightarrow 6399 11 100 150 twoheadleftarrow 6400 12 41 50 100 leftleftarrows 6401 13 50 80 rightrightarrows 6402 14 120 120 upuparrows 6403 15 120 120 downdownarrows 6404 16 200 200 upharpoonright 6405 17 200 200 downharpoonright 6406 18 200 200 up
91. 0 cmr textquotedbl 300 300 textquotedblleft 200 600 m t guillemotleft 200 200 guillemotright 200 200 20 Contributed by Karl Karlsson CONFIGURATION FILES Character protrusion 151 843 cmr guillemotleft 300 200 guillemotright 100 400 4844 pmn guillemotleft 200 200 guillemotright 150 300 4845 m t cmr textbraceleft 400 200 textbraceright 200 400 846 pmn textbraceleft 200 textbraceright L 300 847 m t cmr textless 200 100 textgreater 100 200 4848 pmn textless 100 textgreater 100 849 850 4851 m t cmr pmn Settings for the QX encoding generic and Times It also includes some glyphs otherwise in TS1 4852 xm t ptm 4853 SetProtrusion 854 m t name QX default 855 ptm name ptm QX 4856 m t load default 857 ptm load ptm default 858 m t 1 encoding QX 4859 ptm L encoding QX 4860 ptm family ptm ptmx ptmj 861 1 862 ME 50 4863 ptm 200 200 4864 100 100 865 textunderscore 100 100 A866 textbackslash 100 200 A867 quotedblbase 400 400 868 m t guillemotleft 200 200 guillemotright 200 200 869 ptm guillemotleft 300 300 guillemotright 200 400 4870 textexclamdown 100 textquestiondown 100 4871 m t textbraceleft 400 200 textbraceright 200 400
92. 0 quotedblbase 150 500 pad ppl quotesinglbase 500 500 quotedblbase 400 400 oy quotesinglbase 300 700 quotedblbase 300 500 m t ppl ptm guilsinglleft 400 400 guilsinglright 300 500 bch pmn guilsinglleft 300 400 guilsinglright 200 500 cmr guilsinglleft 500 300 guilsinglright 400 400 pad guilsinglleft 500 400 guilsinglright 300 500 em guilsinglleft 400 400 guilsinglright 300 600 m t ppl guillemotleft 300 300 guillemotright 300 300 bch pmn guillemotleft 200 300 guillemotright 150 400 cmr guillemotleft 400 100 guillemotright 200 300 pad guillemotleft 300 300 guillemotright 200 400 ptm guillemotleft 300 400 guillemotright 200 400 ugm guillemotleft 300 400 guillemotright 300 400 m t pad ppl ugm textexclamdown 100 textquestiondown 200 cmr ptm textexclamdown 200 textquestiondown 200 P textexclamdown 50 textquestiondown 50 m t ppl ugm textbraceleft 200 100 textbraceright 200 200 bch pmn textbraceleft 200 textbraceright 200 cmr pad ptm textbraceleft 400 100 textbraceright 200 200 bch pmn textless 100 textgreater 100 cmr pad ppl ptm textless 300 100 textgreater 200 100 pmn textvisiblespace 100 100 m
93. 0 e 700 72 F 700 73 G 500 g 700 74 H 700 h 700 75 K 700 k 700 76 M 700 m 700 77 N 700 n 700 78 0 500 o 700 79 P 700 p 700 4480 Q 500 q 700 481 R 700 482 S 700 s 700 483 U 700 u 700 4484 W 700 w 700 4485 Z 700 z 700 86 2 700 87 3 700 4488 6 700 489 8 700 490 9 700 4491 4492 93 m t 15 8 Character protrusion 4494 hh 1495 PROTRUSION 4496 For future historians Han Th Thanh s original settings from protcode tex converted to microtype notation SetProtrusion name thanh encoding 0T1 A 50 50 F 4 50 J 50 Jen K 50 L 4 50 CONFIGURATION FILES Character protrusion 144 50 50 50 50 50 50 50 50 50 50 50 50 1505 50 50 50 50 50 50 50 50 700 500 200 50 y 700 textendash textquoteleft textquotedblleft y 15 8 1 Normal SKM S d et H Pr MESH on 2 ci c9 w Kei U 700 500 200 50 200 700 500 300 textemdash 700 textquoteright 500 textquotedblright The default settings always use the most moderate value 1497 xcfg t 1498 SetProtrusion 4499 m t name default We also create configuration files for the fonts e Bitstream C
94. 0 v Z 700 z 2 700 3 700 6 700 8 700 9 700 CYRA 500 CYRB 700 CYRV 700 CYRG 700 CYRD 700 CYRE 700 CYRZH 700 CYRZ 700 CYRI 700 CYRISHRT 700 CYRK 700 CYRL 700 CYRM 700 CYRN 700 CYRO 500 CYRP 700 CYRR 700 CYRS 700 CYRT 700 CYRU 700 CYRF 700 CYRH 700 CYRC 700 CYRCH 700 CYRSH 700 CYRSHCH 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 cyra 700 cyrb 700 cyrv 700 cyrg 700 cyrd 700 cyre 700 cyrzh 700 cyrz 700 cyri 700 cyrishrt 700 cyrk 700 cyrl 700 cyrm 700 cyrn 700 cyro 700 cyrp 700 cyrr 700 cyrs 700 cyrt 700 cyru 700 cyrf 700 cyrh 700 cyrc 700 cyrch 700 cyrsh 700 cyrshch 700 Contributed by Karl Karlsson CONFIGURATION FILES Character protrusion 143 4455 CYRHRDSN 700 cyrhrdsn 700 456 CYRERY 700 cyrery 700 57 CYRSFTSN 700 cyrsftsn 700 4458 CYREREV 700 cyrerev 700 4459 CYRYU 700 cyryu 700 4460 CYRYA 700 cyrya 700 461 462 T5 encoding does not contain AE ae OE and oe 4463 SetExpansion 4464 name T5 4465 encoding T5 4466 467 A 500 a 700 68 B 700 b 700 69 C 700 c 700 70 D 500 d 700 71 E 70
95. 0 100 supsetneqq 26 100 50 varsubsetneqq 27 50 100 varsupsetneqq 28 100 50 subsetneq 29 1 50 100 supsetneq 2A 100 50 nsubseteq 2B 50 100 nsupseteq 2c 50 100 nparallel 2D 100 150 nmid QE 150 150 nshortmid QF 100 100 nshortparallel 30 150 nvdash 31 150 nVdash 6586 6587 6588 6589 6590 6591 15 8 8 6592 6593 6594 6595 6596 6597 6598 6599 CONFIGURATION FILES Character protrusion 181 32 33 34 35 36 37 38 39 3A 3B 30 3D 3E 3F 60 i 68 69 6A 6B 60 6D 6 amp E 6F 70 71 15 m 73 74 75 76 77 178 79 7A 7B 7F 100 100 100 200 100 200 100 100 50 100 100 100 100 200 50 50 50 50 200 50 100 100 50 50 150 200 200 100 200 150 100 50 100 50 50 200 300 100 200 50 100 50 50 50 100 50 50 100 100 50 150 50 200 100 50 200 222222222222 2222 22 2222 2222 2222 22 2222 2222 2222 22 22 22 2222 2222 22 22 22 22 22 22 22 nvDash nVDash ntrianglerighteq ntrianglelefteq ntriangleleft ntriangleright nleftarrow nrightarrow nLeftarrow nRightarrow nLeftrightarrow nleftrightarrow divideontimes v
96. 0 200 cyrk 200 200 cyrs 100 100 cyrr 100 100 cyrh L 100 100 cyru 100 100 cyrt 1 50 50 cyrp sl 50 50 Contributed by Karl Karlsson CONFIGURATION FILES Interword spacing 189 6943 cyri 50 50 6944 cyrishrt 50 50 6945 6946 6947 m t 15 9 1 Nonfrenchspacing The following settings simulate nonfrenchspacing since space factors will be ignored when spacing adjustment is in effect They may be used for English contexts From the TEXbook If the space factor f is different from 1000 the interword glue is computed as follows Take the normal space glue for the current font and add the extra space if f gt 2000 Then the stretch component is multiplied by f 1000 while the shrink component is multiplied by 1000 f The extra space fontdimen 7 for Computer Modern Roman is a third of fontdimen 2 i e 333 6948 NSetExtraSpacing 6949 name 7 nonfrench cmr 6950 load default 6951 context nonfrench 6952 encoding 0T1 T1 LY1 0T4 QX T5 6953 family cmr TL 6954 latex 1tx has def nonfrenchspacingt Nsfcode N 3000 sfcode 3000 sfcode 3000 6955 6956 6957 333 2000 667 333 2000 667 333 2000 667 H sfcode 2000 6958 333 1000 500 sfcode 1500 6959 s L 500 333 sfcode 1250 6960 250 200 6961
97. 064 5065 5066 5067 5068 5069 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 05 06 07 08 09 0 aaa oP WN Fa um m Oo Om Oo cU Ot Om c ct CONFIGURATION FILES Character protrusion 155 p pm m b m m cmr pad pmn ugm W 100 ppl 50 ptm 100 50 cmr ppl unm x 50 Jj cmr ptm Y 100 pmn 50 ppl 100 50 pmn Z 50 pmn d i 50 pad pmn f 100 pmn i 1 30 pmn j 30 pmn 1 21 100 bch o 50 50 bch p t 50 pmn p 50 bch q 50 pmn r lt L 50 bch t _ 50 pmn ugm 50 bch w 1 50 pmn ugm w 50 bch y L 50 cmr 0 100 TL bch ptm 150 100 cmr 1 200 50 ad 1 150 TL n i 50 ppl 100 ugm 150 150 cmr 100 100 pad ppl on 2 50 pmn 50 bch m 50 cmr 3 100 100 pmn 3 100 ptm 3 100 50 bch 4 100 L cmr pad 150 ppl ptm 50 cmr 5 100 ptm 5 50 bch 6 50 cmr 6 100 bch pad pm 7 100 cmr 200 150 pmn 20 T ppl 50 cmr
98. 0T4 QX T5 TS1 TL 4087 088 DeclareMicrotypeSet basicmath 4089 encoding DT1 T1 T2A LY1 0T4 0X T5 0ML OMS 4090 family rm sf 091 series md 092 size normalsize footnotesize small large 4093 4094 095 DeclareMicrotypeSet basictext 4096 encoding 0T1 T1 T2A LY1 0T4 QX T5 4097 family rm sf 098 series md 099 size normalsize footnotesize small large LOO 4101 02 DeclareMicrotypeSet smallcaps 103 encoding 0T1 T1 T2A LY1 0T4 0X T5 TS1 04 shape scx 05 07 DeclareMicrotypeSet footnotesize 08 encoding 0T1 T1 T2A LY1 0T4 0X T5 TS1 09 size small 0 encoding 0T1 T1 T2A LY1 0T4 0X T5 TS1 1 2 DeclareMicrotypeSet scriptsize 3 4 size footnotesize 5 7 DeclareMicrotypeSet normalfont 8 font The default sets 20 hhh 4121 4122 4123 4124 4125 4126 4127 4128 15 2 4129 4130 4131 4132 4133 139 414 141 142 143 144 4145 4146 4147 CONFIGURATION FILES Font variants and aliases 135 hh DEFAULT SETS DeclareMicrotypeSetDefault protrusion alltext DeclareMicrotypeSetDefault expansion basictext DeclareMicrotypeSetDefault spacing basictext DeclareMicrotypeSetDefault kerning alltext DeclareMicrotypeSetDefault tracking smallcaps Font variants and aliases LEE hh FONT V
99. 1 5 Lyr 58 hhh TRACKING LETTERSPACING 0T1 T1 T2A LY1 0T4 QX T These are H n Th Th nh s original expansion settings They are used for all fonts until somebody shows mercy and creates font specific settings name encoding A 500 AE 500 B 700 C 700 D 500 E 700 375 F 700 380 G 500 381 H 700 382 K 700 383 M 700 384 N 700 385 0 500 4386 OE 500 387 P 700 388 Q 500 389 R 700 390 S 700 391 U 700 392 W 700 393 Z 700 394 2 700 395 3 700 396 6 700 397 8 700 398 9 700 default OT1 0T4 QX T1 LY1 T a ae D Go CO o HRH SS o oe a 0 H gg mo 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 700 4366 Uhh 2 2 2 2 4367 hhh EXPANSION 368 369 SetExpansion 403 404 405 4406 4407 4408 4409 no GG Go KA ra n LA bh LA KA LA LA 2 D um 0 K ra Q n QU CQ UC oU Oo Pum a 18 CONFIGURATION FILES Font expansion 142 Settings for Cyrillic T2A encoding Y SetExpansion name T2A encoding T2A A 500 a B 700 b C 700 c D 500 d E 700 e F 700 G 500 E H 700 h K 700 k M 700 m N 700 n 0 500 o P 700 P Q 500 q R 700 S 700 s U 700 u W 70
100. 1 20 protrusion has to be set up first beginning with 1 20 the order doesn t matter MT protrusion MT expansion F Interword spacing and kerning pdfT X 1 40 71 MT requires pdftex6 g addto macro MT setupfont MT spacing MT kerning relax Disable ligatures pdfTEX 1 30 MT requires pdftex5 g addto macro MT setupfont MT noligatures relax g addto macro MT setupfont 7 Debugging debug MT show pdfannot1 Finally register the font so that we don t set it up anew each time MT register font fi The new 1 40 4 pdfcopyfont command allows to expand a font with different parameters or to use more than one set of protrusion factors for a given font within one paragraph It will be used when we find a context for SetProtrusion or SetExpansion in the preamble or when the package has been loaded with the copyfonts option let MT copy font relax MT requires pdftex7 def MT copy fontet For every new protrusion and expansion contexts we create a new copy xdef MT font copy csname MT Ofont MT pr context MT ex context endcsname pdfTEX doesn t allow to copy a font that has already been copied and expanded letterspaced Hence we have to get the original expandafter ifx MT font copy relax edef MT font orig csname expandafter string font name orig endcsname expandafter ifx MT font orig relax MT exp two c MT glet MT f ont orig font name else MT exp two c let font na
101. 100 100 100 100 150 150 150 150 200 200 100 100 100 100 100 100 100 100 300 800 100 100 100 100 100 100 100 100 CONFIGURATION FILES Character protrusion 6781 73 200 100 6782 76 100 6783 77 100 6784 78 50 50 6785 79 100 100 6786 7A 100 100 6787 7D 150 150 6788 7E 100 100 6789 A8 100 100 6790 19 100 100 6791 AB 200 200 6792 BA 200 6793 BB 200 6794 BD 200 200 6795 DE 200 200 6796 6797 6798 eus Euler Fraktur font eufrak 6799 xeuf 6800 SetProtrusion 6801 name mathfrak 6802 encoding U 6803 family euf 6804 6805 A 50 6806 B L 50 6807 C 50 50 6808 D L 80 6809 E 50 Is 6810 G 50 6811 L L 80 6812 0 d 50 6813 T 80 6814 X 80 50 6815 Z 80 50 6816 b 1 50 6817 c 50 6818 K L 50 6819 p t1 50 6820 q 50 EM 6821 vs 1 50 6822 w 50 6823 x _ 50 6824 1 100 100 6825 2 80 80 6826 3 80 50 6827 4 80 50 6828 7 50 50 6829 12 500 500 6830 13 500 500 6831 200 6832 gt 200 300 6833 200 6834 200 6835 200 200 6836 200 250 6837 200 200 6838 300 300 CONFIGURATION FILES Character protrusion 186 68
102. 19 f 1 50 5720 j 50 5721 1 241 50 5722 013 50 fl 5723 r 0 572 t 50 50 572 y 50 50 5726 5727 5728 m t 5729 cmr bch 5730 SetProtrusion 5731 bch L name bch sc T5 5732 bch load bch T5 5733 cmr L name cmr sc T5 5734 cmr load cmr T5 5735 encoding T5 5736 bch family bch 5737 cmr family cmr 5738 Shape sc 5739 5740 a 50 50 574 c 50 57 d lt L 50 574 50 97 g 50 L i 57 j 100 574 j 50 T 574 50 574 o 50 50 574 q Io 57 rs L 0 57 50 50 57 50 50 57 57 5755 cmr bch 5756 pmn 5757 SetProtrusion 5758 name 7 pmnx sc 5759 load pmnj sc 5760 encoding OT1 5761 family pmnx 5762 shape sc 5763 5764 1 230 180 5765 5766 5767 SetProtrusion 5768 name pmnx sc Ti 5769 load pmnj sc T1 of d 70 encoding T1 LY1 CONFIGURATION FILES Character protrusion 167 family pmnx shape sc 1 230 180 T 15 8 4 Italic small caps Minion provides real small caps in italics The slantsc package calls them scit Philipp Lehman s fontinstallationguide suggests si 77 NSetProtrusion Ce 778 name pmnj scit 779 load pmnj it 780 encoding 0T1 781 family pmnj 782 shape scit si 783 784 a 50 785 Nae d 50 7 b 20 50 c 50 50 d
103. 200 100 rightarrow CONFIGURATION FILES Character protrusion 177 22 100 100 uparrow 23 100 100 downarrow 24 100 100 leftrightarrow 25 100 100 nearrow 26 100 100 searrow 27 100 100 simeq 28 100 100 Leftarrow 6336 29 100 100 Rightarrow 6337 2A 100 100 Uparrow 6338 2B 100 100 Downarrow 6339 2C 100 100 Leftrightarrow 6340 2D 100 100 nwarrow 6341 QE 100 100 swarrow 6342 OF 100 propto 6343 30 lt 400 prime 6344 31 100 100 infty 6345 32 150 100 in 6346 33 100 150 ni 6347 34 100 100 triangle bigtriangleup 6348 35 100 100 bigtriangledown 6349 38 100 4 forall 39 100 exists 3A 200 neg 3E 200 200 top 3F 200 200 bot perp SE 100 200 wedge SF 100 200 vee 60 300 vdash 3357 61 300 dashv 6358 62 100 100 lfloor 6359 63 100 100 rfloor 6360 64 100 100 lceil 6361 65 100 100 rceil 6362 66 150 lbrace 6363 67 L 150 rbrace 6364 68 400 langle 6365 69 400 rangle 6366 6C 100 100 updownarrow 6367 6D 100 100 Updownarrow 6368 6E 100 300 backslash setminus c 72 100 100 nabla 79 200 200 dagger 7A 100 10
104. 234 Mi Still there Then we can begin We need the keyval package including the new KV sp def implementation 2 237 package MT toks We need a token register IMPLEMENTATION Preliminaries 42 238 newtoks MT toks ifMTOi A scratch if 239 newif i MT if 14 1 3 Declarations ifMT protrusion These are the global switches ifMT expansion 240 newif ifMT protrusion ifMT auto 241 newif ifMT expansion 242 newif ifMT auto ifMT selected Sg TT 943 newif ifMT selected ifMT noligatures 244 newif ifMT noligatures ifMT draft 245 newif ifMT draft ifMT spacing 246 newif ifMT spacing ifMTOk 247 newif ifMT kerning erning 248 newif ifMT tracking ifMT tracking 219 newif ifMT babel ifMTObabel grabe and numbers MT ex level let MT pr level tw MT pr factor 251 let MT ex level tw E let MT pr factor m MT ex fact TEE EEE 253 let MT ex factor m MT sp factor 254 1et MT sp factor m MT kn factor 255 let MT kn factor m MT pr unit Default unit for protrusion settings is character width for spacing space for MT sp unit kerning and tracking lem MT kn unit 256 let MT pr unit empty 257 let MT sp unit mCne 258 def MT kn unit 1em MT stretch Expansion settings MT shrink 259 let MT stretch m ne MT step 260 let MT shrink mCne 261 let MT step m ne MT pr min Minimum and maximum values allowed by pdf TEX MT pr max 262 def MT pr min m MT ex
105. 29 Ndocumentclass article 7030 7031 Here you can specify the font you want to test using 7032 the commands fontfamily fontseries and fontshape 7033 Make sure to end all lines with a comment character 7034 newcommand TestFont 7035 fontfamily ppl 7036 fontseries b 7037 fontshape it sc sl 7038 7039 7040 usepackage ifthen 7041 usepackage T1 fontenc 7042 usepackage latin1 inputenc 7043 usepackage verbose expansion alltext stretch 50 microtype 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 VO 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 AUXILIARY FILE FOR MICRO FINE TUNING 192 pagestylefempty setlength parindent Opt newcommand crulefill cleaders hbox mkern 2mu smash mkern 2mu hfill newcommand testprotrusion 2 ifthenelse equal 1 r 2 lorem ipsum dolor sit amet ifthenelse equal 1 r crulefill leftarrowfill 2 ifthenelse equal 1 1 crulefill rightarrowfill you know the rest ifthenelse equal 1 1 2 linebreak fontencoding encodingdefault fontseries seriesdefault fontshape shapedefault selectfont Here is the beginning of a line dotfill and here
106. 326 ocircumflex ocircumflex ocircumflex h ocircumflex d ocircumflex 327 ohorn V ohorn ohorn h ohorn d ohorn 328 U NU VU N7U Na U d U horn U 329 Uhorn Uhorn Uhorn h Uhorn d Uhorn 330 u u u u h u d u horn u 331 uhorn uhorn uhorn h uhorn d uhorn 332 Y lt Y V Y Y h Y d Y 333 y Cy Vy Vy M y M y 334 335 336 m t 15 5 7 Euro symbols Make Euro symbols settings simpler 337 zpeu 4338 DeclareCharacterInheritance 4339 encoding U 340 family zpeu zpeus eurosans 341 E 128 342 343 zpeu 344 amp mvs 345 DeclareCharacterInheritance 346 encoding OT1 347 family mvs T 348 164 099 100 101 T EURhv EURcr EURtm 349 Since 2006 05 11 that is one week after I ve added these settings after the package had been dormant for six years marvosym s encoding is correctly U instead of OTI 4350 DeclareCharacterInheritance 4351 encoding U CONFIGURATION FILES Tracking 141 family mvs 15 6 Tracking By default we only disable the f ligatures for those fonts that have any Thus ligatures and especially kerning for all other characters will be retained 4361 name 7 default 4362 no ligatures f 4363 encoding 364 1 365 15 7 Font expansion 56 m t 60 NSetTracking mvs 164 099 100 10
107. 39 400 400 6840 200 200 6841 200 6842 gt 200 6843 200 6844 6845 6846 euf 6847 cfg u 15 8 9 Euro symbols Settings for various Euro symbols Adobe Euro fonts packages eurosans europs ITC Euro fonts package euroitc and marvosym 6848 cfg e 6849 NSetProtrusion 6850 zpeu euroitc encoding U 6851 mvs 1 encoding 0T1 U 6852 zpeu family zpeu T 6853 euroitc family feuroitc euroitcs 6854 mvs family ms 6855 6856 zpeu E 50 6857 euroitc E 100 50 6858 mvs 164 50 50 NEUR 6859 mvs 068 50 100 EURdig 6860 6861 6862 zpeu euroitc 6863 SetProtrusion 6864 encoding U 6865 zpeu family zpeu 6866 euroitc family euroitc euroitcs 6867 shape it 6868 6869 zpeu E 100 50 6870 euroitc E 100 6871 6872 6873 zpeu euroitc 6874 zpeu 6875 SetProtrusion 6876 encoding U 6877 family zpeus eurosans 6878 6879 E 100 50 6880 6881 6882 SetProtrusion 6883 encoding U 6884 family zpeus eurosans 6885 shape it 6886 6887 E 200 6888 6889 6890 zpeu 22 Of course there are many more symbols in this font Feel free to contribute protrusion settings CONFIGURATION FILES Interword spacing 187 6891 cfg e 15 9 Interword spacing Default unit is space 6892 m t 6893 Ahh
108. 437 bch guilsinglleft 300 400 guilsinglright 200 500 5438 cmr guilsinglleft 500 300 guilsinglright 400 400 5439 bch guillemotleft 200 300 guillemotright 150 400 5440 cmr guillemotleft 400 100 guillemotright 200 300 5441 bch textbraceleft 200 textbraceright 200 5442 cmr textbraceleft 400 100 textbraceright 200 200 5443 bch textless 100 textgreater 100 5444 cmr textless 300 100 textgreater 200 100 5445 54 5 47 emr bch Slanted is very similar to italic 5448 cmr 5449 SetProtrusion 5450 name cmr sl 5451 load cmr it OT1 5452 encoding 0T1 0T4 5453 family cmr 5454 shape sl 5455 5456 L 1 50 5457 f 50 5458 300 5459 textendash 400 textemdash 300 5460 5461 5462 SetProtrusion 5463 name cmr sl T1 5464 load cmr it T1 5465 encoding T1 LY1 5466 family cmr 5467 Shape sl 5468 5469 L L 50 5470 f 50 5471 300 5472 textendash 400 textemdash 300 5473 5474 5475 SetProtrusion 5476 name cmr sl T2A 5477 load cmr it T2A 5478 encoding T2A CONFIGURATION FILES Character protrusion family cmr shape sl L 1 50 f 50 300 textendash 400 textemdash 300 SetProtrusion name cmr sl T5 l
109. 4607 608 609 610 618 4619 4620 4621 622 4623 624 625 CONFIGURATION FILES Character protrusion 146 7 pmn 1 1 50 pad ppl 50 50 ugm P 50 pad ppl 50 blg r i 50 blg r 100 80 cmr pad pmn t lt L 70 bch t 50t blg t 150 80 m t 4 _ 100 m t bch cmr pad pmn ppl ptm 50 50 big v 100 100 ten v 50 70 m t bch cmr pad pmn ppl ptm 50 50 uam w 50 70 blg x 50 50 ble x 100 100 m t bch pad pmn y 50 ib 50 100 cmr ppl ptm 50 70 em y 70 cmr 0 1 50 m t 1 50 50 bch blg pad ptm ugm 150 150 cmr 1 100 200 pmn 1 1 50 ppl 100 100 bch cmr pad ugm 50 50 blg 2 100 bch pmn 50 cmr pad ugm 3 50 50 ble 100 m t pad 50 50 bch 4 100 50 blg 4 100 cmr ugm 4 70 70 pmn 4 50 ptm 4 70 cmr B lt L 50 pad 5 50 50 bch 6 50 cmr 6 1 50 pad 6 50 50 m t 7 50 50 bch pad pmn ugm 50 80 blg 100 100 cmr ptm 50 100 ppl 7 50 cmr 50 bch pad 9 50 50 T L 50 m t cmr pad pmn ppl ptm ugm 700 bch 600 blg 400 500 blg
110. 61 let tempb empty def MT temp 1 2 3 4 5 MT get axis encoding 1 MT get axis family 2 MT get axis series 3 MT get axis shape 4 ifnum 6 gt z0 edef tempb tempb fi MT ifempty 5 MTQwarn axis empty size string normalsize def MT val x H def MT val 5 TL MT get size def MTOgetQaxis 1 2 def MT val 2 MT get highlevel 1 MT ifempty MT val MT warn axis empty 1 csname 1default endcsname expandafter def expandafter MTCval expandafter csname 1default endcsname relax expandafter g addto macro expandafter tempb expandafter MT val def MT warn axis empt y 1 2 7 MT warning 1 axis is empty in font specification MessageBreak MT temp Using 2 instead I CN 00 NONNNNNNN bs Cl AT ST OAT ALT E WWwWwwWwWnNNN ND wn UseMicrotypeSet d Ao 3 735 36 37 738 739 Doo PWN Fr CH NONNNNNNNNNNNNNDN hJ 3300000000000000 eee MT tr setname MT sp setname MT kn setname u DeclareMicrotypeSetDefault IMPLEMENTATION Configuration 103 We can finally assemble all pieces to define DeclareMicrotypeSet s keys They are also used for DisableLigatures WEE nl L MT def ine set key encoding 1 MT define set key family 1 MT define set key series 1 MT define set key shape 1 MT def ine set key size 1 MT def ine set key font 1 iad To use a particul
111. 6646 Extended by the eulervm package 6647 SetProtrusion 6648 name euler vm 6649 load euler 6650 encoding U 6651 family zeur 6652 6653 28 100 200 6654 29 100 200 6655 2A 100 150 6656 2B 100 150 6657 2c 200 300 6658 2D 200 300 6659 2E 100 6660 OF 100 bs 6661 SF 150 150 6662 5B 100 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 671 67 1 6712 6713 6714 6715 6716 6717 6718 6719 6720 CONFIGURATION FILES Character protrusion 183 SE 100 100 SE 100 100 80 50 81 200 250 82 100 200 T eur Euler Script font eucal eus SetProtrusion name euscript encoding U family eus A 100 100 B 1 50 100 C 50 50 D 50 100 E 150 100 F 50 D G L 50 F H 100 K 50 L 150 M 50 N 50 0 50 50 P 50 50 T 100 U 1 50 V 50 50 W t 50 50 X 50 50 Y 50 Z 50 100 00 250 250 18 200 200 3A 200 150 40 100 SE 100 100 SF 100 100 66 50 67 50 6E 200 200 T SetProt
112. 8 6049 6050 6051 6052 6053 6054 6055 6056 oP WN Hm CH CONFIGURATION FILES Character protrusion 171 ptm texttwosuperior 50 50 bch blg ugm textthreesuperior 100 200 cmr textthreesuperior 50 100 pad pmn textthreesuperior 200 200 ptm textthreesuperior 50 50 pmn textasciiacute 300 400 bch ugm textmu 100 bch pad pmn textparagraph 100 bch cmr pad pmn textperiodcentered 300 400 blg textperiodcentered 400 500 ptm textperiodcentered 300 300 ugm textperiodcentered 200 500 b i blg ugm Ntextonesuperior 200 300 cmr pad pmn textonesuperior 200 200 ptm textonesuperior 100 100 bch pad pmn ugm textordmasculine 200 200 blg cmr textordmasculine 100 200 bch cmr pmn texteuro 100 7 pad texteuro 50 100 bch texttimes 200 200 blg ptm texttimes 100 100 cmr texttimes 150 250 pad texttimes 100 150 pmn texttimes 70 100 ugm texttimes 200 300 bch pad pmn textdiv 150 200 big textdiv 100 100 cmr textdiv 150 250 ptm textdiv 50 100 ugm textdiv 200 300 ptm textperthousand 50 ugm textsection 100 ugm textonehalf 50 100 ugm textonequarter 50 100 ugm textthreequarters 50 100 ugm textsurd 100 Remaining slots in the
113. ARIANTS AND ALIASES These are the variants I happen to be using expert encoding oldstyle numerals swashes alternative display inferior and superior numerals DeclareMicrotypeVariants x j w a d 0 1 Other candidates 2 proportional digits e engraved f Fraktur g small text h shadow 1 outline n informal p ornaments r roman s sans serif t typewriter I ve omitted them since they seem hardly be used and or they are actually more than a variant i e they shouldn t share a file Fonts that are the same The Latin Modern fonts the virtual fonts from the ae and zefonts and the eco and hfoldsty packages oldstyle numerals all inherit the basic settings from Computer Modern Roman Some of them are in part overwritten later DeclareMicrotypeAlias lmr cmr lmodern DeclareMicrotypeAlias aer cmr ae DeclareMicrotypeAlias zer cmr zefonts DeclareMicrotypeAlias cmor cmr eco DeclareMicrotypeAlias hfor cmr hfoldsty The packages pxfonts and txfonts fonts inherit Palatino and Times settings respec tively also the TEX Gyre fonts Pagella and Termes formerly qfonts DeclareMicrotypeAlias pxr ppl pxfonts DeclareMicrotypeAlias qpl ppl TeX Gyre Pagella formerly qfonts QuasiPalatino The FPL New fonts a re implementation of Palatino DeclareMicrotypeAlias fp9x pplx FPL Neu DeclareMicrotypeAlias fp9j pplj 4 DeclareMicrotypeAlias txr ptm
114. D N N K b O oN Better use groups than plain ifs 4 def MT requires latex 1 5 ifnum MT plain lt 1 expandafter secondoftwo else expandafter firstoftwo fi 6 T 7 plain pdfIEX s features for which we provide an interface here haven t always been available and some specifics have changed over time Therefore we have to test which pdfTEX we re using if any MT pdftex no will be used throughout the package to respectively do the right thing Currently we have to distinguish seven cases for pdf TEX not running pdf TEX pdfIEX lt 0 14f micro typographic extensions 0 14f g protrusion relative to 1em gt 0 14h Eco No 9 automatic font expansion protrusion no longer has to be set up first scale factor fixed to 1000 default ef code 1000 gt 1 20 IMPLEMENTATION Preliminaries 40 5 left right marginkern pdfnoligatures pdfstrcmp pdfescapestring gt 1 30 6 adjustment of interword spacing extra kerning letterspacef ont pdfmatch pdftracingfonts always e T X gt 1 40 7 letterspacefont doesn t disable ligatures and kerns pdfcopyfont gt 1 40 4 148 def MT pdftex no 0 A hack circumventing the TEX Live 2004 hack which undefines the pdf TEX primi tives in the format in order to hide the fact that pdf TEX is being run from the user This has been fixed in TEX Live 2005 49 ifx normalpdftexversion undefined else 50 let pdftexversion norm
115. Das microtype Paket Eine Schnittstelle fiir die mikrotypographischen Erweiterungen von pafTEX R Schlicht w m 1 gmx net Zusammenfassung Das microtype Paket stellt eine IXTEX Schnittstelle f r die mikrotypographischen Erweiterungen von pdfTEXbereit besonders markant Zeichenvorspr nge und Font expansion weiterhin die Justierung von Zeichenabst nden innerhalb W rter und zus tzliches Kerning sowie durch Bindestrich trennbaren Sperrsatz Tracking und die M glichkeit alle oder ausgew hlte Ligaturen abzuschalten Es erlaubt diese Features auf anpassbare Fonts anzuwenden und alle mikrotypographischen Aspek te dieser Fonts in einer einfachen und flexiblen Art und Weise zu konfigurieren Einstellungen f r verschiedene Schriftarten werden bereitgestellt Zu beachten ist dass Fontexpansion und Zeichenvorspr nge nur mit pdf DES Version 0 14f arbeiten Automatische Fontexpansion erfordert mindestens Version 1 20 oder neuer Ligaturen zu deaktivieren erfordert pdf TEX 1 30 Sperrsatz und die Justierung von Zeichenabst nden innerhalb W rter sowie Kerning erfordern Version 1 40 Das Paket aktiviert standardm ig Protrusion und Expansion falls sicher angenommen werden kann dass diese funktionieren Diese beiden Features sind ebenso verf gbar mit luaTEX Das microtype Paket arbeitet nicht mit XYIEX Das alternative Paket letterspace welches ebenso mit einfachem TpXarbeitet stellt nur die Befehle f r Sperrsatz Letter spacing bere
116. ILES Character inheritance 138 4213 t Nc t v t 4214 U U U 7U U H U r U 4215 u u u u u H u r u 4216 Y y Y 4217 y Uy V yl 4218 Z Z Z v Z A219 z z z v z The soft hyphen often has reduced right side bearing so that it may already be protruded hence no inheritance 4220 127 221 222 dam 15 5 3 LY1 More characters 008 fl 012 fi 014 ffi 015 M ze CE 4223 NDeclareCharacterInheritance 4224 encoding LY1 4225 A NA VPA VA VA HA NE A 4226 a Va Va Va Va V a Nr a 4227 C Dech 4228 c Xe c 229 D DH 4230 E VE VE VE VWE 4231 e e e 7e e 4232 f 011 ff 4233 I 8I I 7I I 4234 Yi ANAT Vr A a NS 4235 L L 4236 1 WM 4237 N VN 238 n Vn 4239 0 0 0 0 0 0 0 4240 o 0 0 0 0 0 o 4241 S v SJ 242 s v s 4243 U NU VU NU VU 4244 u Nu Vu Vu Vu 4245 y y yY 4246 y Vy Vy 4247 Z v Z 4248 z v z 249 A250 15 5 4 OTA The Polish OT1 extension More interesting characters here 009 fk 012 fi 013 fl 014 ffi 015 ff JE 4251 DeclareCharacterInheritance 4252 encoding OT4 T 1253 A Nx A 4254 a k a 4255 c vc 4256 c Diet A257 E k E
117. MENTATION Font setup 76 the kerning letterspace def MT ls aftergroup MT set curr ok MT 1lsCouter k microtype also adjusts spacing If tikz expandcount is greater than zero we re inside or at the end of a tikz node where we don t want to do anything lest we disturb tikz package MT addto setup ifpackageloaded tikz def MT ls aftergroup ifnum tikz expandcount gt z else MT set curr os MT set curr ok expandafter MT tr outer r fi def MT ls aftergroup MT set curr os MT set curr ok MT tr outer r Various settings only for the microtype version def MT get tr opt MT set listname MT ifdefined nOT MTOtr c MTOtr cOname MT let cn MT letterspace MTOtr c MTOtr cO name Different unit MT ifdefined n T MT tr c MTO tr c name Qunit MT let cn MTOtr unit MTOtr c MTOtr c name unit ifdim MT tr unit 1em let MT tr unit undefined else MT let cn tempb MT amp tr c MTCtr cCname MT get unit MTOtr unit let MT tr factor Cm MT scale to em edef MT letterspace number tempcntb fi yh yh Adjust interword spacing MT get tr opt spacing ispace MT get tr opt outerspacing ospace 7 Adjust outer kerning MT get tr opt outerkerning okern Which ligatures should we disable empty means all undefined none MT get tr opt noligatures ligatures D def MT getOtr optO 1 2 MT ifdefined n T MTOtr c MT tr cOname C 1 MT let nn MTOtrO 2 MTOt
118. MT tempb tempa fi C LA h h2 h2 h2 h2 K K K K VS CON nm MT if list exists MT context2145 def MT if list exists 6 MT let cn MT context MT MT feat context 7 MT ifstreq MT context let MT context empty relax 8 MT get listname MT feat Qc 9 MT ifdefined c TF MT listname 0 MT edef n MT MT feat cCname MTClistname 1 ifMT nonselected 2 MT vinfo Applying non selected expansion list MT listname 3 4 5 else MT vinfo Loading nameuse MT abbr MT feat list MT listname fi firstoftwo H Since the name cannot be empty this is a sound proof that no matching list exists 2158 MT let nc MT MT feat c name empty LA h2 h2 K K h2 K K K K K LA CO Om Com Oo Ct Om Ct a SI Don t warn if selected false 59 ifMT nonselected 60 MT vinfo Applying non selected expansion no list 61 else N NND Tracking doesn t require a list either 62 MT ifstreq MT feat tr relax 63 MT warning I cannot find a nameuse MT abbr MT feat list 64 for font MessageBreak MT font 7 65 ifx MT context empty else space context MT context fi 166 Switching off MessageBreak nameuse MT abbr MT feat for this font 67 T 68 fi 69 secondoftwo 70 X 71 MT get inh list The inheritance lists are global no context MT context2 def MT get inh list let MT context empty LA h2 h2 K K h2 hJ K K WN NN 3 w
119. MT addto annot line number inputlineno Hi If MT font is empty no substitution has taken place hence font name is correct Otherwise if they are different font name does not describe the font actually used This test will catch first order substitutions like bx to b but it will still fail if the substituting font is itself substituted MT let cn MTCfont MTQsubst expandafter string font name ifx MT font relax let MT font font name else ifx MT font font name else debug MT addto annot substituted with MT font MT register subst font fi fi MT setupfont package letterspace MT tracking endgroup yh package Remember the patched command for later let MT pickupfont pickup font Additionally we hook into do subst correction which is called if a substitution has taken place to record the name of the ersatz font Unfortunately this will only work for one level substitutions We have to remember the substitute for the rest of the document not just for the first time it is called since we need it every time a font is letterspaced g addt o macro do subst correction edef MT font csname curr fontshape f size endcsname MT glet nc MT subst expandafter string font name MTO font Inside add accent we have to disable microtype s setup since the grouping in the patched pickup font would break the accent if different fonts are used for the base character and the accent Fortunately ATEX takes
120. MT factor default 7 8 def tempa 1 549 MT ifint tempa 550 edef MT pr factor tempa MT optwarn nan 1 factor w on w on Ww ww Gu oO C ag e ol bi Fa D Unit for protrusion codes 3 define key MT unit character 1 def tempa 1 5 MT ifstreq tempa character relax 355 355 3555 355 3556 MT ifdimen tempa 3557 let MT pr unit tempa 3558 MT warning nl tempa is not a dimension MessageBreak 3559 Ignoring it and setting values relative to MessageBreak 3560 character widths 3561 Y 3562 T 14 4 2 Reading the configuration file The package should just work if called without any options T herefore expansion will be switched off by default if output is DVI since it isn t likely that expanded fonts are available This grows more important as modern TEX systems have switched to the pdf TEX engine even for DVI output so that the user might not even be aware of the fact that she s running pdf TEX 3563 3564 3565 3566 3567 3568 3569 MT config file MT get config 3586 3587 3588 3589 3590 MT check active set 3591 3592 3593 3594 3595 3596 3597 3598 IMPLEMENTATION Package options 122 MT protrusiontrue ifnum pdfoutput lt ne else Also we only enable expansion by default if pdf TEX can expand the fonts automa tically MT requires pdftex4 MT expansiontrue MT autotrue relax fi The main configuratio
121. O0 Get the name of the inheritance list and parse it 029 MT get inh list Set an input encoding 030 MT set inputenc c Load additional lists 031 MT load list MT pr c name 032 MT set listname Load the main list 033 MT let cn tempc MTCpr c MTCpr c name 034 expandafter MT set codes tempc relax 035 MT reset pr codes 036 T MT get font dimen six If fontdimen 6 is zero character protrusion spacing kerning and tracking won t MT dimen six work and we can skip the settings for example the dsfont and fourier fonts don t specify this dimension this is probably a bug in the fonts 037 def MT get Of ont dimen six 038 ifnum fontdimen6 MTOfont z 039 MT warningen1 040 Font MT font does not specify its MessageBreak 041 backslashchar fontdimen 6 width of an em Therefore MessageBreak 042 nameuse MT abbr MT feat will not work with this font 043 expandafter gobble 044 else 045 edef MT dimen six number fontdimen6 MT font 046 expandafter firstofone 047 MEL MT set all pr MT reset pr codes MT reset pr codes MT the pr code MT the pr code tr MT set codes MT split codes MTCpr split val 048 049 050 051 052 053 054 055 1056 1057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 076 077 078 079 080 081 082 083 084 085 086 087 088 089 IMPLEMENTATION Font setup 62 T
122. PLEMENTATION Font setup 64 No adjustment with versions 0 14f and 0 14g def MT scale to em MT count tempb relax ifnum MT count z else MT scale factor fi We need this in MT warn code too large neutralised def MT get charwd MT count MT dimen six T For the space unit def MT get Of ont dimen 1 ifnum fontdimen 1 MT font z MT warning nl Font MT font does not specify its MessageBreak backslashchar fontdimen 1 it s zero MessageBreak You should use a different unit for MT curr list name else MT count fontdimen 1 MT font fi T Info about missing characters or characters with zero width def MT inf o missing char MT info nl Character the MT toks X iffontchar MT font MT char has a width of Opt X else is missing fi SCH MessageBreak it s probably missing MessageBreak in font MT font MessageBreak Ignoring protrusion settings for this character T Furthermore we might have to multiply with a factor def MT scale factor ifnum csname MT MT feat factor endcsname m else expandafter MT scale expandafter tempcntb csname MT MT feat factor endcsname Cm fi ifnum tempcntb gt csname MT MT feat max endcsname relax MT exp cs MT warn code too large MT MT feat max else ifnum tempcntb lt csname MT MT feat min endcsname relax MT exp cs MT warn code too large MT MT feat min fi fi T Type out a warnin
123. PLEMENTATION Font setup 66 1212 MT let nc MT reset MT feat codes relax 1213 T 1214 MT get unit If unit contains an em or ex we use the corresponding fontdimen to obtain the MT get unit real size Simply converting the em into points might give a wrong result since the font probably isn t set up yet so that these dimensions haven t been updated either 5 def MT get unit 1 expandafter MT get unit 1 e nil ifx x empty else let 1 x fi defaultunits tempdima 1 pt relax nnil ifdim tempdima z MT warningen1 Cannot set nameuse MT abbr MT feat factors relative to zero MessageBreak width Setting factors of list nameuse MT MT feat c name MessageBreak relative to character widths instead let 1 empty let MT get char unit MT get charwd else MT vinfo Setting nameuse MT abbr MT feat factors relative to the tempdima MT count tempdima relax fi T def MTOget unit 1e 2 3 0nil ifx 3 let x empty else if m 2 edef x 1 fontdimen6 MT font else if x 2 edef x 1 fontdimen5 MT font fi fi fi T MT set inputenc The configurations may be under the regime of an input encoding def MT set inputenc 1 oo 10o M MG GMM Go CG 0t 0 H a M MM M H oon C GMM G Gi Q2 G i D D E Q0 02 02 Cd 2 OO ON Om a DD b2 L L L b2 b2 L b2 b b2 b bh2 h2 bh2 KA bh2 LA bh2 A LA h2 bh2 A bh KA KA Ne N MT cat We remember the current category c
124. R REO ER GR Bo ae 135 15 8 Interaction with babel aa Ret RR Rum e 136 15 4 Note on admissible characters leen 136 15 5 Character inheritance 002 RR RR aa Ro e m N 137 oTi 137 T1 137 LY1 138 OT4 138 QX 139 T5 140 Euro symbols 140 19 6 Trackmg un ce s uox ok es a a ee ee dedo ds ded me eS 141 15 7 Pont expansion a Se Gg Gok es aade dt Ge ds da de due e OR 141 15 8 Character protrusion 143 Normal 144 Italics 153 Small caps 164 Italic small caps 167 Text companion 168 Computer Modern math 174 AMS symbols 178 Euler 181 Euro symbols 186 15 9 Interword Spacing su uu arat RR omo 3E PR Rm RR ead 187 Nonfrenchspacing 189 15 10 Additional kerning ce e e e ee Boke tbe be be dee 190 French 190 Turkish 191 Auxiliary file for micro fine tuning 191 The TeX Project Public License 194 Tabellenverzeichnis VG G KA re Verf gbarkeit mikro typographischer Features 22 2 2000 8 Vordefinierte Font Sets lt 13 Fonts mit zugeschnitten Hervorragungseinstellungen 23 Order for matching font attributes nn 86 Nachdem Sie den Text rechterhand gelesen ha ben k nnen Sie den Effekt dieser Features betrachten indem Sie auf die Links klicken aaee Be l Beide Features sind im ganzen Dokument einge schaltet MIKROTYPOGRAPHIE MIT PDFTEX 4 Mikrotypographie mit pdfTEX pdfTEX die TEX Erweiterung geschrieben von H n Th Th nh
125. T old cmd 1 2 newcommand 1 MT warningt string 1 is deprecated Please use MessageBreak string 2 instead let 1 2 2 MT old cmd DeclareMicroTypeAlias DeclareMicrotypeAlias MT old cmd DeclareMicroTypeSet DeclareMicrotypeSet MT old cmd UseMicroTypeSet UseMicrotypeSet MT old cmd LoadMicroTypeFile LoadMicrotypeFile package Communicate def MT warning PackageWarning MTOMT def MT warning n1 1 MT warning 1 gobble package def MT info PackageInfo MTOMT def MT info n1 1 MT info 1 gobble let MT vinfo gobble def MT error PackageError MTO MT def MT warn err 1 MT error 1 This error message appears because you loaded the MT MT MessageBreak package with the option verbose errors Consult the documentation MessageBreak in MT MT pdf to find out what went wrong Debugging Cases for tracingmicrotype 0 almost none 1 sets amp lists 2 heirs 3 slots tracingmicrotypeinpdf MT pdf annot MT addto annot ifMT inannot iftracingmicrotypeinpdfall MT show pdf annot 86 87 88 89 L C C I 1 2 3 4 5 T IMPLEMENTATION Preliminaries 38 4 factors debug MT warning nl This is the debug version newcount tracingmicrotype tracingmicrotype 2 def MT inf o 1 PackageInfo MTOMT 1 MT addto annot 1 def MT inf o nl 1 PackageInfo MTOMT 1 gobble MT addto annot 1 let MT vin
126. T4 bch family bch cmr family cmr pad family pad padx padj pmn family pmnj ppl family ppl pplx pplj ptm family ptm ptmx ptmj shape sc 50 50 cmr ad ppl ptm ae 50 J bch pmn c 50 id pad pmn d t 50 bch cmr pad pmn ptm T lt L bch pad pmn g 50 m m c j 00 m t bch cmr pad pmn ppl 1 pun 1 1 80 m t bch cmr pad pmn ppl 013 im 013 80 fl m bch pad pmn o 50 50 pad pmn oe 50 ppl p lt L 0 0 bch pad pmn q 50 70 PP q 0 cmr pad pmn ppl ptm r t 50 50 m t bch cmr pad pmn ppl y 50 50 ptm y 80 80 SetProtrusion m t name Ti sc H bch name bch sc T1 cmr L name cmr sc T1 pad name pad sc T1 cmr pad pmn ppl ptm j 50 CONFIGURATION FILES Character protrusion 5651 pmn L name pmnj sc T1 5652 pp L name ppl sc T1 5653 ptm L name ptm sc T1 5654 m t load Ti default 5655 bch load bch T1 5656 cmr load cmr Ti 5657 pad load pad Ti 5658 pmn load pmnj Ti 5659 ppl load ppl T1 5660 ptm load ptm Ti 5661 encoding T1 LY1 5662 bch family bch 5663 cmr family cmr 5664 pad family pad padx padj 5665 pmn family pmnj 5666 ppl family ppl pplx pplj 5667 ptm
127. Tom Kink Herb Schulz Michael Hoppe Gary L Gray Georg Verweyen Christoph Bier Peter Muthesius Bernard Gaulle T Adam Kucharczyk Mark Rossi Stephan Hennig Michael Zedler Herbert Vo Ralf Stubner Holger Uhr Peter Dyballa Morten Hggholm Steven Bath Daniel Flipo Michalis Miatidis Sven Naumann Ross Hetherington Geoff Vallis Steven E Harris Karl Berry Peter Meier Nathan Rosenblum Wolfram Schaalo Vasile Gaburici Sveinung Heggen Colin Rourke Maverick Woo Silas S Brown Christian Stark and Marcin Borkowski Literatur H n Th Thanh Micro typographic extensions to the TEX typesetting system Diss Masaryk University Brno 2000 in TUGBoat vol 21 2000 no 4 pp 317 434 Online at http www tug org TUGboat Articles tb21 4 tb69thanh pdf H n Th Thanh Micro typographic extensions of pdf TEX in practice in TUG Boat vol 25 2004 no 1 Proceedings of the Practical TEX 2004 Conference pp 35 38 Online at http www tug org TUGboat Articles tb25 1 thanh pdf H n Th Thanh Font specific issues in pdfTEX in TUGBoat vol 29 2008 no 1 EuroBachoTEX 2007 Proceedings pp 36 41 Online at http www tug org TUGboat Articles tb29 1 tb91thanh fonts pdf H n Th Th nh Sebastian Rahtz Hans Hagen Hartmut Henkel Pawel Jackowski Martin Schr der The pdf TEX user manual 25 January 2007 Available from CTAN at systems pdftex latest version at http sarovar org proj
128. X ifdefined 1 expandafter 0firstoftwo else expandafter secondoftwo fi package Q ifx 1 undefined package Q expandafter secondoftwo else expandafter firstoftwo fi T def MT ifdefined n T 1 X ifcsname 1 endcsname expandafter firstofone else expandafter gobble fi package Q begingroup MT exp two c endgroup ifx csname 1 endcsname relax package Q expandafter gobble else expandafter firstofone fi T package def MT ifdefined n TF 1 7 7X ifcsname 1 endcsname expandafter firstoftwo else expandafter secondoftwo fi H begingroup MTCexp two c endgroup ifx csname 1 endcsname relax H expandafter secondoftwo else expandafter firstoftwo fi T Translate a macro into a token list With e TEX we can use detokenize We also need to remove the last trailing space and only the last one therefore the fiddling and the string isn t perfect of course def MT detokenize n 1 7 X expandafter MT rem last space detokenize 1 nil Q string 1 T def MT detokenize c 1 7 X MT exp oneG n MT detokenize n 1 H MT exp two c MT Grem last space strip prefix meaning 1 nil T def MT rem last space 1 2 1 ifx nil 2 else space expandafter MT rem last space expandafter 2 fi MT ifempty MT ifint MT ifdimen pe a NNNNNNNNNDN o pum 00 D OG WN FE CH www ww VS Q K Ka G O OD AJ C 436 ooo N e IMPLEMENTATION Preliminaries 46 T Test whet
129. a 6 1 16 50 mu 2 47 50 nu 6233 18 L 50 xi 6234 19 50 100 pi 6235 1A 50 50 rho 6236 1B 150 sigma 6237 1C 50 150 tau 6238 1D 50 50 upsilon 6239 1F 50 100 chi 6240 20 50 50 psi 6241 21 50 omega 6242 22 50 varepsilon 6243 23 lt 50 4 vartheta 6244 24 50 varpi 6245 25 100 4 varrho 6246 26 100 100 varsigma 6247 27 50 50 varphi 6248 28 100 100 leftharpoonup 6249 29 100 100 leftharpoondown 50 2A 100 100 rightharpoonup 51 2B 100 100 rightharpoondown 52 2C 300 200 lhook 3 2D 200 300 rhook 4 2E 100 triangleright 5 OF 100 triangleleft 56 3A 500 ldotp 3B 500 5 8 3C 200 100 lt 9 3D 300 400 260 3E 100 200 gt 261 3F 200 200 star 262 5B 100 flat 6263 SE 200 200 smile 6264 SF 200 200 frown 3265 7C 100 4 jmath 266 7D 100 wp Remaining slots in the source file 6267 6268 Math font symbols also used for the mathcal alphabet is declared as DeclareSymbolFont symbols OMS cmsy m n SetSymbolFont symbols bold OMS cmsy b n CONFIGURATION FILES Character protrusion 176 6269 SetProtrusion 6270 name cmr math symbo
130. active features fi MT documenttrue Interaction with babel MT shorthandoff IMPLEMENTATION Package options 132 3993 def MT set babel context 1 3994 MT ifdefined n TF MT babel 1 3995 MT vinfo Changing to language context 1 MessageBreak on line 3996 expandafter MTCexp one n expandafter microtypecontext 3997 csname MT babel0 1 endcsname 3998 H 3999 microtypecontext protrusion expansion spacing kerning 0o00 T 4001 Active characters can only be switched off if babel isn t loaded after microtype 002 ifpackageloaded babel 4003 def MT shorthandoff 1 2 004 MT info nl Switching off 1 babel s active characters 2 005 shorthandoff 2 4006 H 4007 def MT shorthandoff 1 2 008 MT error You must load babel before MT MT 009 Otherwise MT MT cannot switch off 1 babel s MessageBreak 4010 active characters 011 We patch the language switching commands to enable language dependent setup 2 MT addto setup 013 ifMT babel 4 ifpackageloaded babel 5 MT info nl Redefining babel s language switching commands ki 016 let MT orig select language select language 017 def select language 1 7 8 MT orig select language 1 9 MT set babel context 1 th let MT orig foreign language foreign language def foreign language 1 MT orig foreign language 1 MT set babel context 1 LA h2 KA h2 KA LA aor WN Ka Y 26
131. age 3 5 6 e New font sets smallcaps footnotesize scriptsize 4 table 2 e New package letterspace providing the commands for robust and hyphenatable 1 9e letterspacing 7 2006 07 28 e New key inputenc to specify the lists input encodings 5 e Protrusion settings for Euler math fonts 1 9d 2006 05 05 e Support for the Central European QX encoding protrusion inheritance e Protrusion settings for various Euro symbol fonts Adobe ITC marvosym e Support for Unicode input in the configuration inputenc utf8 1 9c 1 9a 2006 02 02 Protrusion settings for URW Garamond 2005 12 05 e Defer setup until the end of the preamble e Inside the preamble microtypesetup accepts all package options 3 6 e Protrusion settings for T5 encoded Charter 1 9 oo 2005 10 28 New command DisableLigatures to disable ligatures of fonts pdf TEX gt 1 30 8 New command microtypecontext to change the configuration context new key context for the configuration commands 6 New key font to add single fonts to the font sets 4 New key preset to set all characters to the specified value before loading the lists Value relative renamed to character for unit keys Support for the Polish OT4 encoding protrusion expansion inheritance Support for the Vietnamese T5 encoding protrusion expansion inheritance 2005 06 23 New command DeclareMicro
132. ageBreak inheritance lists Ignoring encoding s 2 yh gt For the rest we can reuse the key setup from the configuration lists Set MT def ine code key family inh MT def ine code key series inh MT define code key shape inh MT define code key size inh MT define code key font inh Now parse the third argument the inheritance lists We define the commands MT inh name slot containing the inheriting characters They will also be translated to slot numbers here to save some time The following will be exe cuted only once namely the first time this inheritance list is encountered in MT set feature codes def MT inh do 1 D ifx relax 1 empty else MT inh split 1 relax expandafter MT inh do fi T MT inh split IMPLEMENTATION Configuration 114 Only gather the inheriting characters here Their codes will actually be set in MT set feature codes 3208 def MT inh split 1 2 3 relaxt 14 3 MT permute MT permute MT permute MT permutee ee MT permut e e ee 321 DD h2 h2 h2 h2 h2 KA h2 h2 bh2 KA KA LA NNNNNNNN 3209 def tempa 1 3210 ifx tempa empty else 1 MT get slot 3212 ifnum MT char gt m ne 2 3 let MT val MT char 1 MT map clist n 2 5 def tempa 1 6 ifx tempa empty else id MT get slot 8 ifnum MT char gt m ne MT exp cs MT xadd MT inh MT listname MT val MT char fi fi yh debug
133. ainer nor by the Copyright Holder nor by other people then you may arrange for the Work to be changed so as to name you as the new Current Maintainer 5 If the previously unreachable Current Maintainer becomes reachable once more within three months of a change completed under the terms of 3b or 4 then that Current Maintainer must become or remain the Current Maintainer upon request pro vided they then update their communication data within one month A change in the Current Maintainer does not of itself alter the fact that the Work is distributed under the LPPL license If you become the Current Maintainer of the Work you should immediately provide within the Work a prominent and unambiguous statement of your status as Current Maintainer You should also announce your new status to the same pertinent community as in 2b above THE KTEX PROJECT PUBLIC LICENSE 197 Whether and How to Distribute Works under This License This section contains important instructions examples and recommendations for authors who are considering distributing their works under this license These aut hors are addressed as you in this section Choosing This License or Another Li cense If for any part of your work you want or need to use distribution conditions that differ significantly from those in this license then do not refer to this license anywhere in your work but instead distribute your work under a different license Y
134. alpdftexversion 1 let pdftexrevision normalpdftexrevision 2 let pdfoutput normalpdf output 3 Mi Old packages might have let pdftexversion to relax 54 NifxWMpdftexversion M undefined else 55 ifx pdftexversion relax else 56 debug MT dinfo n1 O this is pdftex the pdftexversion pdftexrevision 7 def MT pdftex no 7 8 package ifnum pdftexversion 140 60 ifnum pdftexrevision lt 4 61 def MT pdftex no 6 62 fi 63 else 64 package 65 ifnum pdftexversion lt 140 66 def MTCpdftex no 5 67 package 68 ifnum pdftexversion lt 130 69 def MT pdftex no 4 70 ifnum pdftexversion lt 120 def MT pdftex no 3 ifnum pdftexversion 14 ifnum expandafter pdftexrevision lt h 1 e 0 N 7 def MT pdftex no 2 75 ifnum expandafter pdftexrevision lt f 76 def MT pdftex no 1 77 fi 78 fi 79 else 80 ifnum pdftexversion lt 14 81 def MTCpdftex no 1 82 fi 183 fi 84 fi 85 fi 86 fi 187 package 88 fi 89 Mi 14 This command was actually introduced in 1 30 but failed on strings longer than 1023 bytes IMPLEMENTATION Preliminaries Al 90 fi 91 debug MT dinfo n1 0 pdftex no MT pdftex no MT clear options If we are not using pdf TEX or in case it is too old we disable everything and exit 192 def MT clear optionst 193 plain MT requires latex1 94 AtEndOfPackage let unprocessedoptions relax 95 let CurrentOption
135. any of its licensed components How to Use This License To use this license place in each of the components of your work both an explicit copyright notice inclu ding your name and the year the work was authored and or last substantially modified Include also a state ment that the distribution and or modification of that component is constrained by the conditions in this license Here is an example of such a notice and statement hh pig dtx Copyright 2005 M Y Name This work may be distributed and or modified under the conditions of the LaTeX Project Public License either version 1 3 of this license or at your option any later version The latest version of this license is in http www latex project org lppl txt and version 1 3 or later is part of all distributions of LaTeX version 2005 12 01 or later E This work has the LPPL maintenance status maintained The Current Maintainer of this work is M Y Name Be oe OE OS OE OE OE OE OS EE s This work consists of the files pig dtx and pig ins and the derived file pig sty Given such a notice and statement in a file the conditions given in this license document would apply with the Work referring to the three files pig dtx pig ins and pig sty the last being generated from pig dtx using pig ins the Base Interpreter re ferring to any IATEX Format and both Copyright Holder and Current Maintainer
136. anzuwenden um vor bergehend verschiedene Expansi onsparameter zu setzen funktioniert nur mit pdfTEX 1 40 4 oder neuer f r ltere Versionen wird ein schmutziger Trick in Abschnitt 14 2 auf Seite 58 beschrieben Bedenken Sie auch dass pdf TEX die Nutzung von Fonts mit verschiedenen Expan sionslimits oder stufen sogar f r verschiedene Fonts innerhalb eines Paragraphs verbietet weswegen der saloppe Kontext benutzt werden muss um Paragraphen zu komplettieren factor Diese Option stelle eine andere Methode bereit um Expansionseinstellun gen f r bestimmte Fonts zu ver ndern arbeitet aber um die eben beschriebenen Restriktionen herum Die factor Option beeinflusst die Expansionsfaktoren aller Zeichen in Kontrast zur allgemeinen Streckbarkeit des Fonts Wollten sie z B die kursive Form weniger expandieren lassen w rden sie vereinbaren SetExpansion factor 500 encoding shape me X d Die factor Option kann nur genutzt werden um die Streckbarkeit der Zeichen zu verringern weshalb sie nur Werte kleiner als 1000 erhalten darf Au erdem kann sie nur f r einzelne Fonts oder Font Sets genutzt werden die Option global in den Paketoptionen zu setzen macht wenig Sinn daf r nutzt man die Optionen stretch und shrink des Pakets Tracking options set of fonts tracking amount Eine bedeutende typographische Technik welche lange in TEX fehlte ist die Anpassung des Trackings sprich die uniforme Additi
137. ar set we simply redefine MT feature setname If the optional argument is empty set names for all features will be redefined renewcommand UseMicrotypeSet 2 CA KV sp def tempa 1 MT Cifempty tempa MT map clist c MT features MT use set 18 1 42 3 T MT map clist c tempa 7 KV sp def tempa 1 MT ifempty tempa relax MT is featurefactivation of set 2 MT exp one n MTO use set csname MT rbba tempa endcsname 2 Only use sets that have been declared def MT use set 1 2 KV sp def tempa 2 MT ifdefinedCnCTF MTC 10set 0 tempa MT xdef On MTO 1 setname Otempa H MT ifdef ined n TF MTO 1 setname relax MT xdef n MTC 10setname Cnameuse MT defaultC 10set 7 th MT error The nameuse MT abbr 1 set tempa is undeclared MessageBreak Using set nameuse MTC 1 setname instead yh H This command can be used in the main configuration file to declare the default font set in case no set is specified in the package options renewcommand DeclareMicrotypeSetDefault 2 KV sp def tempa 1 MT ifempty tempa 7 MT map clist c MT features MT set default set 1 2 xU MT map clist c Otempa KV sp def tempa 1 MT ifempty tempa relax MT is feature declaration of default set 2 MT exp one n MT set default set csname MT rbba tempa endcsname 2 3 N NNN N NNN d ed st MT default pr set
138. arnothing Finv Game eqsim beth gimel daleth lessdot gtrdot ltimes rtimes shortmid shortparallel smallsetminus thicksim thickapprox approxeq succapprox precapprox curvearrowleft curvearrowright digamma varkappa backepsilon Remaining slots in the source file msb Euler Euler Roman font package euler xeur SetProtrusion name euler encoding U family eur 01 100 100 03 100 150 06 100 07 100 150 08 100 100 OA 100 100 OB 50 CONFIGURATION FILES Character protrusion 6605 oc 100 6606 OD 100 100 6607 OE 100 6608 OF 100 100 6609 10 100 100 6610 13 100 6611 14 100 6612 15 50 6613 146 50 6614 17 50 100 6615 18 50 100 6616 IA 50 6617 1B 50 6618 1C 41 50 100 6619 1D 50 100 6620 1E 50 100 6621 IF 41 50 100 6622 20 50 6623 21 50 6624 22 50 100 6625 24 50 6626 27 50 100 6627 1 100 100 6628 7 50 100 6629 3A 300 500 6630 3B 200 400 6631 3C 200 100 6632 3D 200 200 6633 3E 100 200 6634 A 100 6635 D 50 6636 J 50 Fs 6637 K L 50 6638 L L 50 6639 Q Lt 50 6640 T 50 F3 6641 X 50 50 6642 Y 50 Js 6643 h 50 6644 k 50 6645
139. aux 2 Ctempb MT set all kn tempa tempb T relax Tracking This only works with pdfTEX 1 40 MT requires pdftex6 We only check whether a font should not be letterspaced at all not whether we ve already done that because we have to do it again let MT tr font list G empty def MT trackinge MT exp one n MT in clist MTO font MTOtr font list ifMT inlist else MT maybe do tr ifMT do else xdef MT tr font list MT tr font list MT font fi fi J package let MT tracking package MT tracking letterspace relax The tracking amount is determined by the optional argument to textls settings from SetTracking or the global letterspace option in this order def MT set tr codes package MT vinfo Tracking font MT font on line MT lsfont IMPLEMENTATION Font setup 74 585 MT get font dimen six 7 586 MT if list exists 587 MT get tr opt 588 relax 589 package 590 MT ifdefined cOQTF MT letterspace relax let MT letterspace MT letterspace 591 ifnum MT letterspace z Zero tracking requires special treatment 592 MT set tr zero 593 else 594 package MT vinfo Tracking by number MT letterspace Letterspacing only works in PDF mode 595 MT warn tracking DVI The letterspaced font instances are saved in macros font name letterspacing amount 1s In contrast to MT font which may reflect the font characteristics more accu rately taki
140. be expanded at the end of the preamble 581 expandafter g addto macro expandafter MTOfont sets 2582 csname MTC 21ist 10 MT curr set name endcsname 5 583 debug MT dinfo n1 1 1 nameuse MTC 21istC 10 MT curr set name 584 J 585 MT get highlevel Saying for instance family rm or shape bf will expand to rmdefault resp bfdefault 86 def MT get highlevel 1 87 expandafter MTO test ast MT val nil relax NNN M M 25 25 And family si will become familydefault 588 MT ifempty tempa def tempa i relax 589 edef MT val expandafter noexpand csname tempa default endcsname LA N In contrast to earlier version these values will not be expanded immediately but at the end of the preamble 2590 2612 debug MT dinfo nl 1i size nameuse MT 1list size MT curr set name 2591 MT test ast first one 2592 def MT test ast 1 2 Onil 2593 def tempa 1 2504 MT ifempty 2 2595 MT font sets MT fix font set2596 let MT font sets Gempty 2597 def MT fix font set 1 2598 xdef 1 1 2599 global onelevel sanitize 1 2600 MT define set key size size requires special treatment 2601 def MT define set key size 1 2602 define key MTO 1 set size 2603 MT map clist n 1 7 2604 KV sp def MT val 1 2605 expandafter MT get range MT val nil 2606 ifx MT val relax else 2607 MT exp cs MT xadd 2608 2609 MT lower MT upper relax 2610
141. befehlen unit Sie k nnen die Einheit w hlen in der die angegebenen Zahlen gemessen werden M gliche Werte sind character eine Dimension und zus tzlich space Letztere Einstellung misst die Werte in Tausendsteln der jeweiligen Dimension die vom Font eingestellt ist Standardm ig wird die Einheit in Zwischenraumdimen sionen gemessen Mit folgenden unsinnigen Einstellungen z B SetExtraSpacing L unit space default font 1000 1000 1000 w rde der Raum nach einem Punkt verdoppelt streng genommen 2 x fontdimen 2 ebenso die Schrumpfbetr ge der Wortzwischenr ume fontdimen3 und 4 Umgekehrt w rde man so alle drei Werte auf 1000 setzt das Leerzeichen nach dem betref fenden Zeichen komplett aufheben 5 6 Zeichenvererbung DeclareCharacterInheritance Features Font Set Vererbungslisten In den meisten F llen sollten akzentuierte Zeichen die Einstellungen ihres Ur sprungszeichens erben Zum Beispiel sollten vermutlich alle der Zeichen A A A A A A und A um denselben absoluten Betrag hervorragen wie der Buchstabe A Nutzt man den Befehl DeclareCharacterInheritance so kann man Klassen von Zeichen benennen wodurch man nur das betreffende Grundzeichen einstellen muss Mit dem zus tzlichen Argument welches eine per Komma abgetrennte Liste von Features enthalten kann k nnen Sie die Reichweite der Liste beschr nken Zus tzlich dazu akzeptiert es den inputenc Schl
142. bling ligatures DisableLigatures This is really simple now we can re use the set definitions of DeclareMicrotypeSet MT DisableLigatures there can only be one set which we ll call no ligatures MT n1 setname The optional argument may be used to disable selected ligatures only MT n1 ligatures2837 MT requires pdftex5 2838 def DisableLigatures 2839 MT begin catcodes 2840 MT DisableLigatures 2841 2842 newcommand MT DisableLigatures 2 2843 MT ifempty 1 relax gdef MTOQn1 ligatures 1 2844 xdef MT active features MT active features nl 2845 global MT noligaturestrue 2846 MT declare sets nl no ligatures 2 2847 gdef MT nl setname no ligatures 2848 MT end catcodes 2849 2850 H If pdf TEX is too old we throw an error 2851 renewcommand DisableLigatures 2 U 2852 MT error Disabling ligatures of a font is only possible MessageBreak 2853 with pdftex version 1 30 or newer MessageBreak 2854 Ignoring string DisableLigatures Upgrade pdftex 2855 2856 14 3 4 Interaction with babel DeclareMicrotypeBabelHook Declare the context that should be loaded when a babel language is selected The command will not check whether a previous declaration will be overwritten 857 def DeclareMicrotypeBabelHook 1 2 858 MT map clist n 1 2859 2860 2861 2862 14 3 5 SetProtrusion 2863 2864 2865 2866 MT SetProtrusion MT pr c name2867 MT extra context 2508 MT perm
143. care that the fonts used for the accent are already set up so that we cannot be overlooking them let MT orig add accent add accent def add accent 1 2 let pickup font MT orig pickupfont MT orig add accent 1 32 let pickup font MT pickupfont yh package 5 T 5 E plain relax package MT check f ont 2438 MT register subst font 24 MT register font 24 14 2 10 MT active features 24 MT check f ont cx M M MM MM MM M M M M M MT register subst font cx bh b2 h2 b2 L b2 H MT register font cx M M MMM MM M M M M 39 40 41 IMPLEMENTATION Font setup 96 Consequently if all goes well we are the last ones to change these commands therefore there is no need to check whether our definition has survived Check whether we ve already seen the current font def MT check f ont MT exp one n MT in clist MTOfont MTO font list Register the substituted font def MT register subst Gf ont xdef MT font list MT font list font name Register the current font def MT register font xdef MT font list MT font list MT font Context sensitive setup Here are the variants for context sensitive setup The activated features are stored in this command let MT active features empty Every feature has its own list of fonts that have already been dealt with If the font needn t be set up for a feature we temporarily disable the corresponding setup command
144. cautious Ceterum censeo it should be forbidden for packages to change catcodes within the preamble Polite as we are we ll restore them afterwards let MT restore catcodes empty gt def MT fix catcode 1 2 edef MT restore catcodes MT restore catcodes catcode 1 the catcode 1 relax 3 catcode 1 2 relax package MT fix catcode 17 14 Q comment MT fix catcode 24 9 X ignore package MT fix catcode 33 12 package MT fix catcode 34 12 MT fix catcode 36 3 math shift MT fix catcode 39 12 MT fix catcode 42 12 MT fix catcode 43 12 1 MT fix catcode 44 12 MT fix catcode 45 12 MT fix catcode 60 12 MT fix catcode 61 12 I A MT fix catcode 62 12 gt 7 package MT fix catcode 63 12 MT fix catcode 94 7 superscript MT f ix catcode 96 12 package MT fix catcode 124 12 These are all commands for the outside world We define them here as blank commands so that they won t generate an error if we are not running pdf TEX package newcommand DeclareMicrotypeSet 3 D newcommand UseMicrotypeSet 2 newcommand DeclareMicrotypeSetDefault 2 newcommand SetProtrusion 3 U TT newcommand SetExpansion 3 U 7 newcommand SetTracking 3 newcommand SetExtrakerning 3 U newcommand SetExtraSpacing 3 U LT newcommand DisableLigatures 2 D CT newcomman
145. cent textquotesingle textflorin textdagger textdaggerdbl textbullet textonesuperior texttwosuperior textthreesuperior textparagraph textperiodcentered textonequarter textonehalf textplusminus textmultiply textdivide ptm it LY1 100 100 100 100 100 100 100 100 300 100 200 200 100 200 1 100 100 500 100 70 150 150 100 100 150 150 150 100 150 50 150 50 100 500 300 50 50 100 100 150 150 150 150 15 8 3 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 CONFIGURATION FILES Character protrusion 164 Small caps Small caps should inherit the values from their big brothers Since values are relative to character width we don t need to adjust them any further but we have to reset some characters 7 Y blg ugm SetProtrusion m t name OTi sc bch name bch sc cmr L name cmr sc OT1 pad name pad sc pmn name pmnj sc pp name ppl sc ptm L name ptm sc m t load default bch load bch default cmr load cmr OT1 pad load pad default pmn load pmnj default ppl load ppl default ptm load ptm default m t bch pad pmn encoding OT1 cmr ppl ptm L encoding 0T1 0
146. ch die no ligatures Schl ssel f r die entsprechenden Schriftarten auswerten brauchen Sie sich keine Gedanken mehr ber das Sch tzen oder Trennen von Liganten in den meisten Schriftarten zu machen Jedoch in bestimmten Situationen kann es zu einem Konflikt der Liganten welche mit den gleichen Buchstaben beginnen kommen wobei einige von diesen verhindert werden sollten w hrend das bei anderen nicht geschehen soll Beim letterspacing von Texten mit Textschriftsatz in Frakturschriftarten sollen zum Beispiel die Liganten ch ck tz und sz C niemals getrennt werden normalerweise sieht man auch St Gt Liganten im letterspacing Text Dar ber Letterspacing sollte vorsichtig verwendet werden insbesondere der Zeichenabstand der Klein buchstaben wird mit Abscheu von einigen Typpgrafen betrachtet Falls sie wissen was sie tun sollten Sie vielleicht kleine Kapitel oder oder alle Kapitel nutzen Eine andere Eigenschaft kann zur Betonung in Texten von Schriftarten verwendet werden letterspace sty 8 DisableLigatures DEAKTIVIEREN VON LIGATUREN BINDUNGEN 26 hinaus realisiert das yfonts Paket das kurze s 8 als den Liganten s andererseits wenn der ct Ligant und die anderen lang s Liganten in Frakturschriftarten gefunden werden unterdr ckt werden Es gibt zwei Wege dieses Problem zu l sen Entweder deaktivieren Sie nicht die s und oder c Ligaturen und trennen
147. ches Kerning sera 04480000 94499 x oy 19 5 5 Wortzwischenr ume oo 20 5 6 Zeichenvererbung aaa sera nid ewe Y Voy qoo RR o 21 5 7 Konfigurationsdateien a ss ss aan desea karagas aai 22 6 Kontext sensitive Einstellungen 23 7 Erneute Betrachtung der Funktion Letterspacing 25 8 Deaktivieren von Ligaturen Bindungen 26 9 Hinweise und Warnungen 27 10 Beitr ge 30 11 Danksagungen 30 12 Literatur 31 13 Short history 32 14 Implementation 35 141 Preliminaries s 6646 5 02 oo odo a a a aaa 36 Debugging 37 Requirements 39 Declarations 42 Auxiliary macros 43 Compatibility 52 142 Font setup 2 2 2 8x ee a2 Pa wee he OX Ree dd MEO 56 Protrusion 61 Expansion 68 Interword spacing glue 70 Additional kerning 72 Tracking 73 Disabling ligatures 83 Loading the configuration 83 Translating characters into slots 88 Hook into IXTEX s font selection 93 Context sensitive setup 96 TABELLENVERZEICHNIS 3 15 16 A 14 3 Configuration uU a aie be aha 98 Font sets 98 Variants and aliases 104 Disabling ligatures 105 Interaction with babel 105 Fine tuning 106 Character inheritance 112 Permutation 114 14 4 Packase opLiplis A samsara ran b ALS n dex URS 117 Declaring the options 117 Reading the configuration file 121 Hook for other packages 123 Changing options later 123 Processing the options 125 Configuration files 133 MEI nic cc 134 15 2 Pont variants and aliases 2 1 ssh R
148. cm pa pm pa pm cm p p ug 6087 pmn Ntextasciigrave 300 300 p p p p p u p p cm pa 2 5 pmn textoneoldstyle 150 pad texttwooldstyle 50 pmn texttwooldstyle 50 cmr textthreeoldstyle 100 50 pmn textthreeoldstyle 100 textfouroldstyle 50 50 textfouroldstyle 50 100 cmr textsevenoldstyle 50 80 textsevenoldstyle 150 mn textsevenoldstyle 20 cmr textlangle 400 textrangle 400 cmr pad textminus 300 300 n textminus 200 200 m textminus 250 300 6088 cmr pad pmn texttildelow 200 250 6089 pmn textasciibreve 300 300 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 textasciicaron 300 300 n textacutedbl 200 300 textgravedbl 150 300 cmr textdagger 100 100 ad textdagger 200 100 mn textdagger 80 50 ugm textdagger 80 80 cmr pad textdaggerdbl 80 80 mn textdaggerdbl 80 50 gm textbardbl 150 150 cmr textbullet 200 100 ad textbullet 300 textbullet 30 70 ugm textbullet 50 100 r textcelsius 100 F pad textcelsius 200 pmn textcelsius 50 50 pad textflorin 100 b pmn textflorin 50 100 ugm textflorin 100 RG textcolonmonetary
149. coding T1 5238 bch family bch 5239 blg family blg 5240 cmr family cmr 5 5 5 5 5 5 5 5 5 5 5 BO RO HO DO dO DO EQ PO DO DD DD d 2 3 4 CONFIGURATION FILES Character protrusion 158 pmn family pmnj pad family pad padx padj ppl family ppl pplx pplj ptm family ptm ptmx ptmj ugm family ugm m t bch pad pmn ppl ptm Shape it sl e cmr ugm shape it beh mn _ 100 blg 0 300 cmr ugm _ 100 200 pad ppl ptm _ 100 100 blg 400 600 blg Es 300 500 cmr ME 100 pmn AE 50 bch pmn OE 50 cmr NOE 100 pmn 031 100 ffl cmr ptm 156 100 IJ pad 156 50 IJ 2 pmn 156 20 IJ pmn 188 30 ij pm v t L 100 5 m t pad ppl ptm textbackslash 100 200 cmr ugm textbackslash 300 300 bch textbackslash 150 150 pmn textbackslash 100 150 ugm textbar 200 200 cmr textquotedblleft 500 300 blg textquoteleft 400 400 textquoteright 400 400 blg textquotedbl 300 300 textquotedblleft 300 300 E textquotedblright 300 300 quotedblbase 200 600 m t ptm quotesinglbase 300 700 quotedblbase 400 500 cmr quotesinglbase 300 700 quotedblbase 200 600 bch pmn quotesinglbase 200 50
150. crotype module 35 author R Schlicht 36 copyright R Schlicht 3 license LPPL 3 T Ee oon 340 if luatextra and luatextra provides_module then 341 luatextra provides_module microtype module 342 end 343 344 luafile To be continued but first back to primitives MT glet Here s the forgotten one package letterspace def MT glet global let R Ol MT exp cs Commands to create command sequences Those that are going to be defined MT exp gcs globally should be created inside a group so that the save stack won t explode 347 def MT exp cs 1 2 expandafter 1 csname 2 endcsname 348 package 349 def MT expO gcs 1 2 begingroup expandafter endgroup expandafter 1 csname 2 endcsname MT def n This is namedef and global MT gdef n 350 def MT def n MTCexp cs def 351 def MT gdef n MT exp gcs gdef MT edef n Its expanding versions MT xdef n 352 package 353 def MT edef n MT exp cs edef 354 xpackage 355 def MT xdef n MT exp gcs xdef MT let nc let a csname sequence to a command MT glet nc 356 def MT let nc MT exp cs let 357 def MT glet nc MT exp gcs MT glet MT let cn let a command to a csname sequence 358 def MT let cn 1 2 expandafter let expandafter 1 csname 2 endcsname MT let nn let a csname sequence to a csname sequence MT glet nn 359 def MT let nn MT exp cs MT let cn MTO f ont MT exp one n MT exp two c MT exp two n MT ifde
151. csname 1 2 Yh LI MT declare char inh MT encoding check MT inh do LA KA KA KA KA LA 66 67 68 69 w w Non Oo 84 85 86 87 88 89 oe WwW N SI IMPLEMENTATION Configuration 113 3 MT end catcodes The keys for the optional argument MT map clist c MT features long def ine key MT inhO 1 U edef MT inh feat MT inh feat 1 def ine key MT inh inputenc def MT extra inputenc 1 The lists cannot be given a name by the user def MT declare char inh 1 2 3 MT edef n MTO 1 inh name MT curr file the inputlineno nameuse MT abbrO 1 MT let cn MT curr set name MTO 1 inh name MT ifdefined cET MTCextra inputenct MT xdef n MTO 1 inh MT curr set name inputenc MT extra inputenc debug MT dinfo i creating inheritance list nameuse MT 1 inh name MT gdef n MTO 1 inh csname MT 1 inh name endcsname 3 def MT permutelist 1 inh setkeys MT inh 2 MT permute T Parse the second argument DeclareCharacterInheritance may also be set up for various combinations def ine key MT inh encoding def MT valt 1 expandafter MT encoding check MT val nil MT getChighlevelfencoding MT edef n MT tempencoding1 MT val 7 T But we only allow one encoding def MT encoding check 1 2 nil MT ifempty 2 relax edef MT val 1 MT warning You may only specify one encoding for character Mess
152. ction gobble def MT clist break 1 nnil package Execute 2 on all elements of the token list 1 MT tlist break can be used to jump out of the loop def MT map tlistOn 1 2 MTOQmapO tlist 2 1 nnil def MTCmap tlist c 1 2 expandafter MT map tlist expandafter 2 1 nnil def MT map tlist 1 2 ifx nnil 2 else 8102 expandafter MT map tlist expandafter 1 fi T def MT tlist break 1 nnil fi Test whether item 1 is in comma list 2 Using pdfmatch would be slower newif ifMT inlist def MT in clist 1 2 def MT res a 1 1 2 3 Onnil ifx 2 empty MT inlist false else MT inlist true fi 3 expandafter MT res a expandafter 2 1 empty nnil Remove item 1 from comma list 2 This is basically removeelement from ltentrl dtx Using pdfmatch and pdflastmatch here would be really slow def MT rem from clist 1 2 def MT res a 1 1 2 MT res a 1 2 MT resOb def MT resQb 1 MT res b 2 MTOres b ifx 1 empty else 1 fi xdef 2 MT expO two c MT res b MT res a expandafter 2 MT res b 1 MT res a Test whether item is in token list Since this isn t too elegant I thought that at least here pdfmatch would be more efficient however it turned out to be even slower than this solution def MT in tlist 1 2 MT inlist false def MT res a 1 MT map tlist c 2 MT in tlist def MT in tlisto 1 edef MT res b 1 ifx MT res a MT r
153. d DeclareCharacterInheritance 3 U TTL newcommand DeclareMicrotypeVariants 1 newcommand DeclareMicrotypeAlias 2 newcommand LoadMicrotypeFile 1 newcommand DeclareMicrotypeBabelHook 2 newcommand microtypesetup 1 newcommand microtypecontext 1 newcommand textmicrotypecontext 2 2 MT old cmd MT warning MT warningenl MT info MT info nl MT vinfo MT error MT warn err DL 61 62 63 64 Si 66 67 68 69 e WD KSE E 14 1 1 tracingmicrotype MT dinfo MT dinfo nl IMPLEMENTATION Preliminaries 37 ifpackageloaded letterspace let MT textls relax package newcommand lsstyle newcommand text1s 2 U TT def textls 1 newcommand lslig 1 1 package T These commands also have a starred version def DeclareMicrotypeSet 1 gobbletwo def DeclareMicrotypeVariants 1 gobble Set declarations are only allowed in the preamble resp the main configuration file The configuration commands on the other hand must be allowed in the document too since they may be called inside font configuration files which in principle may be loaded at any time onlypreamble DeclareMicrotypeSet onlypreamble UseMicrotypeSet onlypreamble DeclareMicrotypeSetDefault onlypreamble DisableLigatures onlypreamble DeclareMicrotypeVariants onlypreamble DeclareMicrotypeBabelHook The old command names had one more hunch 5 def M
154. d be a quarter of an em which seems too much to me then again it also says that this was a thin space in French typography 6985 SetExtraKerning 6986 name french default 6987 context french 6988 unit space 6989 encoding 0T1 T1 LY1 6990 6991 1000 fontdimen2 6992 500 thinspace 6993 500 TL 6994 500 6995 24 http fr wikipedia org wiki Espace_typographique 5 July 2007 AUXILIARY FILE FOR MICRO FINE TUNING 191 6996 These settings have the disadvantage that a word following a left guillemet will not be hyphenated This might be fixed in pdf TEX 6997 SetExtraKerning 6998 name french guillemets 6999 context french guillemets 7000 load french default 7001 unit space 7002 encoding T1 LY1 7003 7004 guillemotleft 800 0 8 fontdimen2 7005 guillemotright 800 7006 7007 7008 SetExtraKerning 7009 name french guillemets OT1 7010 context french guillemets 7011 load french default 7012 unit space 7013 encoding 0T1 7014 i 15 10 2 Turkish 7016 NSetExtraKerning 7017 name turkish 7018 context turkish 7019 encoding 0T1 T1 LY1 7020 7021 167 thinspace 7022 167 7023 167 7024 7025 7026 m t 16 Auxiliary file for micro fine tuning This file can be used to test protrusion and expansion settings 7028 xtest 70
155. d explicitly that they do provide such support for the Derived Work d You distribute at least one of the following with the Derived Work i A complete unmodified copy of the Work if your distribution of a modified component is made by offering access to copy the modified component from a designated place then of fering equivalent access to copy the Work from the same or some similar place meets this condition even though third parties are not compelled to copy the Work along with the modified component ii Information that is sufficient to obtain a complete unmodified copy of the Work If you are not the Current Maintainer of the Work you may distribute a Compiled Work generated from a Derived Work as long as the Derived Work is distributed to all recipients of the Compiled Work and as long as the conditions of Clause 6 above are met with regard to the Derived Work The conditions above are not intended to prohibit and hence do not apply to the modification by any method of any component so that it becomes identical to an updated version of that component of the Work as it is distributed by the Current Maintainer under Clause 4 above Distribution of the Work or any Derived Work in an alternative format where the Work or that De rived Work in whole or in part is then produced by applying some process to that format does not relax or nullify any sections of this license as they pertain to the results of a
156. d size range MT lower space gt MT val in font set 2641 MT curr set name MessageBreak Swapping sizes 2642 edef MT upper MT lower 2643 edef MT lower MT val 2644 H 2645 edef MT upper MT val 2646 th 2647 MT ifdim MT lower MTG upper 2648 def MT upper 1 3 2649 relax 2650 fi 2651 T 2652 fi 2653 HN 2654 MT get size Translate a size selection command and normalise it 2655 def MT get sizet A single star would mean sizedefault which doesn t exist so we define it to be normalsize if MT val relax def tempa normalsize else MT let cn tempa MT val 660 fi 661 ifx tempa relax else SI ooo C Oo LA h2 h2 KA LA WN The relsize solution of parsing N setfontsize does not work with the AMS classes among others I hope my hijacking doesn t do any harm We redefine set fontsize and not setfontsize because some classes might define the size selection commands by simply using fontsize e g the a0poster class 2662 begingroup 2663 def set fontsize 1 2 3 4 Onil endgroup def MTOval 2 2664 tempa nil 2665 fi H Test whether we finally got a number or dimension so that we can strip the pt defaultunits and strip pt are kernel macros 2666 MT ifdimen MT val 2667 defaultunits tempdima MT val pt relax nnil 2668 edef MT val strip pt tempdima 2669 H A MT warning Could not parse font size MT val MessageBreak in font s
157. d the cases for italic correction since tracking may also be triggered by text commands e g textsc def MT tr outerer futurelet MT tr outer next MT tr outer r def MT tr outer ret y def MT temp Don t adjust in math mode There was a tricky bug when textls was the last command in a mathchoice group ifmmode else A similar bug occurred when adjustment would happen inside a discretionary group which we prevent here This only works with e TEX which we know is available ifnum currentgrouptype 10 else def MT temp 1 ifhmode hskip MT outer space debug MT dinfo2 adjusting post space 1 the MT outer space ML ifcat egroup noexpand MT tr outer next ifhmode unkern fi egroup MT set curr ok MT set curr os def MT temp afterassignment MT tr outer r let MT temp else If the next token is maybe ic from an enclosing text command we gobble it read the next one feed it to maybe ic via MT tr outer icr and then call ourselves again ifx maybe ic MT tr outer next MT set curr ok MT set curr os def MT temp afterassignment MT tr outer icr let MT temp else If the next token is check icr from an inner text command we insert ourselves just before it This will then call maybe ic again the next round which however will always insert an italic correction since it doesn t read beyond our group ifx check icr MT tr outer next def MT temp aftergroup MT tr outer r ch
158. d zwischen zwei W rtern der maximale Abstand der dem angef gt werden darf und das Maximum welches davon subtrahiert werden kann Die letzteren beiden Parameter wirken wann immer TEX versucht einen Paragraphen in Zeilen zu zerlegen und dabei scheitert es kann die R ume zwischen W rtern strecken oder schrumpfen Diese drei Parameter sind spezifisch f r jeden Font MICRO FEINABSTIMMUNG Zeichenvererbung 21 Obendrein beherrscht TEX das Konzept von space factors Sie k nnen genutzt werden um die R ume zwischen bestimmten Zeichen besonders den Satzzeichen zu vergr ern Falls pdfIpXzus tzliche Zwischenr ume in Betrieb sind werden space factors ignoriert da es als Erweiterung zu space factors mit viel pr ziserer Kontrolle betrachtet werden kann Einstellungen an den Zwischenr umen werden als Paare der Form Zeichen Zwischenraum Faktoren deklariert wobei letztere aus drei Zahlen bestehen zuerst der zus tzliche Kern der nach diesem Zeichen angef gt wird wenn es vor einem Wortzwischen raum vorkommt 2 der zus tzliche Streckungsbetrag und zuletzt der zus tzliche Schrumpfbetrag Alle Werte k nnen auch negativ sein wodurch die Dimensionen verkleinert werden Nicht alle Werte m ssen angegeben werden die Einstellungen m ssen jedoch zwei abtrennende Kommas beinhalten Optionen name load factor preset inputenc context Diese Optionen dienen der glei chen Funktionalit t wie in den vorigen Konfigurations
159. dcsname Begin with setting micro typography to true for this font The MT checklist tests will set it to false if the property is not in the list The first non empty list that does not contain a match will stop us except for font 924 MT dotrue 925 edef tempa csname MT 1 setname endcsname 926 MT map clist n font encoding family series shape size 927 MT ifdef ined n TF MT checklistQ 1 928 csname MT checklist 1 endcsname 929 MT checklist 1 930 1 931 Y 932 else 933 MT dofalse 934 Mi 935 ifMT do MT feat stores the current feature 936 def MT feat 1 937 csname MT set 1 codes endcsname 938 else 939 MT vinfo No nameuse MT abbrO 1 940 fi 941 942 debug def MT dinfo list 1 2 3 MT dinfo n1 1 Onameuse MT abbrO i 2 943 debug ifx 3 list empty else nameuse MT 2 3 list fi The generic test 1 is the axis 2 the feature tempa contains the set name 4 def MT checklist 1 2 5 debug MT ifdefined n T 46 debug MT ifdefined n TF 947 MTC 21i1st0 10 Ctempa Begin a masqueraded expandafter orgy to test whether the font attribute is in the list 948 expandafter MT exp one n expandafter MT in clist 949 csname MT 1 expandafter endcsname 950 csname MT 21ist 10 tempa endcsname 951 ifMT inlist 952 debug MT dinfo list 2 1 in 953 MT dotrue 954 else 955 debug MT dinfo list 2 1 not i
160. de s limit is 1000 Now the maximum protrusion is lem of the font The unit is in MT count the desired factor in tempb and the result will be returned in tempcntb MT requires pdftex3 def MT scale to em tempcntb MT count relax For really huge fonts 100 pt or so an arithmetic overflow could occur with vanilla TEX Using e TEX this can t happen since the intermediate value is 64 bit which could only be reached with a character width larger than maxdimen MT scale tempcntb tempb MT dimen six ifnum tempcntb z else MT scale factor fi T Get the width of the character When using e TEX we can employ fontcharwd instead of building scratch boxes def MT get charwd ma MT count fontcharwd MT font MT char relax se setbox z hbox MT font char MT char ses MT count wd z ifnum MT count z MT info missing char fi For letterspaced fonts we have to subtract the letterspacing amount from the characters widths The protrusion amounts will be adjusted in MT set pr codes The letterspaced font is already loaded so that lem fontdimen6 MT requires pdftex6 g addt o macro MT get charwd MT ifdefined cQT MT letterspace advance MT count dimexpr MT letterspace sp dimexpr 1em 1000 relax T relax MT getOfont dimen MT info missing char MT scale factor MT warn code too large aor WN M M MM M L SI 35 1161 1162 1163 1164 1165 1166 IM
161. drigt werden Dieses Merkmal wird das Aussehen von Paragraphen vielleicht noch mehr aufwerten Die Betonung liegt im letzten Satz auf dem Wort vielleicht diese Erweiterung ist immer noch sehr experimentell speziell haben nur die letzten Zeichen im Moment Einfluss auf die Wortzwischenr ume Auferdem sind die mit microtype gelieferten Einstellungen nicht mehr als eine erste Ann herung weshalb ich es begr en w rde wenn Sie Korrekturen und Verbesserungen vornehmen Ich w rde vorschlagen die Begr ndung f r die Einstellungen in Abschnitt 15 9 durchzulesen Abschlie end mag die M glichkeit f r einen Font alle Ligaturen auszuschalten n tzlich f r Schreibmaschinenschriftarten sein Das microtype Paket stellt f r all diese mikrotypographischen Erweiterungen eine 3 1 protrusion expansion OPTIONEN 6 Schnittstelle bereit Alle mikrotypographischen Aspekte k nnen individuell und einfach angepasst werden Die n chsten Kapitel werden einen Abriss aller Optionen und Anpassungsm glichkeiten pr sentieren Loslegen Es gibt keine berraschungen beim Laden des Paketes usepackage microtype In den meisten Fallen ist das ausreichend und falls Sie nicht an der Feinabstimmung des mikrotypographischen Aussehens ihres Dokumentes was unwahrscheinlich erscheint da Sie dieses Paket benutzen was ihr Interesse an typographischen Problemen best tigt interessiert sind k nnen Sie den Rest dieses Dokumentes auslassen Fal
162. dto setup 0firstofone We almost never do anything if a package is not loaded def MT with package T 1 ifpackageloaded 1 firstofone gobble package IXTEX s Cifpackagewith ignores the class options def MT with babel and T 1 MT ifdefined n0T opt babel Cpkgextension expandtwoargs MT in clist 1 csname opt babel pkgextension endcsname Cclassoptionslist ifMT inlist expandafter gobble fi gobble Don t load letterspace MT let nc ver letterspace sty empty The ledmac package first saves each paragraph in a box from which it then splits off the lines one by one This will destroy character protrusion There aren t any problems with the lineno package since it takes a different approach After much to and fro the situation has finally settled and there is a fix Beginning with pdfTRX version 1 21b together with ledpatch sty as of 2005 06 02 v0 4 character protrusion will work at last MT restore p h MT setupf ont hook 713 714 715 716 717 718 719 1 D OG WN ka CH Q3 M M M MM M MM M M OL o OG A OG d w N t C 36 1 w w oO eh alt cops NSU SUSI ET A ost IST STE VEIT A Se e or WN rz Ex aay A I IMPLEMENTATION Preliminaries 53 Peter Wilson was so kind to provide the 1 dunhbox line hook in ledmac to allow for protrusion leftmarginkern and rightmarginkern are new primitives of pdf TEX 1 21b aka 1 30 0
163. e 400 500 5367 cmr textbackslash 300 300 quotedblbase 200 600 5368 pmn textbackslash 100 150 quotedblbase 150 500 5369 m t guillemotleft 300 300 guillemotright 300 300 5370 cmr guillemotleft 400 100 guillemotright 200 300 5371 pmn guillemotleft 200 300 guillemotright 150 400 5372 m t textbraceleft 200 100 textbraceright 200 200 5373 textbraceleft 400 100 Ntextbraceright 200 200 5374 textbraceleft 200 fs textbraceright L 200 S textquotedblleft 500 300 5376 textless 300 100 textgreater 200 100 5377 textless 100 T textgreater L 100 De 5 5380 m t cmr pmn 5381 m t ptm 5382 SetProtrusion 5383 m t name 7 QX it default 5384 ptm L name ptm it QX 5385 m t load OTi it 5386 ptm load ptm it 5387 encoding QX ptm family ptm ptmx ptmj shape it sl 5 1 5 ptm 009 50 fk 5 100 100 5393 m t textunderscore 100 100 5394 ptm textunderscore 100 150 5 textbackslash 100 200 5 Nquotedblbase 300 400 5397 m t guillemotleft 300 300 Nguillemotright 300 300 5398 ptm guillemotleft 200 400 guillemotright 200 400 5 textexclamdown 200 textquestiondown 200 T 54 textbraceleft 200 100 textbraceright 200 200 5 textless 100 100 textgreater 100 100 5 textminu
164. e let MT stretch MT stretch default fi If shrink has not been specified it will inherit the value from stretch ifnum MT shrink m ne let MT shrink MT stretch fi If step has not been specified we will just set it to 1 for recent pdf TEX versions My tests did not show much difference neither in compilation time within the margin of error nor in file size less than 1 difference for microtype pdf with step 1 compared to step 5 With older versions we set it to min stretch shrink 5 rounded off minimum value 1 MT requires pdftex6 def MT step 1 LEO ifnum MT step m ne ifnum MT stretch gt MT shrink ifnum MT shrink z tempcnta MT stretch else tempcnta MT shrink fi else ifnum MT stretch z tempcnta MT shrink IMPLEMENTATION Package options 128 3797 else 3798 tempcnta MT stretch 3799 fi 3800 fi 3801 divide tempcnta 5 relax 3802 else 3803 tempcnta MT step 3804 ifnum tempcnta z 3805 MT warning nl The expansion step cannot be set to zero MessageBreak 3806 Setting it to one 3807 fi 3808 fi 3809 ifnum tempcnta z tempcnta ne fi 3810 edef MT step number tempcnta space MT auto Automatic expansion of the font This new feature of pdfT X 1 20 makes the fz programme really usable It must be either autoexpand or empty or 1000 for older versions of pdf TEX 3811 let MT auto empty 3812 ifMT auto 3813 MTCrequires pdftex4 We tu
165. e 1000 xU MT let nn MT MT feat factor MT MT feat Ofactor 3 The unit can only be evaluated here since it might be font specific If it s empty it s relative to character widths if it s 1 relative to space dimensions MT ifdefined n TF MT MT feat c csname MT MT feat c name endcsname Qunit 7 MT let nn MT MT feat QunitQ MT MT feat c csname MT MT feat c name endcsname unit MT exp cs ifx MT MT feat unit empty MT vinfo Setting nameuse MT abbr MT feat codes relative to character widths else MT exp cs ifx MT MT feat Cunit mCne MT vinfo Setting nameuse MT abbr MT feat codes relative to width of space fi fi H MT let nn MT MT feat Gunit MT MT feat unit yh The codes are either relative to character widths or to a fixed width For spacing and kerning lists they may also be relative to the width of the interword glue Only the setting from the top list will be taken into account let MT get char unit relax let MT get space unit gobble MT exp cs ifx MT MT feat unit empty let MT get char unit MT get charwd else MT exp cs ifx MT MT feat Cunit mCne let MT get space unit MTO get f ont dimen else MT exp cs MT get unit MT MT feat unit fi fi Preset all characters If so we surely don t need to reset too MT ifdefined n T MT MT feat c csname MT MT feat c name endcsname Cpreset csname MT preset MTO feat endcsname IM
166. e font instead yh H pdfnoligatures 1 MT vinfo Disabling ligatures yh T relax Loading the configuration Recurse through the lists to be loaded def MT load list 1 edef tempa 1 MT let cn tempb MTC MTOfeat c Gtempa load MT ifstreq tempa tempb MT error nameuse MT abbr MT feat list tempa cannot load itself H ifx tempb relax else MT ifdefined n TF MT MT feat Oc tempb MT vinfo First loading nameuse MT abbr MTO feat list tempb begingroup MT load list tempb MT find file MT file list MT cfg catcodes 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 IMPLEMENTATION Font setup 84 endgroup edef MT curr list name nameuse MT abbr MT feat list noexpand MessageBreak tempb T MT let cn tempc MT MTOfeat c Ctempb expandafter MT set codes tempc relax HA MT error nameuse MT abbr MT feat list tempb undefined MessageBreak Cannot load it from list tempa F fi yh T Micro typographic settings may be written into a file mt font family cfg We must also record whether we ve already loaded the file let MT file list empty def MT find file 1 Check for existence of the fi
167. e punctuation characters 980 SetProtrusion 981 m t name 0T1 it 2 bch L name beh it blg name blg it blg load blg default cmr L name cmr it pad name pad it pmn name pmnj it pp name ppl it 4989 ptm L name ptm it 4990 ugm name ugm it 4991 m t bch blg pad ugm encoding OT1 H 4984 4985 4986 987 988 992 ppl ptm TL encoding 0T1 0T4 4993 bch family bch 994 blg family blg 995 pad family pad padx padj 4996 ppl family ppl pplx pplj 4997 ptm family ptm ptmx ptmj 998 ugm family ugm 4999 m t bch pad ppl ptm Shape it sl 5000 blg ugm shape it CONFIGURATION FILES Character protrusion 5001 cmr pmn 1 5002 1 5003 cmr ptm A 5004 pad pmn A 50 TL 5005 ugm As 150 5006 ppl A 50 50 5007 ptm AE 100 5008 pad ppl MAE 50 J 5009 cmr pad ppl ptm B 50 5010 B 20 50 5011 5012 5013 A 5 100 50 H bch ppl ptm ugm c 50 cmr pad c 100 50 50 cmr pad ppl ptm D 50 50 pmn D 20 TL cmr pad ppl ptm E 50 T pmn E 20 50 cmr pad ptm F 100 pmn F 10 ppl F 50 T bch ppl ptm ugm G 50 cmr pad G 100 pmn G 50 50 cmr pad ppl ptm H 50 T cmr
168. e the font unless it s the current context def MT maybe rem from list 1 7 MT ifstreq Ctempa 1 Ctempa csname MT tempa context endcsname relax expandafter MT exp one n expandafter MT rem from clist expandafter MT font csname MT tempa 1font list endcsname yh T The user may change the context so that different setups are possible This is especially useful for multi lingual documents Inside the preamble it shouldn t actually do anything but remember it for later def microtypecontext 1 MTCaddto setup microtypecontext 1 MT addto setup DeclareRobustCommand microtypecontext 1 MT setup contexts let MT reset context relax setkeys MTC 1 selectfont MT reset context yh T This is just a wrapper around microtypecontext DeclareRobustCommand textmicrotypecontext 2 microtypecontext 1 2 We have to reset the font at the end of the group provided there actually was a change def MT reset contexto MT vinfo lt lt lt Resetting contexts on line debug MessageBreak MT pr context MT ex context debug MT Qtr context MT kn context MT sp context yh selectfont T The first time microtypecontext is called we initialise the context lists and redefine the commands used in pickup font def MT setup contexts MT map clist c MT active features MT glet nc MTO 10 f ont list MTOfont list MT glet MT check font MT check font cx MT glet MTOregister font MTCr
169. eck icr let MT temp else ifx sptoken MT tr outer next def MT temp ifhmode hskip MT outer space debug MT dinfo2 adjusting post spaces 2 the MT outer space ML else ifx MT tr outer next def MT temp nobreak hskip MT outer space debug MT dinfo2 adjusting post spaces 3 the MT outer space th else ifx MT tr outer next else ifx space MT tr outer next else ifx xobeysp MT tr outer next else MT tr outer icr MT tr outer icr textls MT 1ls adjust MT textls MT letterspace IMPLEMENTATION Font setup 81 If there s no outer spacing there may be outer kerning 877 def MT temp ifdim MT outer kern z else MT ls outer k 878 debug MT dinfo2 adjusting post kern the MT outer kern 879 fi 880 let MT tr outer next relax 881 fi fi fi fi fi fi fi fi fi fi 882 MT temp 883 Helper macros for the italic correction mess 884 def MT tr outer icr afterassignment MTCtr outer icr MT tr outerer 885 def MT tr outer icr 886 let let token MT tr outer next 887 maybe ic 888 For older pdf TEX versions throw an error 889 H 890 DeclareRobustCommand lsstyle 891 MT error Letterspacing only works with pdftex version 1 40 MessageBreak 892 or newer Upgrade pdftex or use the soul package instead 893 MT glet lsstyle relax 894 895 And for lua TEX too 96 lua MT requires luatex 898 DeclareRobustCommand lss
170. ects pdftex Karl Berry Fontname Filenames for TEX fonts July 2009 Available from CTAN at info fontname fontname pdf KTEX3 Project Team ATEX 2e font selection 27 November 2005 Available from CTAN at macros latex doc fntguide pdf Carsten Schurig Tobias Schlemmer The pdfcprot sty package 10 June 2005 Available from CTAN at macros latex contrib pdfcprot 13 m N SHORT HISTORY 32 Melchior Franz The soul package 17 November 2003 Available from CTAN at macros latex contrib soul See also Heiko Oberdiek s extension of this package soulutf8 which adds Unicode support Available from CTAN at macros latex contrib oberdiek Short history The comprehensive list of changes can be obtained by running makeindex s gglo ist o microtype gls microtype glo The following is a list of all changes relevant in the user land bug and compatibility fixes are swept under the rug Numbers in brackets indicate the relevant section in this manual lua functions moved to a dedicated file Protrusion settings for T2A encoded Minion 2009 11 09 Support for the Cyrillic T2A encoding protrusion expansion spacing 2009 03 27 New default for expansion option step 1 if pdf TEX gt 1 40 3 3 2008 11 11 Support for luaTEgX enabled by default 2007 12 23 New key outer kerning for SetTracking to customise outer kerning 5 3 Adjust protrusion settings for tracking even if protrusion
171. ed n T MT tempshape MT cnt shape 3259 MTCpermute000 3260 MTCpermute 0000 In order to save some memory we can ignore unused encodings inside the docu ment 3261 def MT permute00000 3262 MT permute definefencoding 3263 ifMT document 3264 ifx MT tempencoding empty else 3265 MT ifdef ined n TF T MT tempencoding relax 3266 expandafter expandafter expandafter gobble 3267 fi 3268 fi 3269 MT permute e eeee 3270 MT permute eeeee def MT permute e eeoe ty MT permute define family MT permute define series MT permute def ine shape edef tempa MT tempencoding MT tempfamily MT tempseries MT tempshape 3279 MT ifdefined c T MT tempsize Some sanity checks an encoding must be specified unless nothing else is 3280 MT ifstreq tempa relax 3281 ifx MT tempencoding empty 3282 MT warningt 3283 You have to specify an encoding for MessageBreak 3284 nameuse MT abbr MT permutelist list 3285 nameuse MT MT permutelist Cname MessageBreak 3286 Ignoring it 3287 else 3288 MTCifdefined cCTF MT tempsizet Add the list of ranges to the beginning of the current combination after checking for conflicts 3289 MT ifdefined n T MT MT permutelist tempa MT extra context sizes 3290 MT map tlist c MT tempsize MT check rlist 3291 Y 3292 MT exp cs MT xaddb 3293 MT MT permutelist tempa MT extra context sizes 3294 MT tempsize
172. efcode MT font MT char 1 Heirs heirs I love thy heirs 2 MT ifdefined c T MT ex inh name 73 MT ifdefined n T MT inh MT ex inh name MT char 74 MT exp cs MT mapO tlist c MT inh MT ex inh name MT char MT set ex heirs 378 def MT warn ex too large 1 379 MT warning nl Expansion factor number tempcntb space too large for 380 character MessageBreak the MT toks in MT curr list name MessageBreak 381 Setting it to the maximum of number 1 382 tempcntb 1 relax 383 Apply different values to this font 384 def MT get ex opt 385 MT set listname 386 MT ifdefined n TF MT ex c MTGex c name factor 387 MT let cn MT ex factor MT ex c MT ex cOname factor 388 MT vinfo Multiplying expansion factors by number MT ex factor 1000 389 HO 390 let MT ex factor MT ex factor 391 T 392 MT get ex opt stretch Setting stretch limit to number MT stretch IMPLEMENTATION Font setup 70 393 MT get ex opt shrink Setting shrink limit to number MT shrink 394 MT get ex opt step Setting expansion step to number MT step 395 def tempa autoexpand 396 MT get ex opt auto ifx Gtempa MT auto En else Dis fi abling automatic expansion 397 MT ifdefined nO T MT ex c MT ex cOname preset LIL 398 MT preset ex 399 let MT reset ef codes relax 00 3 01 T MT get ex opt 402 def MT get ex opto 1 2 03 MT ifdefined n TF MT ex cO MT ex c name Q1
173. efined by DeclareTextComposite This should be robust finally especially since we also detokenize the input instead of only stringifying it Thus we will die gracefully even on wrong Unicode input without utf8 N N aa 17 expandafter def expandafter MT char expandafter csname expandafter 18 string csname MT encoding endcsname 19 MT detokenize n 1 MT detokenize n 2 endcsname 20 expandafter expandafter expandafter MT is letter MT char relax relax M M M M MT curr list name MT set listname MT warn ascii MT warn number too large MT warn rest MT warn unknown 2 2 2 2 N N MMM MM HM M KM M M M MMM MMM M M NNN N or 25 326 J C9 C2 C2 KA LA LA oO o Be bet A Ww wWwwnwww oO oO N 8 w w E M M IMPLEMENTATION Font setup 92 fi What about math Well for a moment the following looked like a solution with mt is mathchar defined accordingly analogous to MT is char above to pick up the last two tokens the meaning of a mathchardef ed command expands to its hexadecimal notation def MT is mathchar 1 if relax noexpand 1 it s a macro let x 1 else it s a character mathchardef x mathcode 1 relax fi expandafter MT exp two c expandafter mt is mathchar expandafter meaning expandafter x mt mathcharstring relax relax relax T However the problem is that mathcodes and mathchardefs have global scope Therefore
174. egister font cx MT glet MTOregister subst font MTCregister subst font cx MT glet MT setup contexts relax T Define context keys MT map clist c MT features long def ine key MTC 1 D CL edef tempb nameuse MT rbbaG 1 MT exp one n MT in clist tempb MT active features ifMT inlist Using an empty context is only asking for trouble therefore we choose the instead hoping for the IATEX users natural awe of this character MT ifempty 1 def MT val def MTO val 1 IMPLEMENTATION Configuration 98 2511 MT exp cs ifx MT Gtempb context MTO val 2512 debug MT dinfo 1 gt gt gt no change of 1 context MT val 2513 else 2514 MT vinfo gt gt gt Changing 1 context to MT val MessageBreak on line 2515 debug space previous nameuse MT tempb context 2516 h 2517 def MT reset context aftergroup MT reset contextO The next time we see the font we have to reset all factors 8 MT glet nn MT reset tempb codes MTOreset tempb codes N o We must also keep track of all contexts in the document expandafter MT exp one n expandafter MT in tlist expandafter MT val csname MT tempb doc contexts endcsname ifMT inlist else MT exp cs MT xadd MT tempb doc contexts MT val debug MT dinfofi l added 1 context nameuse MT tempb doc contexts fi MT edef n MT Gtempb context MT val 26 fi 7 fi yh LA h2 h2
175. eichen soll hei en immer wenn ein bestimmtes Zeichen im Text auftaucht wird das angegebene Kerning eingef gt unabh ngig davon welche Zeichen vorgehen oder folgen Ich sollte nicht vers umen zu sagen dass es eine Limitierung zus tzlichen Ker nings gibt W rter die solch einem Kerndirekt folgen nicht von einem Leerzeichen getrennt werden nicht mit Bindestrich versehen solang man die Trennpunkte nicht selbst einstellt z B f r Kerning nach dem Apostroph 1 apos trophe Diese Restriktion von pdfT X wird hoffentlich bald abgeschafft Die Einstellungen des Kerning werden als Paare der Form Zeichen Kerning Werte angegeben wobei letzteres 2 Werte enth tl das Kerning welches vor und nach dem betreffenden Zeichen angef gt wird Einmal mehr k nnen Werte ausgelassen werden nicht aber das Komma Available from CTAN at macros latex contrib microtype microtype pdf MICRO FEINABSTIMMUNG Wortzwischenr ume 20 Optionen name load factor preset inputenc Diese Optionen dienen der gleichen Funk tionalit t wie in den vorigen Konfigurationsbefehlen unit Zul ssige Werte sind space character und eine Dimension Standard m ig bezeichnen die Werte ein Tausendstel von 1 em context Wenn es um Kerning Einstellungen geht ist diese Option besonders n tzlich da sie erlaubt Einstellungen abh ngig von der Sprache anzuwenden Zum Beispiel kann man die folgenden Einstellungen angedacht f r Dokumente i
176. elax let MT ls adjust relax def MT 1s set 1ls 1 MT ifempty 1 let MT letterspace Gundefined KV sp def MT letterspace 1 MT 1s too large MT letterspace MT 1ls adjust T Test whether letterspacing amount is too large def MT 1s too large 1 7 ifnum 1 gt MT tr max MT warning Maximum for option letterspace is number MT tr max let 1 MT tr max else ifnum 1 lt MTOtr min MT warning Minimum for option letterspace is number MT tr min let 1 MT tr min fi fi T This dimen is used for the starred version of textls for lslig and for adjusted outer kerning newdimen MT outer kern package def MT tr set okern 1 2 let MT temp Cempty MTCifempty 1 MT tr set okern MTCtr set okern 1 MT ifempty 2 MTOtr set okern MTOtr set okernO 2 MT glet nc MT outer kern expandafter string font name MT temp debug MT dinfo nl2 outer kerning 1 2 debug nameuse MT outer kern expandafter string font name T def MT tr set okernO 1 MT test ast 1 nil MT ifdefined cQTF MTOtr unite edef tempb 1 MT scale to em tempcntb 1 relax tempdima dimexpr tempcntb sp MT dimen six 1000 relax H MT ifempty tempa let tempa m relax tempdima dimexpr numexpr tempa MT letterspace 1000 relax sp fontdimen6 MT 1sfont 2000 relax yh advance tempdima dimexpr MT letterspace sp fontdimen6 MT 1sfont 2000 relax edef MT
177. empty 96 plain relax 197 198 ifnum MT pdftex no lt 99 package 2 0 letterspace 6 MT warning n1 You 2 ifcase MT pdftex no 3 don t seem to be using pdftex MessageBreak 4 MTOMT only works with pdftex MessageBreak 5 Try running pdflatex instead of 10 ifx XeTeXversion undefined else xe fi latex 7 else 8 are using a pdftex version older than 9 package 0 14f 0 letterspace 1 40 1 MessageBreak 2 MTOMT does not work with this version MessageBreak 3 d Please install a newer version of pdftex fi 5 6 MT clear options MT restore catcodes 7 endinput fi Since lua rX is included in TEX Live 2008 we now support it by default even though it s still experimental Letterspacing doesn t work at all yet since lua TEX doesn t know the letterspacefont command DD h2 KA KA h2 KA K KA bh2 LA bh2 bh2 KA KA KA bh2 Lb2 218 lua letterspace 219 ifx directlua undefined else ifx directlua relax else 22 221 letterspace MT error 222 letterspace MT warningenl 223 MTOMT 224 Metterspace only works with luatex if you generate 225 letterspace doesn t currently work with luatex 226 MessageBreak 227 letterspace the package with the lua option 228 letterspace Bye bye 229 230 letterspace 231 letterspace MT clear options MT restore catcodes 232 letterspace expandafter expandafter expandafter endinput 233 Mi
178. er Befehl textmicrotypecontext den Kontext f r den Text der im zweiten Argument bergeben wird Angenommen Sie m chten eine gr ere Menge von Fussnotenzeichen im Text erhalten dann k nnen die Einstellungen der Zahlen so definieret werden SetProtrusion context footnote font x x scriptsize adapt if necessary 1 650 2 400 3 1 400 4 400 5 400 6 400 7 500 8 400 9 400 0 400 TL um damit den Kontext im Fussnoten Befehl zu ndern Dieser Befehl unterscheidet sich zwischen den verscheidenen Klassen F r die Basisklassen z B article w re es newcommand new makefnmark hbox textsuperscript normalfont microtypecontext protrusion footnote thefnmark renewcommand footnotemark leavevmode ifhmode edef 0x sf the spacefactor nobreak fi new makefnmark ifhmode spacefactor x sf fi relax F r die memoir Klasse m ssten Sie zus tzlich die automatische Erkennung mehrerer Fussnoten deaktivieren welches ein hervorheben des Fussnotentextes verhindert renewcommand Cmakefnmark hbox Ctextsuperscript normalfont microtypecontext protrusion footnote thefnmark let m mmf prepare relax let m mmf check relax Eine weitere M glichkeit w re es den Kontext f r eine sprachabh ngige Einstellung zu verwenden Zum Beispiel wenn Sie einen Text auf Franz sisch schreiben k nnen Sie microtypecontext kerning french in der Pr a
179. er die ich gefunden habe Harald Harders hat dazu beigetragen die Vorsprungseinstellungen f r Adobe Mi nion m glich zu machen Ich m chste ihm auch f r eine Reihe an Fehlermeldungen und Vorschl gen danken die er gemacht hat Andreas B hmann hat die M glichkeit 12 LITERATUR 31 vorgeschlagen Bereiche von Schriftgr en anzugeben und geistreich bei der Imple mentierung dieser zu helfen Er hatte auch einige guten Ideen f r das Management von komplexen Konfigurationen Ulrich Dirr hat zahlreiche Vorschl ge gemacht besonders bez glich der neuen Erweiterungen der Zwischenwortabstandsanpassung und zum zus tzlichen Kerning Mein Dank gilt auch Maciej Eder f r die beigetra genen Einstellungen der QX Kodierung sowie Karl Karlsson zur Bereitstellung von Einstellungen f r die kyrillische T2A Kodierung Ich bedanke mich bei Elie Rouz das sie das lua Modul erschaffen hat Ich danke Philipp Lehman das er seinem csquotes Paket die M glichkeit hinzuge f gt hat die urspr ngliche Bedeutung aller aktivierten Zeichen wiederherzustellen so dass diese f r die Zeichen in den Konfigurationsdateien verwendet werden k n nen Freundlicherweise hat Peter Wilson ein H kchen in seinen ledmac ledpar Paketen zur Verf gung gestellt so dass kritische Editionen schlie lich auch vom Charakter Vorsprung profitieren Zus tzlich haben die folgenden Personen Bugs gemeldet Vorschl ge gemacht oder anders geholfen in chronologischer Reihenfolge
180. es b IMPLEMENTATION Preliminaries 50 606 MT inlist true 607 expandafter MT tlist break 608 fi 609 MT in rlist Test whether size MT size is in a list of ranges Store the name of the list in MT in rlist MT size name MT in rlist 610 def MT in rlist 1 MT size name 611 MT inlist false E MT map tlist c 1 MT in rlist def MT in rlist 1 expandafter MT inO rlist 1 615 def MT in rlistO 1 2 3 616 MT ifdim 2 m ne 617 MT ifdim 1 MT size 618 MT inlist true 619 relax 620 H 621 MT ifdim MT size lt 1 relax 622 MT ifdim MT size lt 2 623 MT inlist true 624 relax 625 H 26 3 627 ifMT inlist 28 def MT size name 3 629 expandafter MTCtlist break 630 fi 631 T 1 2 613 4 MT loop This is the same as IATEX s loop which we mustn t use since this could confuse MT iterate an outer loop in the document MT repeat 632 package 633 def MT loop 1 MT repeat 634 def MT iterate 1 relax expandafter MT iterate fi 635 MT iterate let MT iterate relax 636 637 let MT repeat fi MT while num Execute 3 from 1 up to excluding 2 much faster than IXTEX s whilenum 638 def MT while num 1 2 3 7 639 tempcnta 1 relax 640 MT loop 3 641 advance tempcnta ne 642 ifnum tempcnta lt 2 MT repeat 643 MT do font Execute 1 256 times 644 def MT do font MT while num z cclvi 645 package MT count Incre
181. esem Abschnitt 5 beschrieben Diese Dateien werden automatisch geladen wenn sie die betreffenden Fonts tats chlich nutzen Das Paket kommt mit mit Konfigurationsdateien f r eine Reihe von Fontfamilien Tabelle 3 enth lt sie alle list of suffixes Auf seiner Suche nach einer Konfigurationsdatei versucht das Paket auch Suffixe oder einen oder mehr Buchstaben von einem Fontnamen zu entfernen welche auf ei ne Variante des Basisfonts hindeuten k nnten vergleiche Karl Berrys Fontname Das erlaubt z B Einstellungen f r z B die Fonts padx Experten Set padj altert mliche Numerale und pad einfach in der selben Datei mt pad cfg vorzu nehmen Der Befehl erwartet eine durch Komma abgetrennte Liste von Suffixen f r Varianten Die Version mit Stern h ngt die Suffixe der existierenden Liste an Die Standard Deklaration in microtype cfg lautet DeclareMicrotypeVariants x j w a d 0 1 Fontname alias Font Dieser Befehle kann f r Fonts genutzt werden die sich sehr hnlich oder gar gleich sind falls sie sich zum Beispiel nicht an das Berry Namensgebungsschema beim Installieren der Fonts hielten Ein Beispiel w ren die Latin Modern Fonts welche von Computer Modern abgeleitet sind sodass es nicht notwendig ist neue Einstellungen f r diese vorzunehmen man k nnte sagen DeclareMicrotypeAlias lmr cmr wodurch das Paket wann immer der Font Imr vorkommt und keine Einstellungen daf r gefunden werden k nne
182. et MT curr set name let MT val relax yh T N h2 b2 DN KA Quo m OW VG G K Fa MT def ine set key font 2675 def MT def ine set key font 1 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 MT get f ont 2691 2692 2693 2694 2695 2696 MT getOfont 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 MT get axis 2713 2714 2715 2716 2717 2718 2719 2720 2721 MTQwarn axis empty III N NNN aor Wh N NNN IMPLEMENTATION Configuration 102 wy def ine key MTO 1 set font CA MT glet nc MTG 1list font MT curr set name Gempty MT map clist n 1 KV sp def MTO val 1 MT ifstreq MT val def MTOQval relax expandafter MT get font MT val nil MT exp two n g addto macro csname MTC 11list font MT curr set name expandafter endcsname MT val th expandafter g addto macro expandafter MT font sets csname MT 1list font MT curr set name endcsname debug MT dinfo nl 1 font nameuse MT 1list font MT curr set name yh Translate any asterisks def MT get font 1 2 3 4 5 6 Cnil MTOget font 1 2 3 4 5 0 ifx MT val relax def MT val 0 fi expandafter g addto macro expandafter tempb expandafter MT val let MT val tempb Helper macro also used by MT get font and size def MT get font 1 2 3 4 5
183. ey tr outerkerning Which ligatures should be disabled def ine key MT tr c noligatures MT xdef n MT tr c MT curr set name noligatures 1 define key MT tr c outer spacing U setkeys MT tr c outerspacing 1 define key MT tr c outer kerning UD setkeys MT tr c outerkerning 1 j define key MTCtr c no ligatures setkeys MT tr c noligatures 1 Character inheritance This macro may be used in the configuration files to declare characters that should inherit protrusion resp expansion values from other characters Thus there is no need to define all accented characters e g a Va Va Va a rfa k a ufa which will make the configuration files look much nicer and easier to maintain If a single character of an inheritance list should have a different value one can simply override it The optional argument may be used to restrict the list to some features and to specify an input encoding renewcommand DeclareCharacterInheritance 1 UO let MT Cextra context Cempty let MTCextraCinputenc undefined let MT inh feat empty setkeys MT inh 1 MT begin catcodes MT set inh list F Safe category codes def MT set inh list 1 2 MT ifempty MT inh feat MT map clist c MT features MT declare char inh 1 1 2 T MT map clist c MT inh feat KV sp def tempa 1 MT ifempty tempa relax MT exp one n MT declare char inh csname MT rbba tempa end
184. family ptm ptmx ptmj 5668 shape sc 5669 5670 a 50 50 5671 5672 5673 5674 5675 5676 cmr pad ppl ptm Nae 50 bch pmn c 50 bch pad pmn d lt L 50 m t bch cmr pad pmn ptm f 1 50 bch pad pmn g 50 m t cmr pad pmn ppl ptm j 50 5677 bch j 100 5678 m t bch cmr pad pmn ppl 1 41 50 5679 ptm 1 1 80 5680 m t bch cmr pad pmn ppl 029 lt 50 fl 5681 ptm 029 80 fl 5682 bch pad pmn o 50 50 5683 bch pad pmn oe 50 5684 ppl p 0 O 5685 bch pad pmn q 50 70 5686 ppl q 0 5687 m t cmr pad pmn ppl ptm r O 5688 t 50 50 5689 m t bch cmr pad pmn ppl y 50 50 5690 ptm y 80 80 5691 5692 5693 Mblg ugm 5694 m t cmr 5695 NSetProtrusion 5696 m t name T2A sc 5697 cmr L name cmr sc T2A 5698 m t load T2A default 5699 cmr load cmr T2A 5700 encoding T2A 5701 cmr family cmr 5702 shape sc 5703 5704 cyra 50 50 5705 cyrg 7 L 50 5706 cyrt 50 50 707 cyry bot 708 TL H 710 m t cmr CONFIGURATION FILES Character protrusion 166 5711 m t 5712 SetProtrusion 5713 name QX sc 5714 load QX default 5715 encoding QX 5716 shape sc 5717 5718 a 50 50 57
185. family T AMS b U msb CONFIGURATION FILES Character protrusion 180 6492 A 50 50 mathbb 6493 C 50 50 6494 G 50 6495 L _ 50 6496 P L 50 6497 R 50 6498 T L 50 6499 V 50 50 6500 X 50 50 6501 Y 50 50 6502 00 50 50 Mvertneqq 6503 01 50 50 Ngvertneqq 6504 02 50 50 nleq 6505 03 50 50 ngeq 6506 04 100 50 nless 6507 05 50 150 ngtr 6508 06 100 50 nprec 6509 07 50 150 nsucc 6510 08 50 50 Mneqq 6511 09 50 50 gneqq 6512 OA 100 100 nleqslant 6513 OB 100 100 ngeqslant 6514 oc op 50 Mneq 6515 OD 50 100 Ngneq 6516 OE op 50 npreceq 6517 OF 1 50 100 nsucceq 6518 10 50 precnsim 6519 11 50 50 succnsim 12 50 50 lnsim 13 50 50 gnsim 14 50 50 nleqq 15 50 50 ngeqq 16 50 50 precneqq 17 50 50 succneqq 18 50 50 precnapprox 19 50 50 succnapprox 1A 50 50 lnapprox 1B 50 50 gnapprox 1C 150 200 nsim 1D 50 50 ncong 1E 100 150 diagup IF 100 150 diagdown 20 1100 50 Nvarsubsetneq 21 50 100 varsupsetneq 22 1100 50 nsubseteqq 23 50 100 nsupseteqq 24 100 50 subsetneqq 25 5
186. fined else expandafter MTCtlist break fi D Beginning with version 1 7 we always check for the font size Since the matching order has become more logical now it can be described in words so that we don t need table 4 in the documentation part any longer and can cast it off here def MT try order 1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 The current context is added to the font attributes That is the context must match def MT next listname 1 2 3 4 7 edef tempa MT encoding ifnum 1 ne MT family fi ifnum 2 ne MT series fi ifnum 3 ne MT shape fi ifnum 4 Cne fi MT context debug MT dinfo nl 1 trying tempa MT ifdefined n TF MT tempb Ctempa MT next listname 4 T Also try with an alias family ifnum 1 ne ifx MT familyalias empty else edef tempa MT encoding MT familyalias ifnum 2 Cne MT series fi ifnum 3 ne MT shape fi ifnum 4 Cne fi MT context debug MT dinfo nl 1 alias tempa MT ifdefined n T MT Gtempb Gtempa MT next listname 4 th fi fi yh D IMPLEMENTATION Font setup 87 MT next listname If size is to be evaluated do that otherwise use the current list 35 def MT next listname 1 136 ifnum 1 ne 137 MT exp cs MT in rlist MT tempb tempa sizes 38 ifMT inlist let MT listname MT size name 40 fi else MT let cn MT listname
187. fined c T MT ifdefined c TF MT ifdefined n T MT ifdefined n TF MT detokenize n MT detokenize c MT rem last space 9 amp d o Eo Wo o D Uo D DO GG 361 366 367 368 369 Ne en 0 A OO E G LOL OL e e O0 OO O0 O0 ak WN Qo 391 392 393 394 395 396 397 398 399 400 401 IMPLEMENTATION Preliminaries 45 def MT glet nn MT expOgcs global expandafter MT let cn Remove trailing space from the font name def MT font expandafter string MT font Expand the second token once and enclose it in braces 2 package def MT exp one n 1 2 expandafter 1 expandafter 2 Expand the next two tokens after 1 once def MT exp two c 1 expandafter expandafter expandafter 1 expandafter package Expand the next two tokens after 1 once and enclose them in braces def MTCexp twoCn 1 2 31 expandafter expandafter expandafter 1 expandafter expandafter expandafter expandafter 2 expandafter expandafter 3 You do not wonder why MT exp one c doesn t exist do you Wrapper for testing whether command resp csname sequence is defined If we are running e TEX we will use its primitives ifdefined and ifcsname which decreases memory use substantially def MT ifdefined c T 1 X ifdefined 1 expandafter firstofone else expandafter gobble fi H ifx 1 undefined expandafter gobble else expandafter firstofone fi J package def MT ifdefined c TF 1
188. fined n TF MT 1list size Gtempa MT exp cs MT in rlist MTOQ 1list size Otempa ifMT inlist debug MT dinfo list 1 size in MT dotrue else debug MT dinfo list 1 size not in MT dofalse expandafter MT clist break fi yh debug MT dinfo list 1 size T If the font matches we skip the rest of the test def MT checklist font 1 debug MT ifdefined n T debug MT ifdefined n TF MTC 11ist font tempa Since MT font may be appended with context and or letterspacing specs we construct the name from the font characteristics IMPLEMENTATION Font setup 61 010 edef tempb MT encoding MT family MT series MT shape MT size 1 expandafter MT exp one n expandafter MT in clist expandafter 2 tempb csname MT 1list font tempa endcsname 013 ifMT inlist 4 debug MT dinfo list 1 font in 015 expandafter MT clist break 016 else 017 debug MT dinfo list 1 font not in 8 MT dofalse 9 fi 0 P 1 debug MT dinfo list 1 font 2 LA N N 14 2 1 Protrusion MT protrusion Set up for protrusion 1023 def MT protrusion MT maybe do pr MT set pr codes This macro is called by MT setupfont and does all the work for setting up a font for protrusion 4 def MT set pr codest Check whether and if which list should be applied to the current font 5 MT if list exists MT getOfont dimen six MT get opt MT reset pr codes LA NNN N
189. fo MT info nl def MT warning 1 PackageWarning MTOMT 1 MT addto annot Warning 1 def MT warning nl 1 PackageWarning MTOMT 1 gobble MT addto annot Warning 1 def MT dinfo 1 2 ifnum tracingmicrotype lt 1 else MT info 2 fi def MT dinfo n1 1 2 ifnum tracingmicrotype lt 1 else MT info n1 2 fi Another debug method font switches can be marked in the PDF file with a small caret an accompanying popup text box displaying all debug messages Cases for tracingmicrotypeinpdf 1 show new fonts 2 show known fonts newcount tracingmicrotypeinpdf If microtype sty had been generated with the debug option this method would be demonstrated here During font setup we save the text for the popup in MT pdf annot This requires pdfTEX gt 1 30 The pdftexcmds package provides pdfT X s utility commands in luaT X too RequirePackage pdftexcmds newif ifMT inannot MT inannottrue let MT pdf annot empty def MT addto annot 1 ifnum tracingmicrotypeinpdf gt z ifMT inannot def MessageBreak J spaces MT xadd MT pdf annot pdf escapestring 1 J fi fi With tracingmicrotypeinpdfallfalse the PDF output is hopefully identical but some font switches will not be displayed otherwise the output is affected but all font switches are visible In the latter case we also insert a small kern so that multiple font switches are discernable newif iftracingmicrotypeinpdfall A red ca
190. g if a chosen protrusion factor is too large after the conversion As a special service we also type out the maximum amount that may be specified in the configuration def MT warn code too large 1 tempcnta 1 relax ifnum csname MT MT feat factor endcsname m else expandafter MT scale expandafter tempcnta expandafter m csname MT MT feat factor endcsname fi MT get opt MT pr factor MT sp factor MT kn factor MT pr unite MT sp unit MT kn unit MT get space unit MT get char unit 1167 1168 1169 1170 1171 1172 1173 74 Sn NID oclo 2 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 IMPLEMENTATION Font setup 65 MT scale tempcnta MT dimen six MT count MT warning nl The nameuse MT abbr MT feat code tempb space is too large for character MessageBreak the MT toks in MT curr list name MessageBreak Setting it to the maximum of number tempcnta tempcntb 1 relax T The optional argument to the configuration commands except for SetExpansion which is being dealt with in MT get ex opt def MT get opt MT set listname Apply a factor MT ifdefined n TF MTO MT feat c csname MT MT feat c name endcsname factor MT let nn MTO MT feat factor MT MT feat c csname MT MT feat c name endcsname factor MT vinfo Multiplying nameuse MT abbr MT feat codes by number csname MT MT feat factor endcsnam
191. gothic ulg g Alias pxfonts pxr qfonts QuasiPalatino TEX Gyre Pagella qp1 FPL Neu fp9x fp9j h Alias txfonts txr qfonts QuasiTimes T X Gyre Termes qtm i Alias eulervm zeur zeus einer Datei festgelegte Einstellungen zu erweitern die sonst nicht automatisch oder zu sp t geladen w rden Dieser Befehle l dt die Datei mt Fontname cfg 6 Kontext sensitive Einstellungen Das microtype Paket erlaubt zudem verschiedene Mikro typografische Einstellungen f r die Schriftarten die vom Zusammenhang abh ngig sind zu verwenden Dies er ffnet unendlich viele M glichkeiten der Feinabstimmungen f r das Aussehen des Dokuments microtypecontext context assignments Dieser Befehl kann berall im Dokument auch in der Pr ambel verwendet werden um den Mikro typografischen Zusammenhang in der aktuellen Gruppe zu ndern Zu jeder Funktion protrusion expansion tracking spacing und kerning kann ein Kontext zugewiesen werden Folglich k nnen nur Einstellungen mit dem entsprechenden Kontext Schl sselwort verwendet werden begin microtypecontext context assignments end microtypecontext Authoren von Fontpaketen sollten vielleicht einen Blick auf den hook Microtype Hook werfen KONTEXT SENSITIVE EINSTELLUNGEN 24 Wieviele andere BTEX Befehle ist der Befehl in Form einer Umgebung verf gbar textmicrotypecontext context assignments general text Als weitere M glichkeit ndert d
192. har 2195 let MT char m ne 2196 MT noresttrue Save unexpanded string in case we need to issue a warning message 2197 MT toks expandafter tempa Now let s walk through hopefully all possible cases e It s a letter a character or a number 2198 expandafter MT is letter tempa relax relax 2199 ifnum MT char lt z e It might be an active character i e an 8 bit character defined by inputenc If so we will expand it here to its LICR form 2200 MT exp two c MT is active string tempa nil e OK so it must be a macro We do not allow random commands but only those defined in IATEX s idiosyncratic font encoding scheme If encoding command that s one command is defined we try to extract the slot number We must be cautious not to stumble over accented characters consisting of two commands like V Ni or NUNCYRI hence Nstring wouldn t be safe enough 201 MT ifdef ined n TF MT encoding MT detokenize c tempa 202 MT is symbol e Now we ll catch the rest which hopefully is an accented character e g a IMPLEMENTATION Font setup 89 2203 expandafter MT is composite tempa relax relax 2204 ifnum MT char lt z e It could also be a chardefed command e g the percent character This seems the least likely case so it s last 5 expandafter MT exp two c expandafter MT is char expandafter 10 meaning expandafter tempa MT charstring relax relax relax UI fi 8 Mi
193. harpoonleft 6407 19 200 200 downharpoonleft 6408 1A 80 100 rightarrowtail 6409 1B 80 100 leftarrowtail 6410 1c 50 50 leftrightarrows 6411 1D 50 50 rightleftarrows 6412 1E 250 Lsh 6413 iF 250 Rsh 6414 20 100 100 rightsquigarrow 6415 21 100 100 leftrightsquigarrow 6416 22 100 50 looparrowleft 6417 23 1 50 100 looparrowright 6418 24 50 80 circeq 6419 25 100 succsim 6420 26 100 gtrsim 6421 27 100 gtrapprox 6422 28 150 50 multimap 6423 2B 100 150 doteqdot 6424 2C 100 150 triangleq 6425 2D 100 50 precsim 6426 QE 100 50 lesssim 6427 QF 50 50 lessapprox 6428 30 100 50 eqslantless 6429 31 50 50 eqslantgtr 6430 32 100 50 curlyegprec 6431 33 50 100 curlyeqsucc 6432 34 100 50 preccurlyeq 6433 36 50 3 leqslant 6434 38 50 backprime 6435 39 250 250 dabar the dash bar in dash left right arrow MODI Qoo C nen 470 NINN TR WN rz Ka O oO ON MU 5482 483 484 3485 5486 3487 488 3489 5490 CONFIGURATION FILES Character protrusion HaC 50 100 succcurlyeq SE 50 geqslant 40 50 sqsubset 41 50 3 sqsupset 42 150 vartriangleright rhd 43 150
194. harter NFSS code bch 4500 bch L name bch default e Bitstream Letter Gothic blg 4501 blg L name blg default e Computer Modern Roman cmr 502 cmr L name cmr default e Adobe Garamond pad padx padj 503 pad name pad default e Minion pmnx pmnj 504 pmn name pmnj default e Palatino ppl pplx pplj 505 pp L name 7 ppl default e Times ptm ptmx ptmj 506 ptm name ptm default e URW Garamond ugm 19 Contributed by Harald Harders and Karl Karlsson o D oO DOG o ov ol ooo a ol h2 h2 h2 h2 ND C ww Ne Oo ba oO Ou or ot N NN le e o1 SI a D on an C on on ork Wb on ol Or A o ww 02 www www G co o o oi ov C o or On rok WN ra ori o o o1 ac ao o1 c CONFIGURATION FILES Character protrusion 145 ugm K lt L 70 blg 1 150 150 ugm L name ugm default m t cmr pmn 1 bch blg pad ugm encoding OT1 ppl ptm L encoding 0T1 0T4 bch family bch blg family blg pad family pad padx padj ppl family ppl pplx pplj ptm family ptm ptmx ptmj ugm family ugm m t bch blg cmr pad pmn ppl ptm A 50 50 ugm A 50 100 pad ptm AE 50 ugm ME 150 50 ugm B lt L 50 bch pad pmn ugm c 50 bch
195. he user didn t bother to invent one def ine key MT 1 c name C MT ifempty 1 MT edef Qn MTOQ 1 c name MT curr file the inputlineno H MT edef n MTC 10c name 1 MT CifdefinedCn CT MTC 10c csname MT 1 c name endcsname MT warning Redefining nameuse MT abbr 1 list nameuse MT 1 c name T T MT let cn MT curr set name MTG 1 c name 3 MT def ine opt key 1 load MT def ine opt key 1 factor MT def ine opt key 1 preset MT def ine opt key 1 inputenc Only one context is allowed This might change in the future def ine key MTO 1 c context MT ifempty 1 relax def MT extra context 1 T Automatically enable font copying if we find a protrusion or expansion context After the preamble check whether font copying is enabled For older pdfTEX versions disallow Also disable for luaTEX gt MT requires pdftex7 lua MT requires luatex def ine key MT ex c context U MT error Expansion contexts currently don t work with luatex MessageBreak Ignoring context key on line IMPLEMENTATION Configuration 110 3032 Use pdftex instead 3033 3034 H 3035 lua 3036 def ine key MT ex c context 3037 MT ifempty 1 relax 3038 MT glet MT copy f ont MT copy font 3039 def MT extra context 1 3040 T 3041 3042 MT addto setup 3043 define key MT ex c context U CA 3044 ifx MT copy font MT copy font 3045
196. her argument is empty package begingroup catcode 12 catcode amp 14 7 gdef MT ifempty 1 amp if 1 amp expandafter firstoftwo else expandafter secondoftwo fi T endgroup package Test whether argument is an integer using an old trick by Mr Arseneau or the latest and greatest from pdfTEX or luaTEX which also allows negative numbers as required by the letterspace option gt MT requires pdftex6 7 lua MT requires luatex def MT ifint 1 csname MT lua microtype ifint 1 endcsname H lua package def MT ifint 1 ifcase pdfmatch 0 9 1 relax expandafter secondoftwo else expandafter firstoftwo fi F xpackage lua T H def MT ifint 1 if ifnum9 lt 1 1 else fi expandafter firstoftwo else expandafter secondoftwo fi T T package package letterspace luafile function microtype ifint s if string find s 0 9 then tex write firstoftwo else tex write secondoftwo end end luafile Test whether argument is dimension or number nd and nc are new Didot resp MT ifdim MT ifstreq 456 7 zb e AION AY zk Sd 453 454 5 8 9 60 5 5 5 5 5 461 462 463 464 2 OD VG WN a N IMPLEMENTATION Preliminaries 47 Cicero added in pdfT X 1 30 px is a pixel xpackage MT requires pdftex6 lua MT requires luatex def MT ifdimen 1 csname MT lua m
197. ht blind gew hlt werden Es wird empfohlen mit den Einstellungen zu experimentieren um zuverstehen wie die Eigenschaften funktionieren Kompatibilit t und Interaktion mit anderen Paketen Das microtype Paket sollte sehr gut mit anderen I4TgX Paketen zusammen arbeiten ausgenommen von HINWEISE UND WARNUNGEN 29 pdfcprot Jedoch da das Leben nicht perfekt ist sind Probleme zu erwarten Momentan sind folgende Probleme bekannt Wenn Sie 8 Bit Zeichen in der Konfiguration verwenden m chten m ssen Sie zuerst das Paket inputenc laden Das Verwenden von Unicode wird ebenfalls unterst tzt wenn Sie inputenc mit der utf8 oder utf8x option laden Bei der Verwendung von mehreren Input Kodierungen in einem Dokument werden 8 Bit Zeichen in den Einstellungen nur zuverl ssig funktionieren wenn Sie den inputenc Schl ssel spezifizieren Beim Laden des Pakets mit der babel Option sollten Sie das babel Paket vor microtype laden Es ist derzeit nicht m glich Charakter spezifische Einstellungen f r chinesische japanischen koreanischen Schriften zu erstellen Deshalb ist die einzige mikro typografische Erweiterung die mit dem CJK Paket arbeiten kann die Schriftart vergr erung M gliche Fehlermeldungen und wie man diese beseitigt Font csnameendcsname cmr10 20 at 10 0pt not loadable Metric TFM file not found Diese Fehlermeldung tritt auf wenn Sie versuchen die Schriftartvergr erung zu verwenden w hrend Sie eine DVI A
198. i cation of the Work are not covered by this license they are outside its scope In particular the act of running the Work is not restricted and no require ments are made concerning any offers of support for the Work 2 You may distribute a complete unmodified copy of the Work as you received it Distribution of only part of the Work is considered modification of the THE KTEX PROJECT PUBLIC LICENSE 195 Work and no right to distribute such a Derived Work may be assumed under the terms of this clause You may distribute a Compiled Work that has be en generated from a complete unmodified copy of the Work as distributed under Clause 2 above as long as that Compiled Work is distributed in such a way that the recipients may install the Compiled Work on their system exactly as it would have been installed if they generated a Compiled Work directly from the Work If you are the Current Maintainer of the Work you may without restriction modify the Work thus creating a Derived Work You may also distribute the Derived Work without restriction including Compiled Works generated from the Derived Work Derived Works distributed in this manner by the Current Maintainer are considered to be updated versions of the Work If you are not the Current Maintainer of the Work you may modify your copy of the Work thus crea ting a Derived Work based on the Work and com pile this Derived Work thus creating a Compiled Work
199. icense Definitions In this license document the following terms are used Work Any work being distributed under this License Derived Work Any work that under any applicable law is derived from the Work Modification Any procedure that produces a Derived Work under any applicable law for example the production of a file containing an original file as sociated with the Work or a significant portion of such a file either verbatim or with modifications and or translated into another language Modify To apply any procedure that produces a De rived Work under any applicable law Distribution Making copies of the Work available from one person to another in whole or in part Distribution includes but is not limited to ma king any electronic components of the Work ac cessible by file transfer protocols such as FTP or HTTP or by shared file systems such as Sun s Network File System NFS Compiled Work A version of the Work that has been processed into a form where it is directly usable Everyone is allowed to distribute verbatim copies of this license document but modifica tion of it is not allowed This license gives conditions under which a work may be distributed and modified as well as conditions under which modified versions of that work may be distributed We the IXTEX3 Project believe that the condi tions below give you the freedom to make and dis tribute modified versions of your work that conform
200. icrotype ifdimen 1 endcsname H lua def MT ifdimen 1 ifcase pdfmatch 0 9 L 0 9 71 0 9 1 em ex cmImnl inlpclptlddlcclbplsplndinclpx 1 relax expandafter secondoftwo else expandafter firstoftwo fi T lua T H def MT ifdimen 1 setbox z hbox MT count 1 1 relax ifnum MT count ne aftergroup secondoftwo else aftergroup firstoftwo fi th T H package luafile function microtype ifdimen s if string find s 0 9 a or string find s 0 9 0 9 a then tex write firstoftwo else tex write secondoftwo end end luafile Test floating point numbers package def MT ifdim 1 2 3 7 ifdim 1 p 2 3 p expandafter firstoftwo else expandafter secondoftwo fi H Test whether two strings fully expanded are equal MT requires pdftex5 lua MT requires luatex def MT ifstreq 1 2 csname MT lua microtype ifstreq 1 2 endcsname H lua def MT ifstreq 1 2 IMPLEMENTATION Preliminaries 48 08 ifcase pdfstrcmp 1 2 relax 09 expandafter firstoftwo 0 else expandafter secondoftwo fi T lua T H j def MT ifstreq 1 2 7 edef MT res a 1 8 edef MT res b 2 9 ifx MT res a MT res b 20 expandafter firstoftwo else expandafter secondoftwo fi oP WN ra 2 2 2 2 2 2 2 2 2 TR Go HM Fa 5 6 package 7 luafile 8 function microty
201. if they are changed by a package that loads different math fonts there is no guarantee whatsoever that things will still be correct e g the minus in cmsy when the euler package is loaded So no way to go unfortunately Some warning messages for performance reasons separated here The type and name of the current list defined at various places def MT set listname edef MT curr list name nameuse MT abbr MT feat list noexpand MessageBreak nameuse MT MT feat c name T For other characters gt 127 we issue a warning inputenc probably hasn t been loaded since correspondence with the slot numbers would be purely coincidental def MT warn ascii MT warning nl Character the MT toks MT char is outside of ASCII range MessageBreak You must load the inputenc package before using MessageBreak 8 bit characters in MT curr list name T Number too large def MT warn number too large 1 MT warningen1 Number 1 in encoding MT encoding too large MessageBreak Ignoring it in MT curr list name D Not all of the string has been parsed def MT warn rest 7 MT warningen1 Unknown slot number of character MessageBreak the MT toks MT warn maybe inputenc MessageBreak in font encoding MT encoding MessageBreak Make sure it s a single character MessageBreak or a number in MT curr list name T No idea what went wrong def MT warn unknown
202. ifMT kerning Disable French babel s active characters 27 MT if false 28 MT with babel and T french MT if true 2 3 9 MT with babel and T frenchb MT if true 30 MT Qwith babel and T francais MT if true 4031 MT Qwith babel and T canadien MT if true 032 MT Qwith babel and T acadian MT if true 4033 ifMT if MT shorthandoff French fi Disable Turkish babel s active characters 034 MT if false 4035 MT with babel and T turkish MT if true 036 ifMT if MT shorthandoff Turkish fi 037 fi In case babel was loaded before microtype 038 MT set babel context languagename 039 H 4040 MT warning nl You did not load the babel package MessageBreak 041 The babel option won t have any effect 042 T A o MT curr file N 4048 4049 4050 4051 15 CONFIGURATION FILES 133 fi Now we close the fi from ifMT draft MT addto setup fi Set up the current font most likely the normal font This has to come after all of the setup including anything from the preamble has been dealt with selectfont This is the current file hopefully with the correct extension 7 edef MT curr file jobname tex Finally execute the setup macro at the end of the preamble and empty it the combine class calls it repeatedly package plain MT requires latexif AtBeginDocument MT setup MT glet MT setup empty plain relax Warning if nonfrenchspacing
203. ima dimexpr numexpri000 tempa sp fontdimen 2 MT lsfont 1000 relax 811 812 debug MT dinfo n13 font dimen 2 1 the tempdima 813 MT tr outer l Recall the last skip must really be an interword space not just a marker nor a hard space i e one that doesn t contain stretch or shrink parts 814 def MT tr outer 1 y 815 ifhmode 816 ifdim lastskip gt 5sp 817 edef x the lastskip minus Opt 818 setbox z hbox MT outer space x 819 ifdim wd z gt z 820 debug MT dinfo2 adjusting pre space the MT outer space 821 unskip hskip MT outer space relax Disable left outer kerning 822 let MT 1s outer k relax 3 else The ragged2e package sets spaceskip without glue ifdim lastskip ifnum spacefactor lt 2000 Oo O0 HMM bh2 K K 50A 826 spaceskip 827 else 828 ifdim xspaceskip z 829 dimexpr spaceskip fontdimen7 font name relax 830 else 831 xspaceskip 832 fi 833 fi 834 debug MT dinfo2 adjusting pre space skip the MT outer space 835 unskip hskip MT outer space relax 836 let MT ls outer k relax 837 fi 1838 1839 1840 1841 MT tr outer next MT tr outer r MTC tr outer r 1342 1843 1844 1845 1846 1847 1857 1858 1859 1860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 IMPLEMENTATION Font setup 80 fi fi fi The following is borrowed from soul I ve adde
204. ings for Bitstream Letter Gothic mt blg cfg Settings for Computer Modern Roman mt cmr cfg Settings for Adobe Garamond mt pad cfg Settings for Palatino mt ppl cfg Settings for Times mt ptm cfg Settings for Adobe Minion mt pmn cfg Contributed by Harald Harders ugm cfg u msa msb euf eur eus cfg e Settings for URW Garamond mt ugm cfg Surrounds non text configurations U encoding Settings for AMS a symbol font mt msa cfg Settings for AMS b symbol font mt msb cfg Settings for Euler Fraktur font mt euf cfg Settings for Euler Roman font mt eur cfg Settings for Euler Script font mt eus cfg Surrounds Euro symbol configurations zpeu Settings for Adobe Euro symbol fonts mt zpeu cfg euroitc Settings for ITC Euro symbol fonts mt euroitc cfg mvs Settings for marvosym Euro symbol mt mvs cfg test A helper file that may be used to create and test protrusion settings test microtype tex And now for something completely different 1 package letterspace 14 1 MTOMT MT fix catcode MT restore catcodes Bw N 29 SI 3 MT fix catcode 58 12 IMPLEMENTATION Preliminaries 36 Preliminaries This is us def MTOMT package microtype letterspace letterspace We have to make sure that the category codes of some characters are correct the german package for instance makes active Probably overly
205. ion MessageBreak So does the MT MT package Using both packages at the same MessageBreak time will almost certainly lead to undesired results Have your choice yh MT with package T ledmac MT ledmac setup We can clean up MT setupfont hook now let MT setupfont hook empty MT if false MT with babel and T spanish MT if true MT with babel and T galician MT if true MT with babel and T mexican MT if true ifMT ife g addto macro MT setupfont hook MT ifdefined c T percentsign let percentsign fi MT with package T csquotes ifpackagelater csquotes 2005 05 11 g addto macro MT setupfont hook disablequotes i0 MT warningen1 Should you receive warnings about unknown slot MessageBreak numbers try upgrading the csquotes package yh yh We disable microtype s additions inside hyperref s pdfstringdef which redefines lots of commands hyperref doesn t work with plain TEX so in that case we don t bother MT if false package plain MT requires latex2 MT withCpackage T hyperref pdfstringdefDisableCommands package let pickup font MT orig pickupfont IMPLEMENTATION Preliminaries 55 796 let textmicrotypecontext secondoftwo 797 let microtypecontext gobble 798 package 799 def lsstyle pdfstringdefWarn lsstyle 800 def textls 1 pdfstringdefWarn textls 11 Y 2 package MT if true Ba n 4 plain relax 5 package 6 MT with package T tex4h
206. is active since space factors will be ignored with pdfadjustinterwordglue gt 0 Why 1500 Because some packages redefine frenchspacing This has to be checked after the setup has taken place There still will be a false warning if babel is loaded after microtype without the babel option package MT requires pdftex6 AtBeginDocument ifMT spacing ifMT babel else ifnum sfcode gt 1500 MT ifstreq MT sp context nonfrench relaxt MT warningen1 string nonfrenchspacing space is active Adjustment of MessageBreak interword spacing will disable it You might want MessageBreak to add backslashchar MTOMT context spacing nonfrench MessageBreak to your preamble yh fi fi fi Y relax package Restore catcodes MT restore catcodes That was that package letterspace Configuration files Let s now write the font configuration files Cf the c t t thread frenchspacing with AMS packages and babel started by Philipp Lehman on 16 August 2005 MID ddtbaj rob 1 online de CONFIGURATION FILES Font sets 134 1073 config 4074 15 1 Font sets We first declare some sets in the main configuration file 075 km t 076 rA ME 4077 W FONT SETS 4078 079 DeclareMicrotypeSet all 4080 Ich 4081 082 DeclareMicrotypeSet allmath 4083 encoding OT1 T1 T2A LY1 0T4 QX T5 TS1 OML OMS U T 4084 085 DeclareMicrotypeSet alltext 086 encoding 0T1 T1 T2A LY1
207. is not enabled New option verbose silent to turn all warnings into mere messages 3 5 The letterspace package also works with eplain or miniltx 7 2007 07 14 Improvements to tracking letterspacing retain kerning pdfTEX gt 1 40 4 auto matically adjust protrusion settings New key no ligatures for SetTracking to disable selected or all ligatures pdfTEX gt 1 40 4 5 3 New keys spacing and outer spacing for SetTracking to customise interword spacing 5 3 Possibility to expand a font with different parameters pdfTEX gt 1 40 4 5 2 e New optional argument for DisableLigatures to disable selected ligatures only 8 New command DeclareMicrotypeVariants to specify variant suffixes 5 7 e New command textmicrotypecontext as a wrapper for microtypecontext 6 2 1 Protrusion settings for Bitstream Letter Gothic 2007 01 21 New command lslig to protect ligatures in letterspaced text 7 2 0 SHORT HISTORY 33 2007 01 14 Support for the new extensions of pdfTEX gt 1 40 tracking letterspacing ad justment of interword spacing glue and additional kerning new commands SetTracking SetExtraSpacing SetExtraKerning new options tracking spacing kerning 5 3 5 5 5 4 New commands textls and lsstyle for letterspacing new option letterspace 3 4 7 New option babel for automatic micro typographic adjustment to the selected langu
208. it und l sst Support f r alle anderen Erweiterungen aus siehe Abschnitt 7 Dieses Paket ist urheberrechtlich gesch tzt 2004 2010 R Schlicht Es darf vertrieben und oder modifiziert werden unter den Bedingungen der BTEX Project Public License entweder Version 1 3c dieser Lizenz oder alternativ jeder sp teren Version Das Projekt hat den LPPL Wartungsstatus author maintained Zur Zeit stellt dieses Paket Protrusionseinstellungen f r Computer Modern Roman Palatino Times URW Garamond Adobe Garamond und Minion Bitstream Charter und Letter Gothic die AMS Symbole und Euler Fonts verschiedene Eurosymbol Schriftarten sowie einige allgemeine Einstellungen f r unbekannte Schriftarten siehe Tabelle 3 auf Seite 23 bereit Beisteuerungen sind gern gesehen INHALTSVERZEICHNIS 2 Inhaltsverzeichnis 1 Mikrotypographie mit pdfTEX 4 2 Loslegen 6 3 Optionen 6 3 1 Die mikro typographischen Features anschalten 6 3 2 Zeiehenvorspr nge au a 4G x x xe wa de WO Ee s T 3 9 Fontexpansion ea a s yy yraa een 8 34 Tracking Letterspacing 9 3 5 Verschiedene Optionen 2 6 6886664444 44 4 9 3 6 Changing options later s zu 2o o a aa de nen 10 4 Fonts fiir Mikrotypographie ausw hlen 11 5 Micro Feinabstimmung 13 Dl Character Protr sion asses ralu ece en wu 3 S XS S 14 5 2 Pohtexp nsion 3135232 cecoe 444 ow Xv XE a N d 16 5 3 Tracking i da ner SH Re PAE ww 403 X vox X HEE r 17 54 Zus tzli
209. ix that is F is not permitted def MT Cis number 1 2 3 relaxt ifx relax 3 relax else M M M MM MM MM H M M MG M MG G G G A gt wm N N N N gt OO A 00 op SF FB VS gm Kai I on 7 gt 2 2 gt 2 z 2 2 2 ho B WD 5 E gt E e P i i 8 u gt gt gt gt E 5 E R M MO OP NO PO M GM PS G m MT is active M M M M M H M M M M NONNN WN LA KA LA LA LA Ka MT undef ined char IMPLEMENTATION Font setup 90 ifx relax 2 relax else MT noresttrue if 1 relax def x uppercase edef MT char number 1 2 3 x debug MT dinfo nl 3 gt a hexadecimal number MT char else if 1 relax def MT char number 1 2 3 debug MT dinfo nl 3 gt an octal number MT chare else MT ifint 1 2 3 7 def MT char number 1 2 3 debug MT dinfo nl 3 gt a decimal number MT char MT norestfalse fi fi ifnum MT char gt cclv MT warn number t oo large noexpand 1 noexpand 2 noexpand 3 let MT char m ne fi fi fi wy Expand an active character This was completely broken in v1 7 and only worked by chance before We set display protect to translate e g A into A that is to whatever it is defined in the inputenc encoding file Unfortunately the older inputenc definitions prefer the protected generic variants e g copyright instead of textcopyright which o
210. keines hervorspringen ist der Standardwert f r Expansion 1000 was bedeutet dass alle Zeichen um denselben Betrag expandiert werden Optionen name load preset inputenc context Analog zu SetProtrusion kann dieses optionale Argument genutzt werden um einer Liste einen Namen zuzuweisen eine andere Liste zu laden alle Expansionsfaktoren voreinzustellen die Eingabekodie rung festzulegen oder den Kontext der Liste zu bestimmen Expansionskontexte sind nur m glich mit pdfTEX Version 1 40 4 oder neuer auto stretch shrink step Diese Schl ssel k nnen genutzt werden um die globalen Einstellungen der Paketoptionen zu berschreiben siehe Abschnitt 3 3 Wenn Sie keine der Optionen stretch shrink und step angeben wird ihr jeweiliger globaler Wert genutzt es findet also keine Berechnung statt Ein praktisches Beispiel Nehmen wir an wir haben einen Paragraphen der eine Witwe enth lt die man einfach h tte verhindern k nnen indem man den Font ein wenig mehr geschrumpft h tte In Verbindung mit der context Option siehe Abschnitt 6 f r weitere Details k nnte man mit diesem speziellen Paragraphen mehr Expansion erlauben SetExpansion context sloppy stretch 30 shrink 60 step 5 J 5 3 SetTracking MICRO FEINABSTIMMUNG Tracking 17 encoding 0T1 T1 TS1 d J 4 END PREAMBLE microtypecontext expansion sloppy Dieser Paragraph enth lt eine unn tige Witwe Diese Methode Kontext
211. l occur inside a group MT gdef n MTCpr c MTCpr c name 3 MT end catcodes T SetExpansion only differs in that it allows some extra options stretch shrink step auto def SetExpansion MT begin catcodes MT SetExpansion newcommand MT SetExpansion 3 D A let MT extra context Cempty MT set named keys MT ex c 1 MT ifdefined n T MT ex c MTGex cOname factor ifnum csname MT ex c MT ex c name factor endcsname gt m MT warning nl Expansion factor number nameuse MT ex c MT ex c name factor too large in list MessageBreak MT ex c name Setting it to the maximum of 1000 MT glet nc MT ex c MT ex c name factor m fi 2891 2892 2893 2894 2895 2896 2897 2898 SetTracking 2899 2900 2901 2902 MT SetTracking c NNN WN L 903 4 905 906 907 2908 2909 29 29 291 29 29 29 29 29 SetExtraSpacing M M M M MT SetExtraSpacing MT sp c name292 N N far 0 1 ra WN SI 8 9 2 MT extra context2923 292 MT permutelist_ d 2925 2926 2927 2928 2929 2930 2931 SetExtrakerning 2932 2933 2934 2935 MT SetExtraKerning MT kn c name2936 MT extra context293 MT permutelist_ 2938 2939 IMPLEMENTATION Configuration 107 yh debug MT dinfo i creating expansion list MT ex c name def MT permutelist ex c setkeys MT cfg 2 MT permute MT gdef n MTCex c MTQex c name
212. laden Sie das Paket mit usepackage innerhalb beginpackages endpackages Umgebung f r miniltx welches die Paketoptionen nicht unterst tzt einfach mit input letterspace sty laden Deaktivieren von Ligaturen Bindungen characters set of fonts Beim vollst ndigen Deaktivieren aller Liganten einer Schriftart welches auch Ker ning f r diese Schriftart ausschaltet senkt lowers absichtlich die mikro typografische Qualit t des Textes anstatt diese zu erh hen dies ist speziell f r Schreibmaschine Schriftarten n tzlich so dass z B in einer T1 kodierten Schriftart texttt nat rlich als nicht als gedruckt wird DisableLigatures kann dazu verwen det werden um auf gew hnlichem Weg eine Reihe von Schriftarten zu spezifizieren f r welche Liganten deaktiviert sein sollen z B f r die Schriebmaschinenschrift kodiert in T1 DisableLigaturesfencoding T1 family tt Es ist auch m glich nur ganz bestimmt Liganten zu deaktivieren Das optionale Argument kann eine durch Komma getrennte Liste von Zeichen enthalten f r die der Ligantenmechanismus unterbunden werden soll DisableLigatures encoding T1 inhibit and but not fi etc HINWEISE UND WARNUNGEN 27 Dabei ist der Buchstabe mit dem der Ligant beginnt von Bedeutung Dieser Befehl kann nur in der Pr ampel verwendet werden und auch nur einmal Der Befehl fortert pdfTEX 1 30 oder eine aktuellere Versio
213. le only once MT in clist 1 MT file list ifMT inlist else Don t forget that because reading the files takes place inside a group all commands that may be used there have to be defined globally MT begin catcodes let MT begin catcodes relax let MT end catcodes relax InputIfFileExists mt 1 cfg edef MT curr file mt 1 cfg MT vinfo Loading configuration file MT curr file MT xadd MT file list 1 HA MT get basefamily 1 empty empty empty nil MT exp one n MT in clist tempa MT file list ifMT inlist MT xadd MT file list 1 else InputIfFileExists mt tempa cfg edef MT curr file mt tempa cfg MT vinfo Loading configuration file MT curr file MT xadd MT file list tempa 1 H MT vinfo No configuration file mt 1 cfg MT xadd MT file list 1 th fi yh endgroup fi T We have to make sure that all characters have the correct category code Especially new lines and spaces should be ignored since files might be loaded in the middle of the document This is basically nfss catcodes from the IATEX kernel I ve added amp in tabulars french _ and Turkish babel OK now all printable characters up to 127 are other We hope that letters are always letters and numbers other listings makes them active see section 14 1 5 We leave at catcode 7 so that stuff like f remains possible IMPLEMENTATION Font setup 85 7
214. lett im Speicher Nach diesem gro en Sprung in der Anwendbarkeit stoppte die Entwicklung nicht MIKROTYPOGRAPHIE MIT PDFTEX 5 Im Gegenteil pdfIEX wurde mit immer mehr besonderen Merkmalen ausgestattet Version 1 30 f hrte die M glichkeit ein alle Ligaturen auszuschalten Version 1 40 brachte ein robustes Letter spacing Kommando die M glichkeit zus tzliches Zeichen Kerning zu spezifizieren und die Justierung von Zeichenabst nden innerhalb W rter Robustes und per Bindestrich trennbares Letter spacing Tracking war immer extrem schwierig in TEXzu realisieren Obwohl das soul Paket gro e M hen un ternahm um es m glich zu machen konnte es trotzdem weiterhin in bestimmten Situationen scheitern allein das Tracking einer Schriftart f r das ganze Dokument blieb unm glich Wendet man die neue Erweiterung von pdfT Xan stellt dies nicht l nger ein Problem dar Das microtype Paket stellt die M glichkeit bereit das Tracking anpassbarer Fontsets zu ndern z B alle kleinen Kapit lchen Es f hrt au erdem die zwei neuen Kommandos textls und lsstyle f r ad hoc Letter spacing ein welche wie normale Textkommandos benutzt werden k nnen Beachten Sie dass Letter spacing nur im PDF Modus funktioniert Zus tzliches kerning f r Zeichen einer Schriftart einzustellen ist besonders n tz liche f r Sprachen deren typographische Tradition es erfordert bestimmte Zeichen durch ein Leerzeichen abzutrennen Es ist zum Beispiel blich
215. loaded This is undocumented since I would like to learn about the cases where this is necessary The only problem with the new deferred setup I can think of is when a box is being constructed inside the preamble and this box contains a font that is not loaded before the box is being used MT def bool opt defersetup IMPLEMENTATION Package options 120 3473 csname if tempa endcsname else 3474 AtEndOfPackaget 3475 MT setup 3476 let MT setup empty 3477 let MT addto setup 0firstofone 3478 Y 3479 Mi 3480 copyfonts will copy all fonts before setting them up This allows protrusion and expansion with different parameters This options is also undocumented in the hope that we can always find out automatically whether it s required 3481 MT requires pdftex7 3482 lua 3483 MT requires luatex 3484 MT def bool opt copyfonts 3485 csname if tempa endcsname 3486 MT error The copyfonts option doesn t work with luatex 3487 Use pdftex instead 3488 fi 3489 3490 TL 3491 lua 3492 MT def bool opt copyfonts 3493 csname if tempa endcsname 3494 MT glet MT copy f ont MT copy font 3495 else 3496 MT glet MT copy font relax 3497 fi 3498 3499 lua T 3500 H 3501 MT def bool opt copyfonts 3502 csname if tempa endcsname 3503 MT error The pdftex version you are using is too old MessageBreak 3504 to use the copyfonts option Upgrade pdftex
216. ls encoding OMS family cmsy series m b shape n A 150 50 mathcal C lt L 100 D 50 F 50 150 6280 I t 100 6281 J 100 150 6282 K lt L 100 L 100 M 50 50 6285 N 50 100 6286 P 1 50 6287 Q L 50 6288 R Sot 6289 T 50 150 6290 v 50 50 6291 w 4 _ 50 6292 X 100 100 6293 Y 100 T3 6294 Z 100 150 6295 00 300 300 6296 01 1 700 Ncdot cdotp 6297 02 150 250 Ntimes 6298 03 150 250 Nast 6299 04 200 300 div 6300 05 150 250 diamond 6301 06 200 200 pm 6302 07 200 200 mp 6303 08 100 100 oplus 6304 09 100 100 ominus 6305 OA 100 100 otimes 6306 OB 100 100 oslash 6307 OC 100 100 odot 6308 OD 100 100 bigcire 6309 OE 100 100 circ 6310 OF 100 100 bullet 6311 10 100 100 asymp 6312 11 100 100 equiv 6313 12 200 100 subseteq 6314 13 100 200 supseteq 6315 14 200 100 leq 6316 15 100 200 geq 6317 16 200 100 preceq 6318 17 100 200 succeq 6319 18 200 200 sim 6320 19 150 150 approx 6321 1A 200 100 subset 6322 1B 100 200 supset 332 1C 200 100 M1 6324 1D 100 200 gg 6325 1E 300 100 prec 6326 1F 100 300 succ 6327 20 100 200 leftarrow 6328 21
217. ls Sie dies andererseits nicht befriedigt sei es aus theoretischen oder praktischen Gr nden wird Sie dieses Handbuch auf den Weg zu den erw nschten Ergebnissen und folgenden Meilensteinen bringen Das entsprechende mikrotypograpische Feature einschalten entweder mittels der respektiven package Option oder mittels des microtypesetup Kommandos Ab schnitt 3 W hlen Sie die Schriftarten aus auf welche dieses Feature angwendet werden soll indem Sie Font Sets deklarieren und aktivieren Einige Sets sind vorerstellt und k nnen direkt in den Paketoptionen aktiviert werden Abschnitt 4 Feinabstimmen der mikrotypographischen Einstellungen an den Schriftarten oder Sets von Schriftarten Abschnitt 5 Falls sie der Typ sind der immer weiter marschiert werden Sie sicher an der M glichkeit zu Context abh ngigen Einstellungen interessiert sein Abschnitt 6 Wir ermutigen Sie sogar den Pfad typographischer Tugend zu verlassen und ein paar Schafe zu stehlen section 7 oder auf andere Weise einzudringen section 8 Sollten sich Ihnen ein Hindernis auftun folgen Sie den Tipps und Warnungen Abschnitt 9 Optionen Wie viele andere BT X Pakete auch akzeptiert das microtype Paket Optionen ber die bekannte Schl ssel Wert Syntax Im Folgenden finden sie eine Beschreibung aller Schl ssel und ihrer m glichen Werte true kann ausgelassen werden multiple Werte falls erlaubt m ssen eingeklammert werden der Standardwe
218. me MTOfont orig fi global MT exp two c pdf copyfont MT f ont copy font name debug MT dinfoi creating new copy MT font copy Since it s a new font we have to remove it from the context lists MT map clist c MT active features 7 MT exp cs ifx MT nameuse MT abbrO 1 relax else def tempa 1 MT exp cs MT mapOtlist c MTO 1 doc contexts MT rem from list fi th fi MT rem from list MT split name MT encoding MT family lt MT series MT shape MT size MT familyalias 900 901 902 903 904 90 906 907 908 909 910 aor WN ra 7 8 9 IMPLEMENTATION Font setup 58 MT exp twoG c let MTOfont MT font copy We only need the font identifier for letterspacing let font name MT font copy But we have to properly substitute the font after we re done aftergroup let aftergroup font name aftergroup MT font copy T def MT rem from list 1 MT exp cs ifx MT Gtempa G 1font list relax else expandafter MT exp one n expandafter MT rem from clist expandafter MT font csname MT tempa 1font list endcsname fi D relax Here s the promised dirty trick for users of older pdf TEX versions which works around the problem that the use of the same font with different expansion para meters is prohibited If you do not want to create a clone of the font setup this would require duplicating the tfm vf files under a new name and writing new fd files and map entries
219. ment macro 1 by one Saves using up too many counters The e TEX way MT increment is slightly faster 646 newcount MT count 647 def MT increment 1 648 X edef 1 number numexpr 1 1 relax 649 H MT count 1 relax 650 Q advance MT count ne MT scale MT abbr pr MT abbr ex MT abbr pr c MT abbr ex c MT abbr pr inh MT abbr ex inh MT abbr n1 MT abbr sp MT abbr sp c MT abbr sp inh MT abbr kn MT abbr kn c MT abbr kn inh MT abbrOtr MTorbin gabbrgties MT rbba expansion MT rbba spacing MT rbba kerning MT rbba tracking MT features MT features long MT is feature 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 IMPLEMENTATION Preliminaries 51 51 Q edef i number MT count Multiply and divide a counter If we are using e IEX we will use its numexpr primitive This has the advantage that it is less likely to run into arithmetic overflow The result of the division will be rounded instead of truncated Therefore we ll get a different more accurate result in about half of the cases def MT scale 1 2 3 Q multiply 1 2 relax ifnum 3 z alos 6 1 numexpr 1 2 relax else 58 X 1 numexpr 1 2 3 relax ken divide 1 3 relax fi L T Some abbreviations Thus we can have short command names but full length log output
220. mily pmnx 5861 shape scit si 5862 5863 1 100 150 5864 5865 5866 SetProtrusion 5867 name pmnx scit T1 5868 load pmnj scit T1 5869 encoding T1 LY1 5870 family pmnx 5871 shape scit si T 5872 5873 1 100 150 5874 5875 5876 pmn 15 8 5 Text companion Finally the TS1 encoding Still quite incomplete for Times and especially Palatino Anybody 5877 SetProtrusion 5878 m t name textcomp 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 LA K LA KA LA LA Do GG Go HM ra 5934 5935 5936 5937 5938 CONFIGURATION FILES Character protrusion 169 bch name blg L name cmr name pad name pmn name ppl L name ptm name ugm name 7 bch textcomp 7 blg textcomp 7 cmr textcomp 7 pad textcomp 7 pmn textcomp 7 ppl textcomp ptm textcomp ugm textcomp m t encoding TS1 T encoding TS1 bch family bch blg family blg T cmr family cmr T pad family pad padx padj pmn family pmnx pmnj ppl family ppl pplx pplj ptm family ptm ptmx ptmj ugm family ugm blg textquotestraightbase 400 500 cmr textquotestraightbase 300 300 pad pmn textquotestraightbase 400 400 blg textquotestraightdblbase 300 400 cmr pmn textquotestraigh
221. mpel hinzuf gen Das h tte den Effekt dass die Abstandseinstellungen des franz sischen Kontextes f r das Dokument bernommen w rden Sollten Teile des Dokuments in Englisch sein k nnten Sie schreiben textmicrotypecontext kerning English text um den Kontext zur ckzusetzen so dass die Interpunktion in diesen Teilen kein extra Zeichenabstand erhalten Anstatt diese Befehle manuell zu Ihrem Dokument hinzuzuf gen k nnen Sie microtype auch mit der Babel Funktion laden siehe Abteilung 3 5 Die aktu elle Sprache wird dann automatisch erkannt und der Kontext dementsprechend angepasst DeclareMicrotypeBabelHook list of babel languages context list beschrieben im Implementationsteil Abschnitt 14 4 3 T textls textls lsstyle ERNEUTE BETRACHTUNG DER FUNKTION LETTERSPACING 25 Nat rlich kennt microtype nicht jede typografische Besonderheit jeder einzelen Sprache Dieser Befehl ist ein Mittel um zu lehren wie man den Kontext anpassen kann wenn eine bestimmte Sprache ausgew hlt ist Die Hauptkonfigurationsdatei enth lt unter anderen die folgende Deklaration DeclareMicrotypeBabelHook french francais acadian canadien kerning french spacing Folglich wann immer Sie auf franz sische Sprache umschalten wird die Abstand seinstellung im Kontext auf franz sisch ge ndert und der Abstandskontext zur chgesetzt Dieser Effekt greift nur dann wenn das Paket mit der babel Option geladen
222. n Hinweise und Warnungen Verwenden Sie Einstellungen die zu Ihrer Schriftart passen Obwohl die Stan dardeinstellungen akzeptable Ergebnisse f r die meisten Schriften liefern sollten kann es sein das die spezielle Schriftart welche Sie gerade verwenden verschiedene Schriftformen hat so dass mehr oder weniger Hervorhebung oder Vergr erun gen erforderlich sind Insbesondere kursive Schriftformen k nnen sich deutlich in unterschiedlichen Schriftarten unterscheiden deshalb habe Ich mich dageben entscheiden Standarthervorhebungseinstellungen f r diese anzubieten Die Datei test microtype tex kann eine Hilfe beim anpassen der Hervorhebungseinstellun gen f r eine Schriftart sein Verwenden Sie keinen zu gro en Wert f r die Vergr erung Font expansion Schriftartenvergr erung ist eine Funktion welche die typographische Quali t t des Dokuments verbessern soll indem sie eine gleichm ige Graustufe des Textblocks erzeugt und potenziell die Verringerung der Zahl der erforderlichen Silbentrennungen Wenn die Erweiterung oder Verkleinerung einer Schrift zu gro oder zu klein wird so wird der Effekt ins Gegenteil gewandelt Die Vergr erung der Schriftarten um mehr als 2 d h der Wert der Einstellung Strecken gr er als 20 ist erfordert ein geschultes Auge Wenn Sie das Gl ck haben und im Be sitz von mehreren Kopien einer multiplen Master Schriftart sind k nnen Sie die Vergr erungsgrenze bis auf 4 erh hen Ver
223. n auch den Font cmr ausprobiert Tats chlich werden Sie eben diese Zeile mit einigen anderen in der Standardkonfigurationsdatei vorfinden Fontname In wenigen F llen kann es n tig sein eine Fontkonfigurationsdatei manuell zu laden z B aus einer anderen Konfigurationsdatei heraus oder in der Lage zu sein in KONTEXT SENSITIVE EINSTELLUNGEN 23 Tabelle 3 Fonts mit zugeschnitten Hervorragungseinstellungen Fontfamilie NFSS code Features Kodierungen Formen Generic OTI T1 T2A LY1 QX TS1 n it sl sc Computer Modern Roman cmr OT1 OT4 T1 T2A T5 LY1 TS1 n it sl sc Bitstream Charter bch OT1 T1 T5 LY1 TS1 n it s1 sc Adobe Garamond pad padx padj OTI T1 LY1 TS1 n it sl sc URW Garamond ugm OT1 T1 TS1 n it Bitstream Letter Gothic b1g OT1 T1 TS1 n it Adobe Minion pmnx pmnj OT1 T1 T2A LY1 TS1 n it sl sc si Palatino ppl pplx pp1j OT1 OT4 T1 LY1 TS1 n it sl sc Times ptm ptmx ptmj OT1 OT4 T1 LY1 QX TS1 n it sl sc Computer Modern math cmsy cmm OML OMS n it AMS symbols msa msb U n Euler eur eus eu U n Euro symbols Adobe ITC marvosym U OT1 n it a Unvollst ndig b Alias Latin Modern 1mr ae aer zefonts zer eco cmor hfoldsty hfor c Alias mathdesign Charter mdbch MicroPress s chmath chr d Einstellungen vererbt von kursiver Form e Alias mathdesign URW Garamond mdugm f Alias ul
224. n 956 MT dofalse 957 expandafter MT clist break 958 fi 959 H If no limitations have been specified i e the list for a font attribute has not been MT checklist family MT checklist size MT checklist font 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 000 001 002 003 004 005 IMPLEMENTATION Font setup 60 defined at all the font should be set up debug MT dinfo list 2 1 Also test for the alias font if the original font is not in the list def MT checklist family 1 debug MT ifdefined n T debug MT ifdefined n TF MTOQ 1list family tempa MT exp two n MT in clist MT family csname MT 1list family tempa endcsname ifMT inlist debug MT dinfo list 1 family in MT dotrue else debug MT dinfo list 1 family not in MT dofalse ifx MT familyalias empty else MT exp two n MT in clist MT familyalias csname MT 1list family tempa endcsname ifMT inlist debug MT dinfo list 1 family alias in MT dotrue debug else MT dinfo list 1 family alias not in fi fi fi ifMT do else expandafter MT clist break fi yh debug MT dinfo list 1 family D Test whether font size is in list of size ranges def MT checklist size 1 debug MT ifdefined n T debug MT ifde
225. n L A MT get listname MT feat inh MT ifdefined c TF MT listname MT edef n MT MT feat inh name MT listname 7 debug MT dinfo nl 1i Using nameuse MT abbr MT feat inheritance list debug MT listname 79 MT let cn tempc MT MT feat inh MT listname 1 e e LA KA K KA LA LA sed ad 2 deed 7 N If the list is Cempty it has already been parsed IMPLEMENTATION Font setup 88 2180 ifx tempc empty else 2181 debug MT dinfo nl i parsing inheritance list The group is only required in case an input encoding is given 2182 begingroup 2183 edef MT curr list name inheritance list noexpand MessageBreak MT listname Hi 2184 MT set inputenc inh 2185 expandafter MT inh do tempc relax 2186 MT glet nc MT MT feat inh MT listname empty 2187 endgroup 2188 fi 2189 LI 2190 MT let nc MT MT feat inh name undefined 2191 4 2192 14 2 8 Translating characters into slots MT get slot MT char Get the slot number of the character in the current encoding There are lots of possibilities how a character may be specified in the configuration files which makes translating them into slot numbers quite expensive Also we want to have this as robust as possible so that the user does not have to solve a sphinx s riddle if anything goes wrong The character is in tempa we want its slot number in MT char MT char 2193 def MT get slot 2194 escapec
226. n Franz sisch in der Hauptkonfigurationsdatei finden SetExtraKerning name french default context french unit space encoding 0T1 T1 LY1 1000 7 fontdimen2 500 4 thinspace 500 500 Was ist das Ergebnis dieser Einstellungen Wenn sie aktiv sind wie im vorliegenden Paragraphen wird ein schmales Leerzeichen vor jedem Fragezeichen Ausrufezei chen und Semikolon eingefiigt ein normales Leerzeichen vorm Doppelpunkt In Abschnitt 6 wird beschrieben wie diese Einstellungen aktiviert werden Dieser Paragraph wurde eingegeben wie folgt begin microtypecontext kerning french Was ist das Ergebnis dieser Einstellungen Wenn sie aktiv sind wie im vorliegenden Paragraphen wird ein schmales Leerzeichen vor jedem Fragezeichen Ausrufezeichen und Semikolon eingefiigt ein normales Leerzeichen vorm Doppelpunkt In Abschnitt ref sec context wird beschrieben wie diese Einstellungen aktiviert werden Dieser Paragraph wurde eingegeben wie folgt end microtypecontext 5 5 Wortzwischenr ume SetExtraSpacing Optionen Font Set Spacing Einstellungen Dieser Befehl erlaubt Ihnen die Wortzwischenr ume fein abzustimmen auch bekannt als glue Eine vorausgehende Bemerkung dar ber was ein Zwischenraum ist k nnte angebracht sein zwischen zwei W rtern f gt TEX sogenannten glue ein welcher von drei Parametern charakterisiert wird der normale Abstan
227. n sodass Sie in der Lage sind es aus einer anderen Liste zu laden load Sie k nnen eine andere Liste laden vorausgesetzt dass Sie dieser zuvor einen Namen zugewiesen haben bevor die aktuelle Liste geladen wird wodurch die Fonts die Werte der geladenen Liste erben Dadurch kann die Konfiguration betr chtlich erleichtert werden Sie k nnen zum Beispiel eine Standardliste f r eine Schriftarte erstllen Einstellungen f r andere Formen oder Serien k nnen diese Einstellungen laden sie erweitern und berschrei ben da der jeweils letzte Wert Vorrang hat Font Einstellungen werden rekursiv geladen Die folgenden Optionen werden alle geladenen Listen beeinflussen factor Diese Option kann genutzt werden um alle Protrusionsfaktoren der Liste zu beeinflussen was alle globalen factor Einstellungen berschreibt siehe Abschnitt 3 2 Wollen sie zum Beispiel dass Fonts mit gr eren Abma en weniger hervorragen k nnten Sie die normalen Listen laden allerdings k nnten Sie kleinere Faktoren darauf anwenden SetProtrusion factor 700 load cmr T1 encoding T1 family cmr size large unit Standardm ig sind die Protrusionsfaktoren relativ zur Breite des jewei ligen Zeichens Die unit Option kann genutzt werden um dieses Verhalten zu berschreiben sodass microtype diese Werte als Tausendstel der angegeben Werte deutet Gibt man z B die Anweisung unit 1em h tte dies den Effekt dass ein Wert von 50 nu
228. n darin resultieren w rde dass ein ein Zeichen um 5 eines em des Fonts hervorragen w rde und somit die interne Vermessung von pdfTRX s lpcode und rpcode primitives simuliert Das normale Verhalten kann mittels unit character wiederhergestellt werden preset Setzt die Protrusions Codes aller Zeichen auf die angegebenen Werte left right u U skaliert mit einem factor Eine unit Einstellung wird nur ber cksichtigt wenn sie nicht character ist inputenc W hlt eine Inputkodierung aus die auf die Liste angewendet werden soll unabh ngig von der Eingabekodierung des Dokuments selbst Sie k nnen jede Kodierung angeben die per inputenc geladen werden k nnte also u a ansinew koi8 r utf8 context Die Bandbreite der Liste kann auf einen gewissen Kontext limitiert werden Schauen Sie in Abschnitt 6 f r ein Anwendungsbeispiel nach Die unit Option kann auch global an das Paket geleitet werden siehe Abschnitt 3 2 Aller dings werden alle vorliegenden Einstellungen unter der Annahme dass die Werte relativ zur Zeichenbreite sind erstellt Deshalb sollten Sie es nur ndern wenn Sie sich sicher sind dass die Standardeinstellungen im Dokument nicht verwendet werden 5 2 SetExpansion MICRO FEINABSTIMMUNG Fontexpansion 16 Fontexpansion options set of fonts expansion settings T Standardm ig k nnen alle Zeichen eines Fonts um denselben Betrag gestrecht oder geschrumpft werden Man kann aber
229. n declared in the main configuration file we use the empty non existent set and issue a warning MT gdef n MTC 10setname 0 MT warning nl No nameuse MTQabbr 1 set chosen no default set declared MessageBreak Using empty set yh yh T 14 4 3 Microtype Hook 14 4 4 microtypesetup MT def ine optionX 3605 3606 3607 3608 3609 36 36 36 36 36 36 36 36 36 0 1 2 3 1 6 7 8 3619 362 3621 20 IMPLEMENTATION Package options 123 Hook for other packages This hook may be used by font package authors e g to declare alias fonts If it is defined it will be executed here i e after the main configuration file has been loaded and before the package options are evaluated This hook was needed in versions prior to 1 9a to overcome the situation that 1 the microtype package should be loaded after all font defaults have been set up hence using Cifpackageloaded in the font package was not viable and 2 checking AtBeginDocument could be too late since fonts might already have been loaded and consequently set up in the preamble With the new deferred setup one could live without this command however it remains here since it s simpler than testing whether the package was loaded both in the preamble as well as at the beginning of the document which is what one would have to do Package authors should check whether the command is already defined so that existing
230. n erstellt muss Fontexpansion explizit aktiviert werden Weder Letterspacing noch automatische Fontexpansion werden funktionieren da die postprocessing Treiber dvips dvipdfm etc sowie die DVI Betrachter nicht in der Lage sind die Fonts on the fly zu generieren true false false Falls die draft Option an das Paket geleitet wird werden alle mikro typographischen Erweiterungen ausgeschaltet was zu unterschiedlichen Zeilen und somit Seitenum br chen f hren kann Die draft und final Optionen k nnen au erdem von den Optionen der Klasse geerbt werden nat rlich kann man diese mit den Optionen der Pakete berschreiben Falls man z B die Klassenoption draft verwendet um jegliche bervollen Boxen anzuzeigen sollte man microtype mit der final Option laden true false errors silent false Informationen bzgl der Einstellungen an jeglichen Fonts werden in die Log Datei geschrieben sofern man die verbose Option aktiviert Wenn microtype auf ein nicht fatales Problem trifft z B ein unbekanntes Zeichen in den Einstellungen oder nicht existente Einstellungen gibt es standardm ig nur eine Warnung aus und versucht weiterzumachen L dt man das Paket mit verbose errors werden alle Warnungen in Fehler verwandelt sodass man sicher sein kann dass kein Problem unerkannt bleibt Falls man andererseits allen Warnungen nachgegangen ist und sich entscheidet diese zu ignorieren kann man microtype mittels verbose silent zum Schweigen bringen
231. n f r dezimale Notation angef hrt von f r hexadezimal mit f r oktal z B die fl Ligatur in T1 Kodierung 029 1D 35 8 bit und sogar UTF 8 Zeichen k nnen direkt oder in EIIEX s traditioneller 7 bit Notation eingegeben werden sowohl A als auch A sind zul ssig vorausgesetzt dass das Zeichen sowohl in der Input als auch der Fontkodierung deklariert wird Sie haben ebenfalls die M glichkeit Zeichenlisten anzugeben f r welche die Einstellungen bernommen werden sollen siehe Abschnitt 5 6 Die Protrusionsfaktoren weisen einem Zeichen den Betrag zu um den sie zum linken Rand hin erster Wert bzw rechten Rand hin zweiter Wert hervorragen sollen Standardm ig sind die Werte relativ zur Breite des Zeichens zu verstehen sodass ein Wert von 1000 bedeutet dass das Zeichen vollst ndig zwischen die R nder gelegt werden sollte w hrend es z B bei einem Wert von 50 um 5 seiner Breite hervorragen w rde Negative Werte sind erlaubt ebenso Zahlen gr er als 1000 effektiv jedoch nicht mehr als Lem der Schriftart Sie k nnen jede der beiden Zahlen auslassen wenn Sie nicht wollen dass das jeweilige Zeichen zu dieser Seite hervorragen sollte Das abtrennende Komma jedoch d rfen Sie nicht auslassen F r alle Interessierten stellt Tabelle 4 auf Seite 86 die exakte Reihenfolge dar MICRO FEINABSTIMMUNG Character Protrusion 15 Optionen name Sie k nnen den Protrusionseinstellungen einen Namen zuweise
232. n file will be loaded before processing the package options However the config option must of course be evaluated beforehand We also have to define a no op for the regular option processing later def ine key MT config relax def MT get config 1config 2 3 Qnil MT ifempty 2 def MT config file MTOMT cfg def MT config file 2 cfg T expandafter expandafter expandafter MT get config csname opt currname currext endcsname config nil Load the file IfFileExists MT config file MT info nl Loading configuration file MT config file MT begin catcodes let MT begin catcodes relax let MT end catcodes relax let MT curr file MT config file input MT config file endgroup MT warningen1 Could not find configuration file MT config file MessageBreak This will almost certainly cause undesired results MessageBreak Please fix your installation T We have to make sure that font sets are active If the user didn t activate any we use those sets declared by DeclareMicrotypeSetDefault this is done at the end of the preamble def MT check active set 11 MT ifdef ined n TF MTO 1 setname 7 MT info nl Using nameuse MT abbrO 1 set nameuse MTO 1 setname H MT ifdefined n TF MT default 0 1 0set MT glet nn MTC 1 setname MT defaultC 10set MT info nl Using default nameuse MT abbr 1 set nameuse MTC 1Qsetname i0 If no default font set has bee
233. n macht die Schreibmaschine Schriftart hervorzuheben wenn Sie im laufenden Text erscheint wie zum Beispiel in diesem Handbuch ist dies wahrscheinlich nicht wiinschenswert innerhalb der verbatim Umgebung Jedoch hat microtype kein Wissen tiber den Kontext in dem eine Schriftart steht dies wird allein durch die Bestimmung der Attribute entschieden Deshalb miissen Sie sich um die Deaktivie rung der Hervorhebung in der verbatim Umgebung selbst k mmern d h wenn Sie Hervorhebungen in der Schreibmaschinenschrift nicht durch ausw hlen eines ande ren Schriftsatzes insgesamt deaktivieren wollen Obwohl der microtypesetup Befehl nat rlich f r F lle wie diesen entwickelt wurde k nnten Sie es anstrengend finden ihn jedesmal zu wiederholen wenn Sie ihn in der verbatim Umgebung fters nutzen Die folgende Zeile die der Pr ampel hinzugef gt wird h tte den selben Effekt g addto macro verbatim microtypesetupfactivate false Falls sie das fancyvrb oder das listings Paket verwenden ist dies nicht notwenig da diese so konzipiert sind das Sie in der entsprechenden Umgebung die Hervorhebung in jedem Fall hemmen Einstellungen f r Griechisch Thail ndisch Amerikanisch usw Kodierungen sind bis jetzt noch nicht inbegriffen Die Standarts tze von Schriftarten f r welche die mikro typrografischen Funktionen aktiviert werden siehe Tabelle 2 enthalten nur die Kodierungen f r die auch Konfigurationen existieren Deshalb wenn Sie ei
234. name relax else csname CJK cmap f family CJK plane endcsname fi else CJK addcmap CJK plane fi else xdef font name csname curr fontshape f size CJK plane endcsname fi T def MT orig pickupfont expandafter ifx font name relax define newfont fi yh Check whether pickup font is defined as expected The warning issued by CheckCommand would be a bit too generic ifx pickup font MT orig pickupfont else MT warningen1 Command string pickup font space is not defined as expected MessageBreak Patching it anyway Some things may break 394 package MessageBreak Double check whether micro typography is indeed MessageBreak applied to the document MessageBreak Hint Turn on verbose mode package Y Mi Then we append our stuff Everything is done inside a group g addt o macro pickup font begingroup MT pickupfont do subst correction add accent MT orig add accent 2402 2403 2404 2405 2406 2407 2408 bh A K h2 h2 M K b2 K K K K K b ND NNN M M M M MM MM M M 09 LA NNN Wn ra NNW Sa IMPLEMENTATION Font setup 95 If the trace package is loaded we turn off tracing of microtype s setup which is extremely noisy MTOQwith package T trace g addto macro pickup font conditionally traceoff g addt o macro pickup font 7 escapechar m ne package debug global MT inannottrue debug MT glet MT pdf annot empty debug
235. nd in per normalsize footnotesize small oder largeaufgerufenen Gr en hervorragen Mathematische Schriftarten ande rerseits werden das nicht da sie anderen Kodierungen angeh ren gleiches gilt f r fettgedruckte oder gro e Schriftarten etc Falls eine Attributsliste leer ist oder fehlt wie das shape Attribut im obigen Beispiel f hrt dies zu keiner Einschr nkung sprich es ist quivalent dazu alle m glichen Werte f r dieses Attribut einzusetzen Deswegen ist das vordefinierte Set alltext welches wie folgt deklariert ist DeclareMicrotypeSet alltext encoding 0T1 T1 T2A LY1 0T4 QX T5 TS1 T viel weniger restriktiv Die einzige Bedingung lautet dass die Kodierung stimmen muss UseMicrotypeSet DeclareMicrotypeSetDefault FONTS FUR MIKROTYPOGRAPHIE AUSWAHLEN 12 Folgt einem Wert ein Asterisk wie rm und sf im ersten Beispiel kennzeich net dieser keinen NFSS Code sondern wird in das value default des Dokuments bersetzt z B rmdefault Ein einzelner Asterisk bedeutet attribute default z B encodingdefault gleicherma en normalsize f r die Gr enachse Gr en k nnen entweder als Dimension angegeben werden 10 oder 10pt oder als Gr enwahlkommando ohne den Backslash Sie k nnen sogar Bereiche z B small Large w hlen w hrend die untere Grenze im Bereich enthalten ist gilt dies nicht f r die obere Grenze Deshalb w rde 12 16 beis
236. ne andere Kodierung verwenden z B LGR T2B etc wird microtype nicht auf diese Schriftarten anwendbar sein Sie m ssen einen neuen Schriftsatz einschlie lich der Kodierung definieren und aktivieren um Sie benutzen zu k nnen weitere Details siehe Abschnitt 4 Sp testens f r die Hervorhebungen m ssten Sie Ein stellungen f r die Schriftarten die in Frage kommen erstellen siehe Abschnitt 5 1 Selbstverst ndlich sind Beitr ge f r diese Art von Kodierung mehr als willkommen Nehmen Sie nur dann Kerning Anpassungen vor wenn es blich in der typo grafischen Tradition der Sprache ist Im Gegensatz zu Hervorhebung und der Vergr erung tr gt zus tzliche Kerning nicht unbedingt zur Verbesserung der mikro typographische Qualit t des Dokuments bei Sie sollten das zus tzliche Kerning nur aktivieren wenn Sie ein Dokument in einer Sprache schreiben dessen typografische Tradition ein solches Kerning garantiert Wenn Sie zum Beispiel einen englischen Text schreiben w rden die Leser durch zus tzliche Leerzeichen vor dem Satzzeichen verwirrt werden Anpassung der Zwischenwortabstandes befindet sich noch in einem experimentellen Stadium Die Umsetzung dieser Eigenschaft in pdf TEX ist nicht vollst ndig und kann zu den positiven Auswirkungen auf die typographische Qualit t die Sie eventuell erwarten nicht beitragen In bestimmten Situationen kann es sogar zu unerw nschten Nebenwirkungen kommen Deshalb sollte die Abstandoption nic
237. ng substitutions into account font name is guaranteed to correspond to an actual font identifier 1596 xdef MT lsfont csname expandafter string font name 1597 number MT letterspace 1s endcsname 1598 expandafter ifx MT lsfont relax 1599 debug MT dinfo nl 1 new letterspacing instance In case of nested letterspacing with different amounts we have to extract the base font again 600 MT get 1s basef ont 601 global expandafter letterspacefont MT lsfont font name MT letterspace Scale interword spacing not configurable in letterspace 2 package 3 MT ifdefined cQTF MT tr ispace A let Ctempa MTCtr ispace 305 edef tempa MT letterspace 606 MT ifdefined c TF MT tr ospace 607 edef tempa tempa MT tr ospace 608 edef tempa tempa 609 expandafter MTO tr set space Otempa 610 package 611 xletterspace 612 spacing lt letterspace amount gt 613 fontdimen2 MT lsfont dimexpr numexpr 1000 MT letterspace relax sp 4 fontdimen2 MT lsfont 1000 relax Adjust outer kerning microtype only 616 package 617 MT ifdefined cCTF MT tr okern let Ctempa MTCtr okern def tempaf 618 expandafter MTCtr set okern tempa Disable ligatures not configurable in letterspace MT Cifdefined c T MTCtr ligatures MT tr noligatures package letterspace 4 no ligatures f tagcode MT 1sfont f m ne letterspace M MM M GG G 6 A MT
238. ns of suffixes would have be to added manually e g DeclareMicrotypeVariants aw But otherwise something like padx would be truncated to p 086 def MT get basefamily 1 2 Onil 2087 edef Gtempa tempa 1 ifx 2 expandafter gobble else expandafter firstofone fi 2089 MT in tlist 2 MT variants 90 ifMT inlist else MT get basefamily 2 nil fi 2091 Qo M M MM M M Ka Oc MT listname Try all combinations of font family series shape and size to get a list for the MT get listname current font MT get listname 2092 def MT get listname 1 2093 debug MT dinfo nl i trying to find nameuse MT abbrO 1 list for font MT font 2094 let MT listname undefined 2095 def tempb 1 2096 MT map tlist c MT try order MT get listname MT try order MT next listname 2097 2098 2099 2100 2101 2102 2103 LA h2 h2 K K h2 K K h2 K WNW LA h h2 K K h2 h2 K K h2 h2 K h2 K K LJ 08 09 LA M KM M M LM oF WN ra co N NN NNN NH o D IMPLEMENTATION Font setup 86 Tabelle 4 Order for matching font attributes 1 2 3 4 5 6 T 8 9 10 11 12 13 14 15 16 Encoding D e e e e e D D D D D D D D D D Family D e e e e e D D E z Series D e D D D D D D Shape D D D D D D e e Size D e D D D e D e T def MT get listname 1 expandafter MTCnext listname 1 ifx MT listname unde
239. nteger 100 Diese Option ver ndert den Standardbetrag f rs Tracking siehe Abschnitt 5 3 sowie Letterspacing siehe Abschnitt 7 Der Betrag wird in Tausendsteln von lem angegeben zul ssige Werte sind im Bereich von 1000 bis 1000 Verschiedene Optionen true false false pdfIlEX ist nicht blo in der Lage PDF Dateien zu erstellen sondern kann auch DVI Dateien erzeugen Letztere k nnen mit der Option DVIoutput erzwungen werden was pdfoutput auf Null setzt Beachten Sie dass dies Pakete verwirren wird die auf den Wert von pdfoutput angewiesen sind falls diese fr her geladen wurden so erwarten sie dass sie aufgeru fen wurden um eine PDF Ausgabe zu erzeugen obwohl das nicht der Fall ist Diese Pakete sind u a graphics color hyperref pstricks und nat rlich ifpdf Entweder Die Kehrseite an dieser Standardeinstellung ist dass pdf TEX vielleicht bei gro en Dokumenten nicht gen gend Speicher zur Verf gung hat in diesem Falle sollten Sie ber die Fehlermeldungen in der Hints and caveats Abschnitt 9 nachlesen oder es mit einem gr eren step probieren Neuere TEX Systeme benutzen pdfTEX als Standard Engine auch f r DVI Ausgaben draft final verbose babel config 3 6 microtypesetup OPTIONEN Changing options later 10 laden sie diese Pakete nach microtype oder benutzen die Anweisung pdfoutput 0 fr her in letzterem Fall ist die DVIoutput Option redundant Wenn man DVI Dateie
240. oad cmr it T5 encoding T5 family cmr shape sl L 50 f 50 300 textendash 400 textemdash 300 SetProtrusion name lmr it T1 load cmr it T1 encoding T1 LY1 family Inr shape it sl textquotedblleft 200 textquotedblright 200 quotesinglbase 400 quotedblbase 500 Oldstyle numerals are slightly different SetProtrusion name cmr oldstyle it load cmr it T1 encoding T1 family hfor cmor shape it sl H 250 50 150 100 100 50 150 150 200 F 200 50 150 50 100 50 o o o650tnuie emr pmn SetProtrusion name pmnx it load pmnj it encoding OT1 family pmnx shape it sl H CONFIGURATION FILES Character protrusion 163 1 100 150 SetProtrusion name pmnx it T1 load encoding family shape T1 LY1 pmnx 3 it sl H 1 100 150 SetProtrusion T name pmnx it T2A H pmnj it T1 load pmnj it T2A T2A pmnx it sl encoding family Shape H 1 100 150 pmn ptm SetProtrusion L name load ptm it T1 encoding LY1 family ptm ptmx ptmj it sl T H shape texttrademark textregistered textcopyright textdegree textminus textellipsis texteuro text
241. ol expandafter def expandafter MT char expandafter csname MT encoding MT detokenize c tempa endcsname expandafter MT exp two c expandafter MT is char expandafter meaning expandafter MT char MT charstring relax relax relax ifnum MT char lt z or if it hasn t been defined by DeclareTextSymbol a letter e g i when using frenchpro expandafter expandafter expandafter MT is letter MT char relax relax fi H MT is char A helper macro that inspects the meaning of its argument MT charstring2294 begingroup 2295 catcode z 296 MT map tlist n CHAR makeother 297 lowercase 298 def x endgroup 299 def MT charstring CHAR 300 def MT is char 1 CHAR 2 3 4 relax 301 ifx relax 1 relax 302 if 3 relax 303 edef MT char number 2 7 4 MT ifstreq MT charstring 3 4 relax MT norestfalse 5 else 6 edef MT char number 2 3 7 MT ifstreq MT charstring 4 relax MT norestfalse 08 fi 09 debug MT dinfo n1 3 gt the MT toks is a char MT char 0 fi th M KM MM MM MM M M M MM MKM M M M H 1 2 3 3 4 x MT is composite Here we are dealing with accented characters specified as two tokens def MT is composite 1 2 relaxt ifx 2 else Again we construct a control sequence this time of the form encoding X accent character e g T1 a which we then expand once to see if it is a letter if it has been d
242. on default false 3 3 5 2 e New default for expansion option step 4 min stretch shrink 5 3 3 1 4 Protrusion settings for Bitstream Charter 2004 11 12 Set up fonts independently from IATEX font loading e New option final 3 5 1 2 2004 10 03 e New font sets allmath and basicmath 4 table 2 Protrusion settings for Computer Modern Roman math symbols e Protrusion settings for TS1 encoding completed for Computer Modern Roman and 1 BR Adobe Garamond 2004 09 21 Protrusion settings for Adobe Minion e New command DeclareCharacterInheritance 5 6 e Characters may also be specified as octal or hexadecimal numbers 5 1 0 2004 09 11 First CTAN release 14 IMPLEMENTATION 35 Implementation The docstrip modules in this file are driver The documentation driver only visible in the dtx file package The code for the microtype package microtype sty letterspace The code for the letterspace package letterspace sty lua Code for luaTEX microtype only plain debug Code for eplain miniltx letterspace only Code for additional output in the log file Used for surprise debugging purposes config Surrounds all configuration modules cfg t m t bch blg cmr pad ppl ptm pmn Surrounds Latin text configurations The main configuration file microtype cfg Settings for Bitstream Charter mt bch cfg Sett
243. on oder Subtraktion von Sperrsatz zu von allen Zeichen eines Fonts Zum Beispiel ist es ein normal blicher typographischer Brauch komplett in Kapit lchen wie in diesem Dokument ein wenig zu sperren Die Lesbarkeit kann auch verbessert werden indem man das Tracking von kleinerer Typen minimal erh ht und das gr erer Typen minimal erh ht Das NSetTracking Kommando erlaubt die Menge des Trackings f r verschiedene Fonts oder Font Sets zu setzen Es wird vom textls Kommando ausgewertet welches genutzt werden kann um kleinere Textpassagen zu sperren siehe Abschnitt 7 Die Menge des Tracking wird festgelegt in Tausendsteln von lem oder der gegebenen Einheit negative Werte sind ebenfalls erlaubt F r Fonts mit vollem Funktionsumfang wie Computer Modern ist das f r gew hnlich nicht n tig da sie in optischen Gr en kommen und das Tracking der Kapit lchen bereits angepasst ist 10 MICRO FEINABSTIMMUNG Tracking 18 Optionen name unit context Diese Optionen dienen derselben Funktionalit t wie bei den vorigen Konfigurationskommandos Die Einheit kann jegliche Dimension annehmen der Standard betr gt lem spacing Werden die Zeichenzwischenr ume ver ndert m ssen auch die Wortzwischenr ume vielleicht angepasst werden Diese Option erwartet drei Zahlen f r Wortzwischen raum bzw Streckung und Schrumpfung welche in Tausendsteln eines 1 em angege ben werden oder in der aktuellen Einheit unit Folgt einem
244. or inh in case of warnings later 244 def MT cat 1 5 edef tempa MT MT feat 1 csname MT MT feat 1 name endcsname inputenc MT ifdefined nOT Ctempa MT set inputenc 7 N NN MT set inputenc More recent versions of inputenc remember the current encoding so that we can test whether we really have to load the encoding file 248 MT addto setup 249 ifpackageloaded inputenc 50 ifpackagelater inputenc 2006 02 22 1 def MT set inputence 2 MT ifstreq inputencodingname csname tempa endcsname relax 3 MT load inputenc 4 d D 5 LI dei let MT set inputenc MT load inputenc 57 T 58 H MT load inputenc MT set pr heirs MT preset pr MT preset pre MT preset aux MT preset aux factor MT preset aux space MT warn preset towidth 1259 1260 1261 1262 1263 1264 265 266 267 268 269 or WN m N bh KA bh2 h2 KA LA INN N NNN 292 293 294 295 296 297 IMPLEMENTATION Font setup 67 def MT set inputenc MT warning nl Key inputenc used in MT curr list name but the inputenc MessageBreak package isn t loaded Ignoring input encoding yh yh T Set up normal catcodes since e g listings would otherwise want to actually typeset the inputenc file when it is being loaded inside a listing def MT load inputenc MT cfg catcodes debug MT dinfo nl 1 loading input encoding nameuse tempa inputencoding name
245. orhebungen und zus tzliches Kerning ge nutzt das basictext Set f r Fontexpansion und Wortzwischenr ume und das smallcaps Set f r Tracking Diese Anweisungen k nnen nur in der Pr ambel oder der Hauptkonfigurationsdatei verwendet werden Ihre Bandbreite gilt global f r das Dokument Nur ein Set pro Feature kann aktiviert werden Micro Feinabstimmung Jedes Zeichen bedarf eines bestimmten Betrags an Protrusion Kerning oder Spacing Es kann ebenso w nschenswert sein die maximale Expansion bestimmter Zeichen zu begrenzen berdies da jeder Font anders aussieht m ssen Einstellungen speziell auf eine Schriftart oder ein Set von Fonts zutreffen Dieses Paket enthalt flexible und einfache Methoden um diese feineren Aspekte der Mikrotypographie anzupassen Alle Anweisungen zur Feinabstimmung folgen prinzipiell derselben Syntax Sie ben tigen alle 3 argumente das Erste ist optional und kann zus tzliche Optionen enthalten im zweiten Argument werden Font Sets spezifiziert auf welche die Ein stellungen angewendet werden sollen das dritte Argument enthalt die eigentlichen Einstellungen Das Font Set f r welches die Einstellungen greifen sollen wird mit der selben Syntax von font axis Werteliste Paaren deklariert wie f r das Kommando DeclareMicrotypeSet siehe Abschnitt 4 Der einzige Unterschied liegt darin dass Werte mit anf hrendem Asterisk sofort bersetzt werden nicht am Ende 5 1 SetProtrusion 6
246. ou may use the text of this license as a model for your own license but your license should not refer to the LPPL or otherwise give the impression that your work is distributed under the LPPL The document modguide tex in the base ATEX distribution explains the motivation behind the con ditions of this license It explains for example why distributing IATEX under the GNU General Public License GPL was considered inappropriate Even if your work is unrelated to IATRX the discussion in modguide tex may still be relevant and authors in tending to distribute their works under any license are encouraged to read it A Recommendation on Modification Wi thout Distribution It is wise never to modify a component of the Work even for your own personal use without also mee ting the above conditions for distributing the modified component While you might intend that such modifi cations will never be distributed often this will happen by accident you may forget that you have modified that component or it may not occur to you when allowing others to access the modified version that you are thus distributing it and violating the conditions of this license in ways that could have legal implications and worse cause problems for the community It is therefore usually in your best interest to keep your copy of the Work identical with the public one Many works provide ways to control the behavior of that work without altering
247. pandafter gobble 692 69 2 3 14 1 5 H H e H 694 695 696 697 MT setup 698 699 700 MT addto setup 701 702 MT with packageCT 703 704 MT with babel and T 705 706 707 708 709 710 711 712 MT ledmac setup MT led unhbox line MT led kern IMPLEMENTATION Preliminaries 52 fi Compatibility For the record the following IXTEX kernel commands will be modified by microtype pickup f ont do subst correction add accent all in section 14 2 9 showhyphens in section 14 4 5 The wordcount package redefines the font switching commands which will break microtype Since microtype doesn t have an effect on the number of words in the document anyway we will simply disable ourselves Cifl aded tex wordcount MT warning nl Detected the wordcount utility MessageBreak Disabling MTCMT since it wouldn t work MT clear options MT restore catcodes endinput relax The setup is deferred until the end of the preamble This has a couple of advantages microtypesetup can be used to change options later on in the preamble and fonts don t have to be set up before microtype package plain MT requires latexif let MT setup Cempty We use our private hook to have better control over the timing This will also work with eplain but not with miniltx alone def MT addto setup g addto macro MT setup Don t hesitate with miniltx plain let MT ad
248. pansion MT expansion Set up for expansion 1309 def MT expansion MT maybe do ex MT set ex codes s Setting up font expansion is a bit different because of the selected option There are two versions of this macro If selected true we only apply font expansion to those fonts for which a list has been declared i e like for protrusion def MT set ex codes s 7 1 MT if list exists 2 MT get ex opt 3 let MT get char unit relax d 5 MT reset ef codes MT get inh list 6 MT set inputenc c 7 MT load list MT ex c name 8 MT set listname 9 MT let cn tempc MT ex c MT ex cOname expandafter MT set codes tempc relax 1 MT expandfont 2 JNrelax 3 MT set ex codes n If on the other hand all characters should be expanded by the same amount we only take the first optional argument to SetExpansion into account ifMT nonselected We need this boolean in MT if list exists so that no warning for missing lists will be issued newif ifMT nonselected T HHH D E 5 def MT set ex codesOn 6 MT nonselectedtrue 7 MT if list exists 8 MT get ex opt let MT stretch MT stretch let MT shrink MT shrink let MT step MT step let MT auto MT auto let MT ex factor MT ex factor 3 MT reset ef codes MT expandfont 8 MT nonselectedfalse 9 RON R OV lt d MT set ex codes Default is non selected It can be changed in the package options 340 let MT set
249. pe ifstreq si1 s2 9 if si s2 then 0 tex write firstoftwo 2 1 else 2 tex write secondoftwo 3 end 4 end 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 35 And here we end the 1ua file 6 end 7 luafile MT xadd Add item to a list a Ot w w 538 xpackage 539 def MT xadd 1 2 40 ifx 1 relax 1 xdef 1 2 2 else 3 xdef 1 1 2 4 fi G Om Oo Gn Om o 45 MT xaddb Add item to the beginning 546 def MT xaddb 1 2 547 ifx 1 relax 548 xdef 1 2 549 else 550 xdef 1 2 1 551 Mi 552 553 package MT map clist n Run 2 on all elements of the comma list 1 This and the following is MT map clist c modelled after IXTEX3 commands MT map clist 554 package letterspace MT clist function 555 def MT map clisten 1 2 556 ifx empty 1 else MT clist b k nT clist break det NT clist function 1 2 55 58 MT map clist 1 nil nnil MT map tlist n MT map tlist c MT map tlist MT tlist break ifMT inlist MT in clist MT rem from clist MT in tlist MT in tlist 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 IMPLEMENTATION Preliminaries 49 fi T def MT map clist c 1 MT exp one n MT map clist n 1 def MT map clistO 1 ifx nil 1 expandafter MT clist break fi MT clist function 1 MT map clist T let MT clist fun
250. pielsweise 12 pt 13 5 pt und 15 999 pt enthalten aber nicht 16 pt Es ist nicht erlaubt die untere oder obere Grenze auszulassen 10 large Zus tzlich zu diesem Deklarationsschema k nnen sie einzelne Schriften zu einem Set hinzuf gen indem Sie den font Schl ssel nutzen welcher die An einanderreihung aller Fontattribute getrennt durch Slashes erwartet das hei t font encoding family series shape size Das erlaubt uns Font Sets zu Sets hinzuzuf gen von denen sie sonst disjunkt sind Falls Sie zum Beispiel wollen dass die Roman Familie in allen Gr en hervorragt aber nur die normal gro e m glicherweise kursive typewriter Font im Kontrast zum z B kleinen Font so k nnten sie das Set so deklarieren DeclareMicrotypeSet protrusion myset encoding T1 family rm font T1 tt m n T1 tt m it T Wie Sie dem Beispiel entnehmen k nnen ist die Asterisk Notation auch f r den font Schl ssel zul ssig Ein einzelner Asterisk ist quivalent zu also dem normalen Font Befehle zur Gr enwahl sind auch m glich allerdings sind keine Bereiche erlaubt Tabelle 2 listet die 9 vordefinierten Font Sets auf Diese k nnen ebenfalls aktiviert werden indem ihr Name an die Optionen protrusion expansion tracking kerning und spacing der Features geleitet wird wenn das Paket geladen wird z B usepackage protrusion allmath tracking smallcaps
251. pmn 100 1 21 100 blg 300 100 1 1 8300 m t pad pmn ptm 100 200 bch 200 ble 300 300 cmr ppl 200 300 on 100 300 m t ptm 500 500 bch cmr ppl 400 500 blg 300 400 pad 300 500 pmn 200 400 ugm 500 600 blg 200 100 100 200 blg _ 150 250 blg 250 250 m t pmn textendash 200 200 textemdash 150 150 bch textendash 200 300 textemdash 150 250 cmr textendash 400 300 textemdash 300 200 pad ppl ptm textendash 300 300 textemdash 200 200 ugm textendash 250 300 textemdash 250 250 Why settings for left and right quotes Because in some languages they might be used like that see the csquotes package for examples 682 4683 4684 685 686 4687 688 689 4690 4691 4692 4693 4694 4695 4696 697 698 4699 700 701 4702 4703 704 705 4706 707 708 4709 no PWN Ho MOM OM SES SS DA A A Moo ed N NNN ANNANN CONFIGURATION FILES Character protrusion 148 m t bch pmn textquoteleft 300 400 textquoteright 300 400 blg textquoteleft 400 600 textquoteright 400 600 cmr textquoteleft 500 700 textquoteright 500 600 pad ppl textquoteleft 500 700 textquoteright 500 700 ptm textquoteleft 500 500 textquoteright 300 500
252. pplying that process a A Derived Work may be distributed under a different license provided that license itself ho nors the conditions listed in Clause 6 above in regard to the Work though it does not have to honor the rest of the conditions in this license If a Derived Work is distributed under a diffe rent license that Derived Work must provide sufficient documentation as part of itself to allow each recipient of that Derived Work to honor the restrictions in Clause 6 above con cerning changes from the Work b This license places no restrictions on works that are unrelated to the Work nor does this license place any restrictions on aggregating such works with the Work by any means Nothing in this license is intended to or may be used to prevent complete compliance by all parties with all applicable laws THE KTEX PROJECT PUBLIC LICENSE 196 No Warranty There is no warranty for the Work Except when other wise stated in writing the Copyright Holder provides the Work as is without warranty of any kind either expressed or implied including but not limited to the implied warranties of merchantability and fitness for a particular purpose The entire risk as to the quali ty and performance of the Work is with you Should the Work prove defective you assume the cost of all necessary servicing repair or correction In no event unless required by applicable law or agreed to in writing will The Co
253. pyright Holder or any author named in the components of the Work or Maintenance of The Work The Work has the status author maintained if the Copyright Holder explicitly and prominently states near the primary copyright notice in the Work that the Work can only be maintained by the Copyright Holder or simply that it is author maintained The Work has the status maintained if there is a Current Maintainer who has indicated in the Work that they are willing to receive error reports for the Work for example by supplying a valid e mail ad dress It is not required for the Current Maintainer to acknowledge or act upon these error reports The Work changes from status maintained to unmaintained if there is no Current Maintainer or the person stated to be Current Maintainer of the work cannot be reached through the indicated means of communication for a period of six months and there are no other significant signs of active maintenance You can become the Current Maintainer of the Work by agreement with any existing Current Main tainer to take over this role If the Work is unmaintained you can become the Current Maintainer of the Work through the following steps 1 Make a reasonable attempt to trace the Current Maintainer and the Copyright Holder if the two differ through the means of an Internet or similar search 2 If this search is successful then enquire whether the Work is still maintained
254. r extract font e get external font is called by extract font by itself and by the substitution macros Up to version 1 3 of this package we were using define newfont as the hook which is only called for new fonts and therefore seemed the natural choice However this meant that we had to take special care to catch all fonts we additionally had to set up the default font the error font if it wasn t the default font we had to check for some packages that might have been loaded before microtype and were loading fonts e g jurabib ledmac pifont loaded by hyperref tipa and probably many more Furthermore we had to include a hack for the IEEEtran class which loads all fonts in the class file itself to fine tune inter word spacing and the memoir class too To cut this short it seemed to get out of hand and I decided that it would be better to use pickup font and decide for ourselves whether we ve already seen that font I hope the overhead isn t too large MT font list We use a comma separated list MT font2358 let MT font list empty 2359 let MT font empty MT orig pickupfont 2363 2364 2365 2 2 2 2366 2 2 M KM M MM MM MM MM M H 390 391 392 393 395 396 397 2 2 2 2 2 2 2 2 22 2 2 pickup font 2401 IMPLEMENTATION Font setup 94 All this is done at the beginning of the document It doesn t work for plain of course which doesn t have pickup
255. r c MT tr cOname O 1 package Redefine font name which will be called a second later in selectfont plain MT requires latex2 def MT set lsfont MT exp two c let font name MT 1sfont Disable the tests whether the font should be letterspaced then trigger the setup Only textls can be used in math mode lsstyle may be used inside another 700 701 702 703 704 705 706 707 708 709 rok WN HMO SOSS SES SS SS ES lslig MT lslig B GQ PWN HMO J Ka 0444444444 M KM M MM MM M M Z MT 1s basefont MT get 1s basefont 73 731 732 733 734 735 736 737 738 MT set lsbasefont MT set tr zero 1739 174 1741 1742 IMPLEMENTATION Font setup 77 text switch of course DeclareRobustCommand lsstylet not math alphabet lsstyle textls package def MT feat tr let MT tracking MT set tr codes selectfont T Now the definitions for the letterspace package with plain TEX plain H def MT set lsfont MT lsfont def lsstylet begingroup escapechar m ne xdef f ont name csname expandafter string the font endcsname MT set tr codes endgroup D let text1s undefined 7 let lslig undefined T plain For Fraktur fonts some ligatures shouldn t be broken up This command will temporarily select the base font and insert the correct kerning DeclareRobustCommand 1slig 1 MT ifdefined c TF MT curr ls escapechar m ne MT get 1s basefont
256. ravedbl 150 300 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 CON FIGURATION FILES Character protrusion 170 cm 2 pa m m m m cm bch pmn ugm textdagger 80 80 blg textdagger 200 200 cmr pad textdagger 100 100 ptm textdagger 150 150 blg textdaggerdbl 150 150 cmr pad pmn textdaggerdbl 80 80 ptm textdaggerdbl 100 100 bch textbardbl 100 100 blg ugm textbardbl 150 150 bch textbullet 200 200 blg textbullet 400 500 cmr pad pmn textbullet 100 S textbullet 150 150 ugm textbullet 50 100 bch cmr pmn textcelsius f 50 pad textcelsius 80 bch textflorin 50 50 blg textflorin 100 100 pad ugm textflorin 100 pmn textflorin 50 100 ptm textflorin 50 70 SG textcolonmonetary 50 pad pmn textcolonmonetary 50 pmn textinterrobang 100 a textinterrobangdown 100 t pad ptm texttrademark 100 100 bch texttrademark 150 150
257. re ltere Versionen bzw pdflatex ini 2 5 Jahre neuere Versionen ndern pdfTeX warning font expansion font should be expanded before its first use Diese Warnung wird bei pdf TEX Versionen vorkommen die lter sind als 1 40 4 wenn Tracking und Vergr erung auf eine Schriftart angewendet werden Sie ist harmlos und kann ignoriert werden Beitr ge Ich w re froh Konfigurationsdateien f r mehr Schriftarten beizuf gen Das Vorbe reiten solcher Konfigurationen ist recht zeitaufw ndig und erfordert viel Geduld Um diesen Prozess zu erleichtern schlie t dieses Paket auch eine Testdatei ein die verwendet werden kann um zumindest die Hervorhebungseinstellungen ber pr fen zu k nnen test microtype tex Wenn Sie eine Konfigurationsdatei f r eine andere Schriftart erstellt oder Anregungen f r Verbesserungen in den Standardkonfigurations Dateien haben w rde Ich diese dankbar entgegennehmen w m 1 gmx net Danksagungen Dieses Paket w re sinnlos wenn H n Th Thanh dieses pdf TEX Programm ber hautpt nicht erstellt h tte welches die mikro typographische Erweiterung einf hrt und so f r die TEX Welt verf gbar macht Dar ber hinaus danke ich ihm f r die Hilfe dieses Paket zu verbessern und nicht zuletzt f r die F rderung in Th nh 2004 und Th nh 2008 und anderswo Also bedanke Ich mich bei ihm und dem Rest der pdfIEX Mannschaft f r die Widerlegung der Idee dass TEX tot ist und f r dass Fixen der Programmfehl
258. referring to the per son M Y Name If you do not want the Maintenance section of LPPL to apply to your Work change maintained above into author maintained However we recom mend that you use maintained as the Maintenance section was added in order to ensure that your Work remains useful to the community even when you can no longer maintain and support it yourself Derived Works That Are Not Replace ments Several clauses of the LPPL specify means to provide reliability and stability for the user community They therefore concern themselves with the case that a De rived Work is intended to be used as a compatible or incompatible replacement of the original Work If this is not the case e g if a few lines of code are reused for a completely different task then clauses 6b and 6d shall not apply Important Recommendations Defining What Constitutes the Work The LPPL requires that distributions of the Work contain all the files of the Work It is therefore im portant that you provide a way for the licensee to determine which files constitute the Work This could for example be achieved by explicitly listing all the files of the Work near the copyright notice of each file or by using a line such as This work consists of all files listed in manifest txt in that place In the absence of an unequivocal list it might be impossible for the licensee to determine what is considered by you to comprise
259. relax 5 MT ifdimen tempa 6 MTOglet nc MTC 10c MT curr set name Gunit tempa 7 MT warn nodim width of space 8 Y 9 Y L10 M 111 T The first argument to SetExpansion accepts some more options 2 MT map clist n stretch shrink step 3 define key MT ex c 1 CA 4 MT ifempty 1 relax 5 MT ifint 1 A space terminates the number 116 MT gdef n MT ex c MT curr set name G 1 1 7 H4 8 MT warningt 9 Value 1 for option 1 is not a number MessageBreak Ignoring it th yh yh D def ine key MT ex c auto true A def tempa 1 csname if tempa endcsname N N NND rok WN HM KM M M M SI 14 3 6 DeclareCharacterInheritance MT inh feat MT extra inputenc MT set inh list U 1 aor WwW NY 4T 48 49 0 or ot c 1 2 3 d 5 5 55 IMPLEMENTATION Configuration 112 Don t use autoexpand for pdfT X version older than 1 20 MT requires pdftex4 7 MT gdef n MT ex c MT curr set name auto autoexpand T MT warning pdftex too old for automatic font expansion D else MT requires pdftex4 7 MT glet nc MT ex c MT curr set name auto empty relax fi 38 Tracking Interword spacing and outer kerning The variant with space in case SetTracking is called inside an argument e g to IfFileExists 39 MT define opt key tr spacing MT define opt key tr outerspacing MT def ine opt k
260. reset sp MT preset sp MODO OMM OLI HI Ol IMPLEMENTATION Font setup 71 37 MT ifempty tempb relax MT get space unit2 39 MT scale to em knbscode MT f ont MT char tempcntb debug MT dinfo nl1 4 knbs MT char number knbscode MT font MT char 1 yh def tempb 2 MT ifempty tempb relax MT get space unit3 MT scale to em 7 stbscode MT font MT char tempcntb ka o Ra nok Wb 448 debug MT dinfo n1 4 stbs MT char number stbscode MT font MT char 2 9 P 0 def tempb 3 1 MT ifempty tempb relax 2 MTOget space unit4 3 MT scale to em A shbscode MT f ont MT char tempcntb 5 debug MT dinfo nl 4 shbs MT char number shbscode MT font MT char 3 56 H 57 MT ifdefined cOT MT sp inh name 58 MT ifdefined n T MT inh MT sp inh name MT char C 59 MT exp cs MT mapO tlist c MT inh MT sp inh name MTCchar MT set sp heirs 60 3 461 Y 62 TL 63 def MT set spCheirs 1 464 knbscode MT font 1 knbscode MTO font MT char 65 stbscode MT font 1 stbscode MT font MT char 466 shbscode MT font 1 shbscode MT font MT char 467 debug MT dinfo n1 2 heir of MT char 1 68 debug MT dinfo n1 4 knbs stbs shbs 1 number knbscode MT font MT char 69 debug number stbscode MT f ont MT char number shbscode MT font MT char 70 T 1 def MT set all sp 1 2 3 debug MT dinfo nl1 3 knbs stbs shbs setting
261. ret is shown for fonts which are actually set up by Microtype a green one marks fonts that we have already seen The Caret annotation requires a viewer for PDF version 1 5 you could use Text if you re using an older PDF viewer def MT show pdfannot 1 ifnum tracingmicrotypeinpdf lt 1 else iftracingmicrotypeinpdfall leavevmode fi pdfannot height 4pt width 4pt depth 2pt Subtype Caret T expandafter string font name ifcase 1 or Subj New font C 1 0 0 else Subj Known font C O 1 0 fi Contents MTCpdf annot th iftracingmicrotypeinpdfall kernipt fi IMPLEMENTATION Preliminaries 39 119 global MT inannotfalse 120 fi 191 122 debug 123 package 14 1 2 Requirements MT plain MT requires latex MT pdftex no The letterspace package works with 0 miniltx 1 eplain 2 BIEX For plain usage we have to copy some commands from latex 1tx 24 plain 25 def MT plain 2 26 ifx documentclass undefined def MTCplain 1 def hmode bgroup leavevmode bgroup def nfss text 1 mbox 1 30 MetNOtypesetOprotect relax 31 ifx eplain undefined 32 def MT plain 0 33 def PackageWarning 1 2 34 begingroup 35 newlinechar 10 36 def MessageBreak J 1 Qspaces spaces spaces spaces 37 immediate write16 JPackage 1 Warning 2 on line J 38 endgroup 39 0 def on line on input line the inputlineno 1 def spaces space space space space 2 Mi 43 fi N
262. rn off automatic expansion if output mode is DVI 3814 ifnum pdfoutput lt Cne 3815 ifMT opt auto 3816 MT error 3817 Automatic font expansion only works for PDF output MessageBreak 3818 However you are creating a DVI file 3819 If you have created expanded fonts instances remove auto from 3820 MessageBreak the package options Otherwise you have to switch 3821 off expansion MessageBreak completely 3822 fi 3823 MT autofalse 3824 else 3825 def MT autof autoexpand 3826 fi Also if pdf TEX is too old 3827 34 3828 MT error 3829 The pdftex version you are using is too old for MessageBreak 3830 automatic font expansion 3831 If you have created expanded fonts instances remove auto from MessageBreak 3832 the package options Otherwise you have to switch off expansion MessageBreak 3833 completely or upgrade pdftex to version 1 20 or neger Hi 3834 MT autofalse 3835 def MT auto 1000 3836 T 3837 else No automatic expansion 3838 MT requires pdftex4 relax 3839 def MT auto 1000 3840 Di 3841 fi Choose the appropriate macro for selected expansion 3842 ifMT selected 3843 let MT set ex codes MT set ex codes s 3844 else 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 MT check step 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 showhyphens 3880 3881 3882 3883 3884
263. rotrusion pdfprotrudechars 3666 MT define optionX expansion pdfadjustspacing MT def ine optionX The same for tracking spacing and kerning which do not have a compatibility level 3667 MT requires pdftex6 3668 lua MT requires luatex firstofone 3669 def MT define optionX 1 2 3670 def ine key MTX 1 true 3671 MT map clist n 1 3672 KV sp def MT val 1 3673 MT Cifempty MT val relaxt 3674 tempcnta m ne 3675 MT ifstreq MT val true IMPLEMENTATION Package options 125 3676 MT checksetup 1 3677 tempcnta ne 3678 MT vinfo Enabling 1 on line 3679 yh 3680 i0 3681 MT ifstreq MT val false 3682 tempcnta z 3683 MT vinfo Disabling 1 on line 3684 MT error Value MT val for key 1 not recognised 3685 Use either true or false 3686 yh 3687 yh 3688 ifnum tempcnta gt m ne 3689 2 relax 3690 fi 3691 th 3692 Y 3693 3 3694 We cannot simply let MT tracking relax since this may select the already letterspaced font instance 3695 MT define optionX tracking ifnum tempcnta z let MT tracking MT set tr zero 3696 else let MT tracking MT tracking fi 3697 MT define optionX spacing pdfadjustinterwordglue tempcnta 3698 MT define optionX kerning pdfprependkern tempcnta 3699 pdfappendkern tempcnta 3700 gobble 3701 lua T 3702 firstofone Disable for older pdf TEX versions and for luaIEX
264. rt wirds rechts gezeigt angef hrt von einem Sternchen falls es abh ngig von der pdfTEX Version und oder dem Output Modus ist Die mikro typographischen Features anschalten true false compatibility nocompatibility Name des Font Sets true Dies sind die haupts chlichen Optionen um die Ebene mikro typographischer activate tracking kerning spacing 3 2 factor OPTIONEN Zeichenvorspriinge T Verfeinerung welche die Schriftarten in ihrem Dokument erhalten sollten zu kontrollieren Standardm ig ist das Paket recht gierig Character Protrusion ist aktiviert Fontexpansion wird nur in Situationen abgeschaltet in denen pdf TEX die Fonts nicht automatisch expandieren kann also falls es entweder zu alt ist Versionen vor 1 20 oder falls der Output Modus DVI ist siehe Abschnitt 3 5 Anders gesagt wird microtype versuchen soviel Mikrotypographie anzuschalten wie es sicher als funktionierend unter den gegebenen Bedingungen erwarten kann und normalerweise ist es nicht n tig das Paket mit anderen Optionen f r die PDF bzw DVI Modi zu laden Protrusion und Expansion k nnen getrennt de aktiviert werden indem man den betreffenden Schl ssel auf true bzw false setzt Die activate Option k rzt das Setzen beider Optionen zur gleichen Zeit ab Deswegen haben die folgenden Zeilen alle denselben Effekt wenn man PDF Dateien mit einer aktuellen Version von pdf TpEXerstellt usepackage protrusion true expansion micro
265. rusion name euscript vm load euscript encoding U family zeus 01 600 600 02 200 200 03 200 200 04 200 200 O5 150 150 06 200 200 6725 6726 6727 6728 6729 67 67 67 67 67 6 67 67 67 67 67 674 674 674 674 674 674 67 674 36 30 31 32 33 34 5 37 38 39 0 oP WN ra 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 67 67 67 51 52 33 6764 67 35 6766 6767 67 67 98 39 6770 6771 6772 CONFIGURATION FILES Character protrusion 184 07 08 09 OA OB OC OD OE OF 10 11 12 13 14 15 16 47 19 4A 4B iC iD 1E 1F 20 21 22 23 24 25 26 27 28 29 2A OB 2C 2D OR OF 30 34 32 33 34 35 3E 3F 60 61 62 63 64 65 68 69 6C 6D 6F 79 200 200 100 100 100 100 100 100 100 100 100 100 100 100 150 150 100 100 150 150 100 100 150 100 100 150 150 100 100 150 200 100 100 200 150 150 150 100 100 150 100 100 100 100 250 100 100 250 150 200 150 200 150 150 150 150 100 200 150 150 150 150 100 100 100 100 100 150 100 100 100 100 100 100 150 150 150 150 100 100 100 100 100 100 100 100 100 100
266. s 200 200 textdegree 300 150 5403 m t copyright 100 100 textregistered 100 100 5404 ptm textregistered 100 150 copyright 100 150 5 ptm textDelta 70 textdelta _ 50 5406 ptm textpi 50 80 textmu 80 5 ptm texteuro 200 T textellipsis 100 200 5408 ptm textquoteleft 500 400 textquoteright 500 400 5409 ptm textquotedblleft 500 300 textquotedblright 400 400 5410 ptm textapprox 50 50 textinfty 100 100 5411 ptm textdagger 150 150 textdaggerdbl 100 100 5412 ptm textdiv 150 150 textasciitilde 80 80 5413 ptm texttimes 100 150 textpm 50 80 5414 ptm textbullet 300 100 textperiodcentered 300 300 5415 ptm textquotesingle 500 500 textquotedbl 300 300 5416 ptm textperthousand 50 5417 5418 5419 m t ptm 5420 cmr bch CONFIGURATION FILES Character protrusion 5421 SetProtrusion 5 name cmr it T5 54 load cmr it 5 name bch it T5 542 load bch it 5426 encoding T5 5427 bch family bch 5428 cmr family cmr 5429 shape it 5430 5431 bch t 100 5432 cmr _ 100 200 5433 bch textbackslash 150 150 5434 cmr textbackslash 300 300 5435 bch quotesinglbase 200 500 quotedblbase 150 500 5436 cmr quotesinglbase 300 700 quotedblbase 200 600 5
267. schlie en siehe Abschnitt 7 Die originale Dokumentation enth lt ein Bild welches all diese Optionen illustriert Nehmen wir zum Beispiel an Sie wollen alle kleinen Kapit lchen um 50 1000 em sperren Fonts kleiner small um 0 02em und das Tracking gro er Typen um 0 02em erh hen Sie k nnen das mit folgenden Einstellungen erreichen usepackage tracking true microtype DeclareMicrotypeSet tracking my encoding size small Large font sc SetTracking no ligatures f encoding shape sc 50 SetTracking encoding size small 20 SetTracking encoding size Large 20 Gesperrte Schriftarten fiir welche keine Einstellungen vorliegen werden um den den Standard von 0 1 em gesperrt einstellbar mit der Paketoption letterspace siehe Abschnitt 3 5 Setzen wir voraus ihr Herausgeber will dass Sie ihre 1000 Seiten auf ein Meisterwerk von einer handvoll Seiten zusammenk rzen dann k nnten Sie mit gekreuzten Fingern microtype laden usepackage tracking alltext letterspace 40 microtype Zusatzliches Kerning options set of fonts kerning settings Mit diesem Befehl k nnen sie das zus tzliche Kerning feinabstimmen Im Vergleich zu herk mmlichem Kerning welches immer mit einem Paar von Zeichen assoziiert wird und Tracking welches den Zwischenraum zwischen allen Zeichen eines Fonts angibt bezieht sich zus tzliches Kerning nur auf einzelne Z
268. set curr ls MT curr ls MT set curr os MT set curr ok MT ls aftergroup IMPLEMENTATION Font setup 75 Adjust protrusion values now and maybe later in MT pr split val 5 debug MT dinfo n1 2 compensating for tracking number MT letterspace MT do f ont lpcode MT 1sf ont tempcnta numexpr MT letterspace 2 relax rpcode MT 1sfont tempcnta numexpr MT letterspace 2 relax package let MT the pr code MT the pr code tr fi SI 6 SI FO MM R E o0 Finally let the letterspaced font propagate 630 aftergroup MT set lsfont 631 package let MT font MT lsfont We need to remember the current letterspacing amount for lslig 632 xdef MT set curr ls def noexpand MT curr 1s MT letterspace 633 aftergroup MT set curr ls Adjust surrounding spacing and kerning We get the current outer spacing and adjust it then after the end of the current outer group set the current outer spacing again and adjust 1634 package 1635 MT outer space csname MT outer space expandafter string font name endcsname relax 1636 xdef MT set curr os MT outer space the MT outer space relax 1637 MT tr outer 1 1638 package If MT ls adjust is empty it s the starred version of textls Use scaling to avoid a Dimension too large 1639 ifx MT 1s adjust empty 1640 letterspace textls outer kerning textls outer kerning 0 0 1641 MT outer kern dimexpr MT letter
269. since fonts might already have been loaded and hence wouldn t be set up MT checksetup 1 tempcnta csname MT tempb level endcsname MT vinfo Enabling 1 IMPLEMENTATION Package options 124 3622 level number csname MT tempb level endcsname on line 3623 T 3624 Hi 3625 MT ifstreq MT val false 3626 tempcnta z 3627 MT vinfo Disabling 1 on line 3628 M 3629 MT ifstreq MT val compatibility 3630 MT checksetup 1 3631 tempcnta ne 3632 MT let nc MT Gtempb level ne 3633 MT vinfo Setting 1 to level 1 on line 3634 h 3635 i0 3636 MT ifstreq MT val nocompatibility 3637 MT checksetup 1 3638 tempcnta tw 3639 MT let nc MT Gtempb level tw 3640 MT vinfo Setting 1 to level 2 on line 3641 th 3642 MT error Value MT val for key 1 not recognised 3643 Use any of true false compatibility or 3644 nocompatibility 3645 th 3646 yh 3647 yh 3648 th 3649 ifnum tempcnta gt m ne 3650 2 tempcnta relax 3651 fi 3652 Y 3653 3 3654 th 3655 MT checksetup Test whether the feature wasn t disabled in the package options 3656 def MT checksetup 1 3657 csname ifMT 1 endcsname 3658 expandafter firstofone 3659 else 3660 MT error You cannot enable 1 if it was disabled MessageBreak 3661 in the package options Load microtype with 1 enabled 3662 expandafter gobble 3663 fi 3664 3665 MT define optionX p
270. space sp fontdimen6 font name 2000 relax 1642 MT 1ls outer k 1643 letterspace 1644 xdef MT set curr ok MT outer kern the MT outer kern relax 1645 aftergroup aftergroup aftergroup MT ls aftergroup 1646 letterspace Otherwise get the current outer kerning and adjust it for left and right side microtype only 647 package 648 else 649 MT outer kern expandafter expandafter expandafter firstoftwo 650 csname MT outer kern expandafter string font name endcsname relax 651 ifdim MT outer kern z else MT ls outer k fi 652 MT outer kern expandafter expandafter expandafter secondoftwo 653 csname MT outer kern expandafter string font name endcsname relax 654 package 655 fi 656 package Carry the outer kerning amount to outside the next group then set outer spacing which will set kerning if no space follows 657 xdef MT set curr ok MT outer kern the MT outer kern relax 658 aftergroup aftergroup aftergroup MT ls aftergroup 659 package 660 fi 661 package 662 Stuff to be done after the letterspace group The letterspace package only adjusts MT get tr opt MT tr unit MT tr ispace MT tr ospace MT tr okern MT tr ligatures MT get tr opt MT set lsfont lsstyle 1663 664 665 666 667 668 669 670 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 IMPLE
271. stprotrusion guilsinglright testprotrusion guillemotleft testprotrusion guillemotright ork WN ra coo N newpage The following displays the current font stretched by 5 normal and shrunk by 5 bigskip newlength MT1n newcommand teststring 26 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi jklmnopqrstuvwxyz0123456789 27 settowidth MTln teststring 28 microtypesetup expansion true M M MM M M ork WN Ka 0 parbox 1 05 MTln teststring linebreak 1 teststring par bigskip 2 parbox 0 95 MTIn teststring 4 end document Needless to say that things may always be improved For suggestions mail to w m 1 gmx net THE KTEX PROJECT PUBLIC LICENSE 194 The IATEgX Project Public License LPPL Version 1 3c 2008 05 04 Copyright 1999 2002 2008 ATEX3 Project Preamble The KTEX Project Public License LPPL is the pri mary license under which the IATEX kernel and the base IATEX packages are distributed You may use this license for any work of which you hold the copyright and which you wish to distribute This license may be particularly suitable if your work is TgX related such as a LXTEX package but it is written in such a way that you can use it even if your work is unrelated to TEX The section WHETHER AND HOW TO DIS TRIBUTE WORKS UNDER THIS LICENSE below gives instructions examples and recommendations for authors who are considering distributing their works under this l
272. t 7 MT exp two c MT split name string MT font nil Try to find a configuration file for the current font family MT exp one n MTOf ind file MT family ifx MT familyalias empty else MT exp one n MTOf ind file MT familyalias fi We have to make sure that cf encoding expands to the correct value for later in MT get slot which isn t the case when selectfont chooses a new encoding this would be done a second later in selectfont anyway three lines to be exact I think I do not need this anymore however I m too afraid to remove it Oops I did it Let s see whether anybody complains ifx f encoding cf encoding else enc update fi T Tracking has to come first since it means actually loading a different font MT requires pdftex6 g addto macro MT setupfont MT tracking relax g addto macro MT setupf ont 7 MT check font ifMT inlist debug MT show pdfannot 2 else MT vinfo Setting up font MT font on line MT copy font MT copy font MT f ont copy MT f ont orig 868 869 870 873 87 875 A 877 878 879 886 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 IMPLEMENTATION Font setup 57 Now we can begin setting up the font for all features that the current pdfIEX provides The following commands are let to relax if the respective feature is disabled via package options For versions older than
273. t MTO if true 7 ifMTO if g addto macro MT setupf ont hook MT restore pG h fi The listings package makes numbers and letters active 808 MT with package T listings 7 809 g addto macro MT cfg catcodes 810 MT while num 30 3A catcode tempcnta 12 relax 811 MT while num 41 5B catcode tempcnta 11 relax 812 MT while num 61 7B catcode tempcnta 11 relax 813 3 and the backslash which would lead to problems in MT get slot 814 g addto macro MT setupfont hook 815 catcode z When loaded with the extendedchar option listings will also redefine 8 bit active characters inputenc Luckily this simple redefinition will make them expand to their original definition so that they could be used in the configuration 816 let lst ProcessLetter empty 817 3 818 MA Of course using both soul s and microtype s letterspacing mechanisms at the same time doesn t make much sense But soul can do more e g underlining The optional argument to textls may not be used 9 package 0 plain MT requires latex2 1 MT with package T soul 2 soulregister lsstyle 0 3 soulregister textls 1 4 Under plain TEX soul doesn t register itself the ATEX way hence we have to use a different test in this case 825 plain 826 ifx SOUL Gundefined else 827 soulregister lsstyle 0 828 soulregister textls 1 829 ML 830 plain 831 package Compatibility with the pinyin package from
274. tbraceright H H 300 300 400 400 300 400 300 500 150 300 100 400 300 200 400 100 200 Times is the default font for LY1 therefore we provide settings for the additional characters in this encoding too 4948 ptm SetProtrusion CONFIGURATION FILES Character protrusion 153 950 name ptm LY1 4951 load ptm T1 4952 encoding LY1 4953 family ptm ptmx ptmj 4954 4955 2 100 100 956 texttrademark 100 100 957 textregistered 100 100 4958 textcopyright 100 100 4959 textdegree 300 300 4960 textminus 200 200 961 textellipsis 150 200 4962 texteuro Ed e ex 4963 textcent 100 100 964 textquotesingle 500 500 4965 textflorin 50 70 4966 textdagger 150 150 4967 textdaggerdbl 100 100 4968 textperthousand L 50 4969 textbullet 150 150 4970 textonesuperior 100 100 971 texttwosuperior 50 50 4972 textthreesuperior 50 50 4973 textperiodcentered 300 300 974 textplusminus 50 80 4975 textmultiply 100 100 4976 textdivide 50 150 Remaining slots in the source file 4977 4978 4979 ptm 15 8 2 Italics To find default settings for italic is difficult since the character shapes and their behaviour at the beginning or end of line may be wildly different for different fonts Therefore we leave the letters away and only set up th
275. tdblbase 300 300 pad textquotestraightdblbase 400 400 bch cmr pad pmn ugm texttwelveudash 200 200 bch cmr pad pmn textthreequartersemdash 150 150 ugm textthreequartersemdash 200 200 blg textquotesingle 500 600 cmr pmn textquotesingle 300 400 pad textquotesingle 400 500 ptm textquotesingle 500 500 ugm textquotesingle 300 500 bch cmr pmn textasteriskcentered 200 300 blg textasteriskcentered 150 200 pad textasteriskcentered 300 300 ugm textasteriskcentered 100 200 pmn textfractionsolidus 200 200 cmr textoneoldstyle 100 100 3 pmn textoneoldstyle 50 cmr textthreeoldstyle 50 pad pmn textthreeoldstyle 1 50 cmr textfouroldstyle 50 50 pad pmn textfouroldstyle 150 cmr pad pmn textsevenoldstyle 50 80 cmr textlangle 400 cmr textrangle 400 m t bch pmn ptm textminus 200 200 cmr pad ppl textminus 300 300 blg ugm textminus 250 300 bch pad pmn textlbrackdbl 100 blg textlbrackdbl 200 bch pad pmn textrbrackdbl 100 blg textrbrackdbl 200 pmn textasciigrave 200 500 bch blg cmr pad pmn texttildelow 200 250 pmn textasciibreve 300 400 pmn textasciicaron 300 400 pmn textacutedbl 200 300 pmn textg
276. tex MT warn lua spacing edef MT active features MT active features sp pdfadjustinterwordglue ne MT info nl Adjustment of interword spacing enabled MT check active set sp lua Di else let MT spacing relax MT info nl No adjustment of interword spacing fi ifMT kerning lua MTCrequires luatex MT warn luafkerning edef MT active features MT active features kn pdf prependkern ne pdfappendkern ne MT info nl Adjustment of character kerning enabled MT check active set kn lua Gi else let MT kerning relax MT info nl No adjustment of character kerning fi package We issue a warning when letterspacing in DVI mode since it will probably not work We also switch on protrusion if it isn t already to compensate for the letterspacing kerns ifnum pdfoutput lt ne def MT warn tracking DVI MT warningen1 You are using tracking letterspacing in DVI mode MessageBreak This will probably not work unless the post MessageBreak processing program dvips dvipdfm x is MessageBreak able to create the virtual fonts on the fly MT glet MT warn tracking DVI relax th MT set babel context IMPLEMENTATION Package options 131 3945 3946 3947 3948 3949 3950 3951 3952 else def MT warn tracking DVI ifnum pdfprotrudechars lt ne global pdfprotrudechars ne fi MT glet MT warn tracking DVI relax yh ifnum MT letterspace m ne let MT letterspace MT letterspace
277. the Work and in such a case the licensee would be entitled to make reasonable conjectures as to which files comprise the Work
278. tionen kann diese in der Datei updmap cfg durch Einstellungen der pdftexDownloadBase14 in true ge ndert werden Warning pdflatex file ecrm1000 20 Font ecrm1000 20 at 1200 not found Au erdem erfordern pdfTEX Versionen die lter als 1 40 sind Typ 1 Schriften f r die automatische Schriftarten Vergr erung Wenn Sie eine Nachricht wie die obengenannte erhalten haben Sie wahrscheinlich versucht die Schriftartvergr e rung auf eine bitmap oder TrueType Schriftart anzuwenden Bei lteren pdf TEX 10 11 DANKSAGUNGEN 30 Versionen ist dies nur m glich wenn Sie manuell erweiterte Instanzen der Schriften erstellen Font T1 cmr m n 10 ecrm1000 at 10 0pt not loaded Not enough room left Speicherparameter font_mem_size zu klein TeX capacity exceeded sorry maximum internal font number font_max 2000 Speicherparameter font_max zu klein TeX capacity exceeded sorry PDF memory size pdf_mem_size 65536 Speicherparameter pdf_mem_size zu klein bei pdf TEX Versionen die lter sind als 1 30 Bei Anwendung von mikro typografischen Erweiterung eines gro es Dokumentes mit einer Menge von Schriftarten kann die Speicherkapazit t von pdfTEX knapp werden Dies kann durch Setzen der entsprechenden Parameter auf einen gr eren Wert erh ht werden F r web2c basierte Systeme z B TEX Live sollten Sie die Einstellungen in der Datei texmf cnf und f r MiKT Xin der Datei miktex ini f r 2 4 Jah
279. tyle 899 MT error Letterspacing currently doesn t work with luatex Run pdftex or use the soul package instead 1 MT glet lsstyle relax 2 3 3 relax 904 lua 905 package This command may be used like the other text commands The starred version removes kerning on the sides The optional argument changes the letterspacing factor DeclareRobustCommand textls 1907 ifstar let MT ls adjust MTC ls adjust empty MTO textls 1908 let MT 1s adjust MT ls adjust relax MTO textls 1909 1 2 3 else A This is now almost IATEX s DeclareTextFontCommand with the difference that we adjust the outer spacing and kerning also for lsstyle while IATEX s text switches don t bother about italic correction newcommand MT text1s 2 U ifmmode nfss text MT ls set ls 1 lsstyle 2 hmode bgroup 5 MT ls set ls 1 5 lsstyle 2 expandafter 8 egroup 9 fi MT 1ls adjust MT 1ls adjust empty MT 1ls adjust relax MT 1s set ls MT 1s too large MT outer kern MT tr set okern MT tr set okern MT 1s outer k 921 922 923 924 925 926 927 928 929 936 931 932 933 934 935 936 937 938 939 940 967 968 IMPLEMENTATION Font setup 82 Set current letterspacing amount and outer kerning This has to be done inside the same group as the letterspacing command def MT 1s adjust empty let MT 1ls adjust empty def MT 1s adjust r
280. type usepackage activate true nocompatibility microtype usepackage microtype Wenn pdfTEX Fontexpansion und Character Protrusion verwendet k nnen Zeile numbriiche und konsequenterweise auch Seitenumbriiche unterschiedlich ausfallen Wenn das nicht gewiinscht ist weil sie z B ein Buch neu setzen dessen Seite numbr che sich nicht ndern d rfen k nnen Sie den Wert compatibility an die protrusion und oder expansion Optionen h ngen Aus typographischer Sicht jedoch werden die Ergebnisse suboptimal sein weshalb der Wert standardm ig nocompatibility ist Abschlie end k nnen Sie auch den Namen eines Font Sets angeben auf welches Character Protrusion und oder Fontexpansion beschr nkt werden sollten siehe auch Abschnitt 4 f r eine detaillierte Beschreibung Spezifizieren eines Font Sets f r ein Features aktiviert dieses Features implizit mit true false font set name false Es existiert keine Kompatibilit tsebene f r die neuen Erweiterungen Tracking zus tzliches Kerning und Wortzwischenr ume interword spacing Deshalb k nnen sie nur an oder ausgeschaltet werden oder sie k nnen aktiviert werden indem man einen Setnamen an die Option leitet Standardm ig ist keines der Features angeschaltet In Tabelle 1 erhalten Sie einen berblick ber die verf gbaren und standardm ig aktivierten mikro typographischen Features f r die relevanten pdfIEX Versionen und Output Modi Ob Ligaturen deaktiviert
281. typeSetDefault to declare the default font sets 4 e New option config to load a different configuration file 3 5 e New option unit to measure protrusion factors relative to a dimension instead of the character width 5 1 e Renamed commands from MicroType to Microtype e Protrusion settings for AMS math fonts e Protrusion settings for Times in LY1 encoding completed SHORT HISTORY 34 e The allmath font set also includes U encoding e When using the ledmac package character protrusion will work for the first time 1 7 ever pdfIEX gt 1 30 2005 03 23 Possibility to specify ranges of font sizes in the set declarations and protrusion and expansion settings 4 5 New command NLoadMicrotypeFile to load a font configuration file manually 5 7 e Hook Microtype Hook for font package authors 14 4 3 e New option verbose errors to turn all warnings into errors e Warning when running in draft mode 1 6 1 5 2005 01 24 New option factor to influence protrusion resp expansion of all characters of a font or font set 3 2 5 When pdf TEX is too old to expand fonts automatically expansion has to be enabled explicitly automatic expansion will be disabled 3 1 Use e TEX extensions if available 2004 12 15 When output mode is DVI font expansion has to be enabled explicitly automatic expansion will be disabled 3 1 e New option selected to enable selected expansi
282. ulationen vorgenom men werden weshalb sie mit extremer Vorsicht vorgenommen werden m ssen Das Potential eine Zeilebreite mittels Fontexpansion zu justieren sollte bedacht werden wenn ein Paragraph in Zeilen zerbrochen wird um bessere Stopppunkte zu w hlen Th nh 2000 p 323 Diesen beiden Features fehlte seit einiger Zeit eine einfache IXTEX Benutzer schnittstelle Dann wurde das pdfcprot Paket ver ffentlicht welches IATEX Benut zern erm glichte Zeichenvorspr nge zu benutzen ohne sich zu sehr mit den Interna beschaftigen zu m ssen Fontexpansion allerdings war weiterhin schwierig zu utilisieren da es erforderte dass die Fontmetriken f r alle Ebenen der Erweiterung verf gbar waren Deswegen musste jeder der von diesem Feature Gebrauch machen wollte im Vorfeld multiple Ausf hrungen der Schriftarten anfertigen Shellskripte um den Benutzer wenigstens teilweise von dieser Last zu befreien waren verf gbar dennoch blieb es eine l stige Arbeit Dar ber hinaus mussten alle Fonts weiterhin physisch erstellt werden wodurch Kompilierungszeit und Speicherplatz auf der Festplatte verschwendet wurden Im Sommer 2004 implementierte H n Th Th nh eine Besonderheit welche sich als eine bedeutende Erleichterung f r TEX und KTEX Benutzer entpuppte Fontexpansion kann nun automatisch stattfinden Das hei t pdf TEX braucht nicht l nger die Fontmetriken der expandierten Schriftart sondern berechnet diese zur Laufzeit und komp
283. ur parser won t be able to understand I m fed up now so you have to complain if you really really want to be able to write instead of textcopyright thus rendering your configuration files unportable Unicode characters inputenc utf8 utf8x are also supported def MT is active 1 2 Onil ifnum catcode 1 active begingroup set display protect let IeC firstofone let inpenc undef ined MT undef ined char We refrain from checking whether there is a sufficient number of octets def UTFviii defined 1 ifx 1 relax MT undef ined char utf8 else expandafter 1 fi For ucs utf8x Let s call it experimental MT ifdef ined c T PrerenderUnicode PrerenderUnicode tempa let unicode charfilter Cfirstofone edef x endgroup def noexpand tempa tempa Append what we think the translation is to the token register we use for the log MT toks the MT toks space tempa T For characters not defined in the current input encoding IMPLEMENTATION Font setup 91 2284 def MT undefined char 1 undefined in input encoding 1 MT is symbol The symbol commands might expand to funny stuff depending on context Instead of simply expanding command we construct the command encoding command and see whether its meaning is char hex number which is the case for every thing that has been defined with DeclareTextSymbol in the encoding definition files 285 def MT is symb
284. use tempa D Set the inheriting characters def MT set prCheirs 1 lpcode MT font 1 lpcode MT font MT char rpcode MT font 1 rpcode MT font MT char debug MT dinfo nl 2 heir of MT char 1 debug MT dinfo n1 4 lp rp 1 number lpcode MT font MT char debug number rpcode MT font MT char F Preset characters Presetting them relative to their widths is not allowed def MT preset pr expandafter expandafter expandafter MT preset pr csname MT pr c MT pr c name preset endcsname nil T def MT preset pro 1 2 0nil ifx MT pr unit empty MT warn preset towidth pr let MT preset aux MT preset aux factor else def MT preset aux MT preset aux space2 fi MT Cifempty 1 let tempa empty MTOpreset aux 1 Ctempa MT ifempty 2 let tempb empty MT preset aux 2 Ctempb MT set all pr tempa tempb TL Auxiliary macro for presetting Store value 1 in macro 2 def MT preset aux factor 1 2 tempcntb 1 relax MT scale factor edef 2 number tempcntb T def MT preset aux space 1 2 3 7 def tempb 2 MT get space unit 1 MT scale to em edef 3 number tempcntb def MT warn preset towidth 1 MT warningen1 Cannot preset characters relative to their widths MessageBreak for nameuse MT abbr 1 list nameuse MT 1 c name Presetting them MessageBreak relative to 1em instead IMPLEMENTATION Font setup 68 1308 14 2 2 Ex
285. usgabe erstellen Denken Sie daran dass die automatische Schriftartenerweiterung nur als pdfT X im PDF Modus funktioniert Vergr erung ist auch im DVI Modus m glich Dies erfordert dass alle Instanzen der erweiterten Schriftarten auf Ihrem TEX System existieren pdfTeX error font expansion auto expansion is only possible with scalable fonts Die automatische Schriftartvergr erung ist in pdfIEX 1 40 darin verbessert worden dass sie nicht nur mit Typ1 Schriften sondern auch mit TrueType OpenType und sogar auch mit nicht eingebetteten Schriftarten arbeitet Die obige Fehlermeldung bedeutet entweder dass Sie versuchen die Vergr ferung auf eine Bitmap pk Schriftart anzuwenden die noch nicht m glich ist oder dass die Schrift nicht gefunden werden kann da z B deren Eintrage fehlen Warning pdflatex font ptmr8r cannot be expanded not an included Typei font und der PDF Viewer beklagt sich ber eine fehlende Schriftart z B der Adobe Reader auf diese Weise Could not find a font in the Resources dictionary using Helvetica instead Mit pdf TEX Versionen die lter sind als 1 40 kann Schriftartvergr erung nur dann angewandt werden wenn die Schriftart in der PDF Datei eingebettet wird Falls Sie die obengenannte Fehlermeldung erhalten kann Ihr TEX System noch nicht mit PostScript Schriftarten z B Times Helvetica Courier arbeiten da diese in die Basisdatei eingebettet werden m ssen In den meisten TEX Distribu
286. usion 5186 cmr L name cmr it OT1 5187 pmn name pmnj it OT1 5188 cmr load cmr it 5189 pmn load pmnj it 5190 cmr TL encoding 0T1 0T4 5191 pmn TL encoding OT1 5192 cmr family cmr 5193 pmn family pmnj 5194 cmr shape it 5195 pmn shape it sl 5196 5197 cmr AE 100 5198 pmn AE 50 5199 cmr NOE 100 5200 pmn NOE 50 5201 cmr 5202 00 200 150 Gamma 5203 01 150 100 Delta 5204 02 150 50 Theta 5205 03 150 50 Lambda 5206 04 100 100 Xi 5207 05 100 100 Pi 5208 06 100 50 Sigma 5209 07 200 150 Upsilon 5210 og 150 50 Phi 5211 09 150 100 Psi 5212 OA 50 50 Omega 5213 cmr 5214 5215 5216 cmr pmn 5217 SetProtrusion 5218 m t name Ti it default 5219 bch L name 7 bch it T1 5220 blg L name blg it T1 5221 cmr L name cmr it T1 5222 pad name pad it T1 5223 pmn name pmnj it T1 5 pp name ppl it T1 5225 ptm L name ptm it T1 5226 ugm name ugm it T1 5227 m t load 0T1 it 5228 bch load bch it 5229 blg load blg T1 5230 cmr load cmr it 5231 pmn load pmnj it 5232 pad load pad it 5233 ppl load ppl it 5234 ptm load ptm it 5235 ugm load ugm it 5236 m t bch cmr pad pmn ppl encoding T1 LY1i 5237 blg ptm ugm en
287. utelist 2869 2870 2871 2872 2873 2874 2875 2876 SetExpansion 2877 2878 2879 2880 MT SetExpansion MT ex c name2881 MT extra context 2852 2883 2884 2885 2886 2887 2888 2889 2890 MT permutelist IMPLEMENTATION Configuration 106 KV sp def tempa 1 MT gdef n MT babe1 tempa 2 Di Fine tuning The commands SetExpansion and SetProtrusion provide an interface for setting the character protrusion resp expansion factors for a set of fonts This macro accepts three arguments options set of font attributes and list of character protrusion factors A new macro called MT pr c name will be defined to be 3 i e the list of characters not expanded def SetProtrusion MT begin catcodes MT SetProtrusion We want the catcodes to be correct even if this is called in the preamble newcommand MT SetProtrusion 3 UI let MT extra context Cempty Parse the optional first argument We first have to know the name before we can deal with the extra options MT set named keys MT pr c 1 debug MT dinfo i creating protrusion list MT pr c name def MT permutelist pr c setkeys MT cfg 2 We have parsed the second argument and can now define macros for all permuta tions of the font attributes to point to MT pr c name MT permute which we can now define to be 3 Here as elsewhere we have to make the definitions global since they wil
288. uter spacing settings don t exist they will be inherited from the inner spacing settings def MT tr set space 1 2 3 4 MT ifempty 2 MT ifempty 1 edef MT amp temp MTCtemp 4 the fontdimen 3 MT lsfont T MT tr set space 0 1 3 1000 edef MT temp MT temp 4 the tempdima XT ontdimen 3 MT l1sfont tempdima th T MT tr set space 0 2 3 2000 edef MT temp MT temp 4 the tempdima IMPLEMENTATION Font setup 79 1791 MT ifempty 1 relax 1792 MTO tr set space O 1 3 1000 1793 fontdimen 3 MT l1sfont tempdima 1794 th 17905 1796 MT tr set space If the value is followed by an asterisk the fontdimen will be scaled by the respective amount otherwise the value denotes the desired dimension in the respective unit 1797 def MT tr set space O 1 2 3 1798 MT test ast 1 nil 7 1799 MT ifdefined cQTF MTOtr unit 1800 edef tempb 1 MT scale to em 1801 tempcntb 1 relax 1802 tempdima dimexpr dimexpr tempcntb sp MT dimen six 1000 relax 1803 fontdimen 2 MT lsfont relax For fontdimen 2 we also have to subtract the kerning that letterspacing adds to the sides of the characters only half if it s for outer spacing 804 ifnum 2 tw 805 advance tempdima dimexpr MT letterspace sp MT dimen six 3 relax 806 fi 807 tempdima dimexpr fontdimen 2 MT Clsfont tempdima relax 88 H 809 MT ifempty tempa let tempa MT letterspace relax 810 tempd
289. wenden Sie keine Schriftartvergr erung f r Web Documente mit lteren pdfTgX Versionen Mit pdf TEX Versionen die lter als die 1 40 Version sind wird jede vergr erte Kopie der Schriftart in der PDF Datei eingebettet folglich kann die Dateigr e stark zunehmen abh ngig von Vergr erungsgrenze und schritt Deshalb f r die Zuvorkommenheit und f r Sparsamkeit der Bandbreite aktivieren Sie nicht die Schriftartenvergr erung beim Erstellen von Datein die elektronisch verteilt werden Mit pdfTEX 1 40 welches eine andere Technik der Vergr erung nutzt kann die Erh hung der Dateigr e vernachl ssigt werden M glicherweise m chten sie Hervorhebungen im Inhaltsverzeichnis deaktivieren In ungl cklichen F llen k nnte die aktivierte Hervorhebung die L ngenlinie im im Inhaltsverzeichnis und hnliche Listen auf eine Weise ver ndern so dass ein Excess Leader Punkte einf gef hrt werden muss Die L sung ist Hervorhebungen vor bergehend im Inhaltsverzeichnis zu deaktivieren microtypesetup protrusion false tableofcontents microtypesetup protrusion true M glicherweise m chten Sie die Hervorhebungen in der verbatim Umgebung deak tivieren Wie Sie bereits wissen wird microtype standartm ig die Zeichenhervor hebung in allen Schriftarten aktiviert die im Schriftartenset alltext enthalten HINWEISE UND WARNUNGEN 28 sind Das schlie t auch die Schreibmaschinenschrift mit ein Obwohl es wirklich Sin
290. werden sollten kann nicht mittels einer Option kontrolliert werden sondern per NDisableLigatures Kommando welches in Abschnitt 8 erkl rt wird Zeichenvorspr nge integer 1000 unit 3 3 auto OPTIONEN Fontexpansion 8 Tabelle 1 Verf gbarkeit mikro typographischer Features TEX engine Mikrotypographische Features Engine Version Output Protrusion Expansion auto Kerning Spacing Tracking pdfIEX lt 0 14f DVI PDF gt 0 14f DVI PDF X 21 20 DVI E e e e e PDF e e e 21 40 DVI E e E E e PDF X 5 Ke lualgEX gt 0 25 DVI x e e e e PDF e e e aktiviert X nicht aktiviert nicht verf gbar a gt 1 40 4 empfohlen Benutzen Sie diese Option um global einzustellen um welchen Betrag die Zeichen hervorragen sollen Wahrend ein Wert von 1000 bedeutet dass der volle Vorsprung wie in der Konfiguration siehe Abschnitt 5 1 spezifiziert benutzt wird bedeutet ein Wert von 500 entsprechend die Halbierung der Protrusion Dies kann n tzlich sein falls Sie grunds tzlich zufrieden mit den Einstellungen sind aber bevorzugen wenn die Zeichenhervorragungen weniger oder mehr zu sehen sind z B wenn sie so stolz darauf sind dieses Feature nutzen zu k nnen dass sie es jedem zeigen wollen oder um eine Motivation zu nennen die in Einverst ndnis mit typographischer Korrektheit steht falls sie eine gro e Schriftart nutzen die gem igtere Vorspr nge
291. x 3075 3076 MT warn nodim 3077 def MT warn nodim 1 7 3078 MT warning tempa is not a dimension MessageBreak 3079 Ignoring it and setting values relative to MessageBreak 1 3080 IMPLEMENTATION Configuration 111 Protrusion codes may be relative to character width or to any dimension 3081 define key MTCpr c unit character 3082 MT glet nc MT pr c MT curr set name Cunit Cempty 3083 def tempa 1 3084 MT ifstreq tempa character relax Test whether it s a dimension but do not translate it into its final form here since it may be font specific 3085 MT ifdimen tempa 3086 MT glet nc MT pr c MT curr set name Gunit tempa 3087 MT warn nodim character widths 3088 X 3089 Tracking may only be relative to a dimension 3090 NdefineOkey MTOtrOc unit 1em 3001 MT glet nc MT tr c MT curr set name Cunit Cempty 3092 def tempa 1 3093 MT ifdimen tempa 3094 MT glet nc MTO tr c MT curr set name Gunit tempa 3095 MT warn nodimt 1em 3096 MT gdef n MTCtr c MTCcurr set name Qunit iem 3097 Spacing and kerning codes may additionally be relative to space dimensions 3098 MT map clistCn sp kn 3099 define key MTO 1 c unit space 0 MT glet nc MTO 1 c MT curr set name unit empty 11 def tempa 1 2 MT ifstreq tempa character relax y 3 MT glet nc MT 1 c MT curr set name unit m ne 4 MT ifstreq tempa space
292. xpandiert werden kann Das standardm ige Stretch Limit ist 20 das Shrink Limit ist standardm ig gleich dem Stretch Limit integer SI Fonts werden nicht um beliebige Mengen expandiert sondern nur um gewisse bestimmte Schritte innerhalb der Expansionslimits Mit aktuellen Version von pdfTEX 1 40 oder neuer ist diese Option standardm ig auf 1 gesetzt damit pdfIEX die maximale Anzahl an Instanzen der jeweiligen Fonts ausprobieren kann und somit den bestm glichen Output garantiert ltere pdf TEX Versionen jedoch mussten jede einzelne Fontinstanz in der PDF Datei einf gen wodurch die Dateigr e teils dramatisch erh ht wurde Deswegen sollten Sie eine pre 1 40 pdfIEX Version nutzen ist step standardm ig auf ein F nftel des kleineren Wertes von stretch und shrink gesetzt true false false Wenn Fontexpansion angewendet wird ist es m glich die Expansion einiger sensibler Zeichen welche schnell deformiert erscheinen k nnen z B das O im Kontrast zum T zu begrenzen Das nennt sich selected expansion und seine Benutzung erlaubt die Stretch und Shrink Limits zu erh hen auf z B 30 anstelle von 20 allerdings ist der Zuwachs limitiert da gleichzeitig die durchschnittliche Stretch Varianz verringert wird Deswegen ist diese Option standardm ig auf false gesetzt sodass alle Zeichen um denselben Betrag expandiert werden Siehe Abschnitt 5 2 f r eine detailliertere Beschreibung Tracking Letterspacing i

Download Pdf Manuals

image

Related Search

Related Contents

欧米・アジアにおける包装機械技術に係わる 調査研究報告書  Guía de inicio rápido inalámbrico  Sony PCG-GRX690K User's Guide  UTAdvanced UT55A/UT52A Digital Indicating  FD-T780 / FD-T781  AirLive AC.TOP Manual  Peerless CL-SCC400  Samsung Genoa      

Copyright © All rights reserved.
Failed to retrieve file